เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเดจเตเดฑเต† เดตเตผเดฆเตเดงเดฟเดšเตเดšเตเดตเดฐเตเดจเตเดจ เดœเดจเดชเตเดฐเต€เดคเดฟเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต

เดนเต‡ เดนเดฌเตผ!

เดตเต‡เดจเตฝเด•เตเด•เดพเดฒเดคเตเดคเดฟเดจเตเดฑเต† เด…เดตเดธเดพเดจเดคเตเดคเดฟเตฝ, เดžเด™เตเด™เตพ เดตเดฟเดทเดฏเดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดคเตเดŸเดฐเตเดฎเต†เดจเตเดจเต เดจเดฟเด™เตเด™เดณเต† เด“เตผเดฎเตเดฎเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต เด•เตเดฌเต‡เตผเดจเต†เดฑเตเดฑเต เดœเต‚เดฃเดฟเดจเตเดฑเต† เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ เดˆ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† เด…เดตเดธเตเดฅ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเดจเตเดจ เดธเตเดฑเตเดฑเดพเด•เตเด•เตเด“เดตเตผเดซเตเดฒเต‹เดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดฒเต‡เด–เดจเด‚ เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต.

เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเดจเตเดฑเต† เดตเตผเดฆเตเดงเดฟเดšเตเดšเตเดตเดฐเตเดจเตเดจ เดœเดจเดชเตเดฐเต€เดคเดฟเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต

เดธเดจเตเดคเต‹เดทเด•เดฐเดฎเดพเดฏ เดตเดพเดฏเดจ!

เดˆ เดฒเต‡เด–เดจเด‚ เดŽเดดเตเดคเตเดฎเตเดชเต‹เตพ, เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเดจเตเดฑเต† เดชเตเดฐเดพเดฏเด‚ เดเด•เดฆเต‡เดถเด‚. เด†เดฑเต เดตเดฏเดธเตเดธเต, เด•เดดเดฟเดžเตเดž เดฐเดฃเตเดŸเต เดตเตผเดทเดฎเดพเดฏเดฟ เด…เดคเดฟเดจเตเดฑเต† เดœเดจเดชเตเดฐเต€เดคเดฟ เดตเดณเดฐเต†เดฏเดงเดฟเด•เด‚ เดตเดณเตผเดจเตเดจเต, เด…เดคเต เดธเตเดฅเดฟเดฐเดฎเดพเดฏเดฟ เดฑเดพเด™เตเด•เต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต เดเดฑเตเดฑเดตเตเด‚ เดชเตเดฐเดฟเดฏเดชเตเดชเต†เดŸเตเดŸ เดชเตเดฒเดพเดฑเตเดฑเตเดซเต‹เดฎเตเด•เตพ. เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดˆ เดตเตผเดทเด‚ เดฎเต‚เดจเตเดจเดพเด‚ เดธเตเดฅเดพเดจเดคเตเดคเดพเดฃเต. เดฑเต€เด•เตเดฏเดพเดชเตเดชเต เดšเต†เดฏเตเดฏเดพเตป: เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตˆเดธเตเดกเต เดตเตผเด•เตเด•เตเดฒเต‹เดกเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเด‚ เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เดพเดจเตเด‚ เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตเดค เด’เดฐเต เดชเตเดฒเดพเดฑเตเดฑเตเดซเต‹เดฎเดพเดฃเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต.

เดฒเดฟเดจเด•เตเดธเดฟเตฝ เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เตพ เดตเต‡เตผเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดฐเต‚เดชเด•เดฒเตเดชเดจ เดŽเดจเตเดจ เดจเดฟเดฒเดฏเดฟเดฒเดพเดฃเต เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ เด†เดฐเด‚เดญเดฟเดšเตเดšเดคเต; 2007 เดฎเตเดคเตฝ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต cgroups, เด•เต‚เดŸเดพเดคเต† 2002 เดฎเตเดคเตฝ - เดจเต†เดฏเดฟเด‚เดธเตเดชเต‡เดธเตเด•เตพ. 2008 เด†เดฏเดชเตเดชเต‹เดดเต‡เด•เตเด•เตเด‚ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ เด•เต‚เดŸเตเดคเตฝ เดฎเดฟเด•เดšเตเดš เดฐเต€เดคเดฟเดฏเดฟเตฝ เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตโ€Œเดคเต LXC, เด•เต‚เดŸเดพเดคเต† เด—เต‚เด—เดฟเตพ เดธเตเดตเดจเตเดคเด‚ เด†เดจเตเดคเดฐเดฟเด• เด•เต‹เตผเดชเตเดชเดฑเต‡เดฑเตเดฑเต เดธเด‚เดตเดฟเดงเดพเดจเด‚ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเดšเตเดšเต†เดŸเตเดคเตเดคเต เดฌเต‹เตผเด—เต, "เดŽเดฒเตเดฒเดพ เดœเต‹เดฒเดฟเด•เดณเตเด‚ เดชเดพเดคเตเดฐเด™เตเด™เดณเดฟเดฒเดพเดฃเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต." เด‡เดตเดฟเดŸเต† เดจเดฟเดจเตเดจเต เดžเด™เตเด™เตพ เดกเต‹เด•เตเด•เดฑเดฟเดจเตเดฑเต† เด†เดฆเตเดฏ เดฑเดฟเดฒเต€เดธเต เดจเดŸเดจเตเดจ 2013-เดฒเต‡เด•เตเด•เต เดซเดพเดธเตเดฑเตเดฑเต เดซเต‹เตผเดตเต‡เดกเต เดšเต†เดฏเตเดคเต, เด’เดŸเตเดตเดฟเตฝ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ เด’เดฐเต เดœเดจเด•เต€เดฏ เดชเดฐเดฟเดนเดพเดฐเดฎเดพเดฏเดฟ เดฎเดพเดฑเดฟ. เด…เด•เตเด•เดพเดฒเดคเตเดคเต, เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เด“เตผเด•เตเด•เดธเตเดŸเตเดฐเต‡เดทเดจเตเดฑเต† เดชเตเดฐเดงเดพเดจ เด‰เดชเด•เดฐเดฃเด‚ เดฎเต†เดธเต‹เดธเต, เด…เดฆเตเดฆเต‡เดนเด‚ เดตเดฒเดฟเดฏ เดœเดจเดชเตเดฐเต€เดคเดฟ เดจเต‡เดŸเดฟเดฏเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเดฒเตเด‚. เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เด†เดฆเตเดฏเดฎเดพเดฏเดฟ 2015 เตฝ เดชเตเดฑเดคเตเดคเดฟเดฑเด™เตเด™เดฟ, เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ เดˆ เด‰เดชเด•เดฐเดฃเด‚ เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เด“เตผเด•เตเด•เดธเตเดŸเตเดฐเต‡เดทเตป เดฎเต‡เด–เดฒเดฏเดฟเดฒเต† เดฏเดฅเดพเตผเดคเตเดฅ เดจเดฟเดฒเดตเดพเดฐเดฎเดพเดฏเดฟ เดฎเดพเดฑเดฟ.

เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด‡เดคเตเดฐเดฏเดงเดฟเด•เด‚ เดœเดจเดชเตเดฐเดฟเดฏเดฎเดพเดฏเดคเต†เดจเตเดจเต เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเตป, เด•เตเดฑเดšเตเดšเต เดšเต‹เดฆเตเดฏเด™เตเด™เตพเด•เตเด•เต เด‰เดคเตเดคเดฐเด‚ เดจเตฝเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เดพเด‚. เดชเตเดฐเตŠเดกเด•เตเดทเดจเดฟเดฒเต‡เด•เตเด•เต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดŽเด™เตเด™เดจเต† เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเต เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผเด•เตเด•เต เด…เดตเดธเดพเดจเดฎเดพเดฏเดฟ เด…เด‚เด—เต€เด•เดฐเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดžเตเดžเดคเต เดŽเดชเตเดชเต‹เดดเดพเดฃเต? เดฌเต‹เด•เตโ€Œเดธเดฟเดจเต เดชเตเดฑเดคเตเดคเต เดจเตฝเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเตฝ เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดŽเดคเตเดฐ เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเดฐเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เดฑเดฟเดฏเดพเด‚? เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เดพเดคเตเดค เดŽเดคเตเดฐ เด•เตเดฒเต—เดกเต เด…เดกเตเดฎเดฟเดจเดฟเดธเตเดŸเตเดฐเต‡เดฑเตเดฑเตผเดฎเดพเตผ เด‡เดจเตเดจเต เด‰เดฃเตเดŸเต? เดˆ เดšเต‹เดฆเตเดฏเด™เตเด™เตพเด•เตเด•เตเดณเตเดณ เด‰เดคเตเดคเดฐเด™เตเด™เตพ เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดจเดฎเตเดฎเตพ เดจเต‹เด•เตเด•เตเด‚.

YAML เด†เดฏเดฟ เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเตผ

เดชเดชเตเดชเดฑเตเดฑเต, เดทเต†เดซเต เดŽเดจเตเดจเดฟเดตเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเดฟเดฏ เดฒเต‹เด•เดคเตเดคเต, เดเดฑเตเดฑเดตเตเด‚ เดตเดฒเดฟเดฏ เดฎเดพเดฑเตเดฑเด™เตเด™เดณเดฟเดฒเตŠเดจเตเดจเต "เด•เต‹เดกเดพเดฏเดฟ เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเตผ" เดŽเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต "เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเตผ เดกเดพเดฑเตเดฑ" เดŽเดจเตเดจเดคเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดจเต€เด•เตเด•เดฎเดพเดฃเต-เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเต, YAML เดชเต‹เดฒเต†. เดชเต‹เดกเตเด•เตพ, เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเด•เตพ, เดตเดฟเดจเตเดฏเดธเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดธเดจเตเดฆเตผเดญเด™เตเด™เตพ, เดตเต‹เดณเตเดฏเด™เตเด™เตพ เดฎเตเดคเดฒเดพเดฏเดต เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเดฒเต† เดŽเดฒเตเดฒเดพ เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเตเด‚ เด’เดฐเต YAML เดซเดฏเดฒเดฟเตฝ เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดตเดฟเดตเดฐเดฟเด•เตเด•เดพเดจเดพเด•เตเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต:

apiVersion: v1
kind: Pod
metadata:
  name: site
  labels:
    app: web
spec:
  containers:
    - name: front-end
      image: nginx
      ports:
        - containerPort: 80

เดชเตˆเดคเตเดคเตบ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดœเดพเดตเดพเดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเต‹เดฒเตเดณเตเดณ เดญเดพเดทเด•เดณเดฟเตฝ เด•เต‹เดกเต เดŽเดดเตเดคเดพเดคเต† เดคเดจเตเดจเต† DevOps เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ SRE เดชเตเดฐเตŠเดซเดทเดฃเดฒเตเด•เตพเด•เตเด•เต เด…เดตเดฐเตเดŸเต† เดœเต‹เดฒเดฟเดญเดพเดฐเด‚ เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเดฟ เดชเตเดฐเด•เดŸเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต เดˆ เด•เดพเดดเตเดš เดŽเดณเตเดชเตเดชเดฎเดพเด•เตเด•เตเดจเตเดจเต.

เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเตผ เดกเดพเดฑเตเดฑเดฏเดพเดฏเดฟ เดธเด‚เด˜เดŸเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฑเต† เดฎเดฑเตเดฑเต เด—เตเดฃเด™เตเด™เดณเดฟเตฝ เด‡เดต เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต:

  • GitOps เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ Git เด“เดชเตเดชเดฑเต‡เดทเตปเดธเต เดชเดคเดฟเดชเตเดชเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด‚. เดŽเดฒเตเดฒเดพ Kubernetes YAML เดซเดฏเดฒเตเด•เดณเตเด‚ git เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเด•เดณเดฟเตฝ เดธเต‚เด•เตเดทเดฟเด•เตเด•เดพเตป เดˆ เดธเดฎเต€เดชเดจเด‚ เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ เด’เดฐเต เดฎเดพเดฑเตเดฑเด‚ เดŽเดชเตเดชเต‹เตพ เดตเดฐเตเดคเตเดคเดฟ, เด†เดฐเดพเดฃเต เด…เดคเต เดตเดฐเตเดคเตเดคเดฟเดฏเดคเต, เดŽเดจเตเดคเดพเดฃเต เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดฎเดพเดฑเดฟเดฏเดคเต เดŽเดจเตเดจเดฟเดต เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดŸเตเดฐเดพเด•เตเด•เต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚. เด‡เดคเต เดธเตเดฅเดพเดชเดจเดคเตเดคเดฟเดฒเตเดŸเดจเต€เดณเดฎเตเดณเตเดณ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเดŸเต† เดธเตเดคเดพเดฐเตเดฏเดค เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดตเตเดฏเด•เตเดคเดค เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดฟ เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดค เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเตเด‚ เดœเต€เดตเดจเด•เตเด•เดพเตผ เด…เดตเตผเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดตเดฟเดญเดตเด™เตเด™เตพ เดคเต‡เดŸเต‡เดฃเตเดŸ เด‡เดŸเด™เตเด™เดณเดฟเตฝ. เด…เดคเต‡ เดธเดฎเดฏเด‚, เด’เดฐเต เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดฒเดฏเดฟเดชเตเดชเดฟเดšเตเดšเตเด•เตŠเดฃเตเดŸเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเตเดธเต เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเดฟเตฝ เดธเตเดตเดฏเดฎเต‡เดต เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดตเดฐเตเดคเตเดคเตเดจเตเดจเดคเต เดŽเดณเตเดชเตเดชเดฎเดพเด•เตเด‚.
  • เดธเตเด•เต‡เดฒเดฌเดฟเดณเดฟเดฑเตเดฑเดฟ. เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ YAML เดŽเดจเตเดจเต เดจเดฟเตผเดตเดšเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด•เตเดฒเดธเตเดฑเตเดฑเตผ เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผเดฎเดพเตผเด•เตเด•เต เด’เดฐเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดฑเดฟเดธเต‹เดดเตโ€Œเดธเดฟเตฝ เด’เดจเตเดจเต‹ เดฐเดฃเตเดŸเต‹ เดจเดฎเตเดชเดฑเตเด•เตพ เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเต เดตเดณเดฐเต† เดŽเดณเตเดชเตเดชเดฎเดพเดฏเดฟเดคเตเดคเต€เดฐเตเดจเตเดจเต, เด…เดคเตเดตเดดเดฟ เด…เดคเต เดธเตเด•เต†เดฏเดฟเตฝ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดฐเต€เดคเดฟ เดฎเดพเดฑเตเดฑเตเดจเตเดจเต. เดชเต‹เดกเตเด•เดณเตเดŸเต† เดคเดฟเดฐเดถเตเดšเต€เดจเดฎเดพเดฏ เด“เดŸเตเดŸเต‹เดธเตโ€Œเด•เต‡เดฒเดฟเด‚เด—เดฟเดจเตเดณเตเดณ เด’เดฐเต เดธเด‚เดตเดฟเดงเดพเดจเด‚ เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดจเตฝเด•เตเดจเตเดจเต, เดคเดพเดดเตเดจเตเดจเดคเตเด‚ เด‰เดฏเตผเดจเตเดจเดคเตเดฎเดพเดฏ เดŸเตเดฐเดพเดซเดฟเด•เต เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดตเดฟเดจเตเดฏเดพเดธ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเตฝ เดเดฑเตเดฑเดตเตเด‚ เด•เตเดฑเดžเตเดžเดคเตเด‚ เด•เต‚เดŸเดฟเดฏเดคเตเดฎเดพเดฏ เดชเต‹เดกเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดŽเดจเตเดคเดพเดฃเต†เดจเตเดจเต เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏเดฟ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เดพเตป เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดŸเตเดฐเดพเดซเดฟเด•เตเด•เดฟเดฒเต† เดชเต†เดŸเตเดŸเต†เดจเตเดจเตเดณเตเดณ เดตเตผเดฆเตเดงเดจเดตเต เด•เดพเดฐเดฃเด‚ เด…เดงเดฟเด• เดถเต‡เดทเดฟ เด†เดตเดถเตเดฏเดฎเดพเดฏ เด’เดฐเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดจเดฟเด™เตเด™เตพ เดตเดฟเดจเตเดฏเดธเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, maxReplicas 10 เตฝ เดจเดฟเดจเตเดจเต 20 เด†เดฏเดฟ เดฎเดพเดฑเตเดฑเดพเด‚:

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: myapp
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myapp-deployment
  minReplicas: 1
  maxReplicas: 20
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50

  • เดธเตเดฐเด•เตเดทเดฏเตเด‚ เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเตเด‚. เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเตฝ เด•เดพเดฐเตเดฏเด™เตเด™เตพ เดŽเด™เตเด™เดจเต† เดตเดฟเดจเตเดฏเดธเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เดตเดฟเดฒเดฏเดฟเดฐเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต YAML เดฎเดฟเด•เดšเตเดšเดคเดพเดฃเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดœเต‹เดฒเดฟเดญเดพเดฐเด‚ เด’เดฐเต เดจเต‹เตบ-เด…เดกเตเดฎเดฟเตป เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต‹ เดŽเดจเตเดจเดคเต เด’เดฐเต เดชเตเดฐเดงเดพเดจ เดธเตเดฐเด•เตเดทเดพ เด†เดถเด™เตเด•เดฏเดพเดฃเต. เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดžเด™เตเด™เตพเด•เตเด•เต เด…เดคเตเดคเดฐเด‚ เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟ เดตเดจเตเดจเต‡เด•เตเด•เดพเด‚ เดเดฑเตเดฑเตเดฎเตเดŸเตเดŸเตฝ, YAML/JSON เดตเดพเดฒเดฟเดกเต‡เดฑเตเดฑเตผ, เดชเตเดฒเดธเต เดชเต‹เดณเดฟเดธเดฟ เดเดœเดจเตเดฑเต เดคเตเดฑเด•เตเด•เตเด•, เดธเดจเตเดฆเตผเดญเด‚ เด‰เดฑเดชเตเดชเดพเด•เตเด•เดพเตป เด’เดฐเต เดชเต‹เดณเดฟเดธเดฟ เดตเดพเดฒเดฟเดกเต‡เดฑเตเดฑเตผ เดธเตเดฐเด•เตเดทเดพ เดธเดจเตเดฆเตผเดญเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดœเต‹เดฒเดฟเดญเดพเดฐเด‚ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดจเต† เด…เดกเตเดฎเดฟเดจเดฟเดธเตเดŸเตเดฐเต‡เดฑเตเดฑเตผ เดชเตเดฐเดคเตเดฏเต‡เด•เดพเดตเด•เดพเดถเด™เตเด™เดณเต‹เดŸเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ. เด‡เดคเต เด†เดตเดถเตเดฏเดฎเต†เด™เตเด•เดฟเตฝ, เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เต เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดจเดฏเด‚ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เดพเดตเตเดจเตเดจเดคเดพเดฃเต เดฑเต†เด—เต‹, เด‡เดคเตเดชเต‡เดพเดฒเต†:

package main

deny[msg] {
  input.kind = "Deployment"
  not input.spec.template.spec.securityContext.runAsNonRoot = true
  msg = "Containers must not run as root"
}

  • เด’เดฐเต เด•เตเดฒเต—เดกเต เดฆเดพเดคเดพเดตเตเดฎเดพเดฏเตเดณเตเดณ เดธเด‚เดฏเต‹เดœเดจเดคเตเดคเดฟเดจเตเดณเตเดณ เด“เดชเตเดทเดจเตเด•เตพ. เด‡เดจเตเดจเดคเตเดคเต† เดนเตˆ เดŸเต†เด•เตโ€Œเดจเต‹เดณเดœเดฟเดฏเดฟเดฒเต† เดเดฑเตเดฑเดตเตเด‚ เดถเตเดฐเดฆเตเดงเต‡เดฏเดฎเดพเดฏ เดชเตเดฐเดตเดฃเดคเด•เดณเดฟเดฒเตŠเดจเตเดจเต เดชเตŠเดคเต เด•เตเดฒเต—เดกเต เดฆเดพเดคเดพเด•เตเด•เดณเดฟเตฝ เดœเต‹เดฒเดฟเดญเดพเดฐเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต. เด˜เดŸเด•เด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เตเดฒเต—เดกเต-เดฆเดพเดคเดพเดตเต เดเดคเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเต†เดฏเตเด‚ เด…เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด•เตเดฒเต—เดกเต เดชเตเดฐเตŠเดตเตˆเดกเดฑเตเดฎเดพเดฏเดฟ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป Kubernetes เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด’เดฐเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต AWS-เตฝ Kubernetes-เตฝ เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด’เดฐเต เดธเต‡เดตเดจเดคเตเดคเดฟเดฒเต‚เดŸเต† เด† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดตเต†เดณเดฟเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ, เด•เตเดฒเต—เดกเต เดฆเดพเดคเดพเดตเต เดธเต‡เดตเดจเด‚ เดธเตเดตเดฏเดฎเต‡เดต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดธเดนเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเต LoadBalancerเด‡เดคเต เดธเตเดตเดฏเดฎเต‡เดต เดฒเต‹เดกเต เดฌเดพเดฒเตปเดธเตผ เดจเตฝเด•เตเด‚ เด†เดฎเดธเต‹เตบ เด‡เดฒเดพเดธเตเดฑเตเดฑเดฟเด•เต เดฒเต‹เดกเต เดฌเดพเดฒเตปเดธเตผเด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเต‹เดกเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดŸเตเดฐเดพเดซเดฟเด•เต เดฑเต€เดกเดฏเดฑเด•เตเดŸเต เดšเต†เดฏเตเดฏเดพเตป.

เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด•เตเดทเดฎเดค

เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดตเดณเดฐเต† เดตเดฟเดชเตเดฒเต€เด•เดฐเดฟเด•เตเด•เดพเดตเตเดจเตเดจเดคเตเด‚ เดกเดตเดฒเดชเตเดชเตผเดฎเดพเตผ เด‡เดคเต เด‡เดทเตเดŸเดชเตเดชเต†เดŸเตเดจเตเดจเดคเตเดฎเดพเดฃเต. เดชเต‹เดกเตเด•เตพ, เดตเดฟเดจเตเดฏเดพเดธเด™เตเด™เตพ, เดŽเดจเตเดจเดฟเด™เตเด™เดจเต† เดฒเดญเตเดฏเดฎเดพเดฏ เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเตเดฃเตเดŸเต. StatefulSets, เดฐเดนเดธเตเดฏเด™เตเด™เตพ, ConfigMaps, เดคเตเดŸเด™เตเด™เดฟเดฏเดต. เดถเดฐเดฟเดฏเดพเดฃเต, เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เตเด‚ เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผเด•เตเด•เตเด‚ เดซเต‹เดฎเดฟเตฝ เดฎเดฑเตเดฑเต เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เดšเต‡เตผเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค เด‰เดฑเดตเดฟเดŸ เดจเดฟเตผเดตเดšเดจเด™เตเด™เตพ.

เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดฑเดฟเดธเต‹เดดเตเดธเต เดจเดฟเตผเดตเดšเดฟเด•เตเด•เดฃเดฎเต†เด™เตเด•เดฟเตฝ CronTab, เด…เดชเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดคเตเดชเต‹เดฒเตŠเดจเตเดจเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚:

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: crontabs.my.org
spec:
  group: my.org
  versions:
    - name: v1
      served: true
      storage: true
      Schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                cronSpec:
                  type: string
                  pattern: '^(d+|*)(/d+)?(s+(d+|*)(/d+)?){4}$'
                replicas:
                  type: integer
                  minimum: 1
                  maximum: 10
  scope: Namespaced
  names:
    plural: crontabs
    singular: crontab
    kind: CronTab
    shortNames:
    - ct

เดชเดฟเดจเตเดจเต€เดŸเต เดจเดฎเตเด•เตเด•เต เด‡เดคเตเดชเต‹เดฒเตเดณเตเดณ เด’เดฐเต CronTab เดฑเดฟเดธเต‹เดดเตเดธเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚:

apiVersion: "my.org/v1"
kind: CronTab
metadata:
  name: my-cron-object
spec:
  cronSpec: "* * * * */5"
  image: my-cron-image
  replicas: 5

เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเดฒเต† เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเดคเตเดคเดฟเดจเตเดณเตเดณ เดฎเดฑเตเดฑเตŠเดฐเต เด“เดชเตเดทเตป, เดกเดตเดฒเดชเตเดชเตผเด•เตเด•เต เดธเตเดตเดจเตเดคเด‚ เดชเตเดฐเดธเตเดคเดพเดตเดจเด•เตพ เดŽเดดเตเดคเดพเตป เด•เดดเดฟเดฏเตเด‚ เดŽเดจเตเดจเดคเดพเดฃเต. เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เด‡เดคเต เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต† เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดพเดฃเตเดจเดฟเดฏเดจเตเดคเตเดฐเดฃ เดธเตผเด•เตเดฏเต‚เดŸเตเดŸเต" เด’เดฐเต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฑเตเดŸเต† เดธเดนเดพเดฏเดคเตเดคเต‹เดŸเต†, เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต API-เดฏเตเดฎเดพเดฏเดฟ เดตเดฟเดตเดฐเด™เตเด™เตพ เด•เตˆเดฎเดพเดฑเดฟเด•เตเด•เตŠเดฃเตเดŸเต CRD-เด•เดณเตเดŸเต† (เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค เด‰เดฑเดตเดฟเดŸ เดจเดฟเตผเดตเดšเดจเด™เตเด™เตพ) เดฎเดพเดจเต‡เดœเตโ€Œเดฎเต†เดจเตเดฑเต เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚.

เดกเดตเดฒเดชเตเดชเตผเดฎเดพเตผเด•เตเด•เต เด…เดตเดฐเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผเดฎเดพเดฐเต† เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเต เดŽเดณเตเดชเตเดชเดฎเดพเด•เตเด•เตเดจเตเดจ เดจเดฟเดฐเดตเดงเดฟ เดŸเต‚เดณเตเด•เตพ เด•เดฎเตเดฎเตเดฏเต‚เดฃเดฟเดฑเตเดฑเดฟเดฏเดฟเดฒเตเดฃเตเดŸเต. เด…เดตเตผเด•เตเด•เดฟเดŸเดฏเดฟเตฝ - เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เดซเตเดฐเต†เดฏเดฟเด‚เดตเตผเด•เตเด•เต เด…เดตเดจเตเดฑเต† เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เดŽเดธเต.เดกเดฟ.เด•เต†. เด’เดฐเต เดกเดตเดฒเดชเตเดชเตผเด•เตเด•เต เดชเต†เดŸเตเดŸเต†เดจเตเดจเต เด’เดฐเต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฑเต† เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เด’เดฐเต เด…เดŸเดฟเดคเตเดคเดฑ เดˆ SDK เดจเตฝเด•เตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดฎเดพเตปเดกเต เดฒเตˆเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เด‡เดคเตเดชเต‹เดฒเตเดณเตเดณ เด’เดจเตเดจเต เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดฎเต†เดจเตเดจเต เดชเดฑเดฏเดพเด‚:

$ operator-sdk new my-operator --repo github.com/myuser/my-operator

YAML เดซเดฏเดฒเตเด•เดณเตเด‚ Golang เด•เต‹เดกเตเด‚ เด‰เตพเดชเตเดชเต†เดŸเต† เดจเดฟเด™เตเด™เดณเตเดŸเต† เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผเด•เตเด•เตเดณเตเดณ เดŽเดฒเตเดฒเดพ เดฌเต‹เดฏเดฟเดฒเตผ เดชเตเดฒเต‡เดฑเตเดฑเต เด•เต‹เดกเตเด‚ เด‡เดคเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต:

.
|____cmd
| |____manager
| | |____main.go
|____go.mod
|____deploy
| |____role.yaml
| |____role_binding.yaml
| |____service_account.yaml
| |____operator.yaml
|____tools.go
|____go.sum
|____.gitignore
|____version
| |____version.go
|____build
| |____bin
| | |____user_setup
| | |____entrypoint
| |____Dockerfile
|____pkg
| |____apis
| | |____apis.go
| |____controller
| | |____controller.go

เดคเตเดŸเตผเดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดพเดฏ API-เด•เดณเตเด‚ เด•เตบเดŸเตเดฐเต‹เดณเดฑเตเด‚ เด‡เดคเตเดชเต‹เดฒเต† เดšเต‡เตผเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚:

$ operator-sdk add api --api-version=myapp.com/v1alpha1 --kind=MyAppService

$ operator-sdk add controller --api-version=myapp.com/v1alpha1 --kind=MyAppService

เดคเตเดŸเตผเดจเตเดจเต, เด’เดŸเตเดตเดฟเตฝ, เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฑเต† เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเด•เดฏเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเดฟเดจเตเดฑเต† เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เด…เดฏเดฏเตเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด•:

$ operator-sdk build your.container.registry/youruser/myapp-operator

เดกเดตเดฒเดชเตเดชเตผเด•เตเด•เต เด•เต‚เดŸเตเดคเตฝ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด‚ เดตเต‡เดฃเดฎเต†เด™เตเด•เดฟเตฝ, Go เดซเดฏเดฒเตเด•เดณเดฟเดฒเต† เดฌเต‹เดฏเดฟเดฒเตผ เดชเตเดฒเต‡เดฑเตเดฑเต เด•เต‹เดกเต เดฎเดพเดฑเตเดฑเดพเดตเตเดจเตเดจเดคเดพเดฃเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด•เตบเดŸเตเดฐเต‹เดณเดฑเดฟเดจเตเดฑเต† เดชเตเดฐเดคเตเดฏเต‡เด•เดคเด•เตพ เดชเดฐเดฟเดทเตเด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดซเดฏเดฒเดฟเตฝ เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดตเดฐเตเดคเตเดคเดพเด‚ controller.go.

เดฎเดฑเตเดฑเตŠเดฐเต เดชเดฆเตเดงเดคเดฟ เด•เตเดกเต‹, เดกเดฟเด•เตเดฒเดฑเต‡เดฑเตเดฑเต€เดตเต YAML เดซเดฏเดฒเตเด•เตพ เดฎเดพเดคเตเดฐเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดธเตเดคเดพเดตเดจเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด…เดชเตเดชเดพเดšเตเดšเต† เด•เดพเดซเตเด•เดฏเตเด•เตเด•เตเดณเตเดณ เด’เดฐเต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฑเต† เดเด•เดฆเต‡เดถเด‚ เดจเดฟเตผเดตเดšเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเด‚ เด…เดคเตเดชเต‡เดพเดฒเต†. เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฐเดฃเตเดŸเต เด•เดฎเดพเตปเดกเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดฟเดจเตเดฑเต† เดฎเตเด•เดณเดฟเตฝ เด’เดฐเต เด•เดพเดซเตเด• เด•เตเดฒเดธเตเดฑเตเดฑเตผ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚:

$ kubectl kudo install zookeeper
$ kubectl kudo install kafka

เดคเตเดŸเตผเดจเตเดจเต เดฎเดฑเตเดฑเตŠเดฐเต เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด‡เดคเต เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเด•:

$ kubectl kudo install kafka --instance=my-kafka-name 
            -p ZOOKEEPER_URI=zk-zookeeper-0.zk-hs:2181 
            -p ZOOKEEPER_PATH=/my-path -p BROKER_CPUS=3000m 
            -p BROKER_COUNT=5 -p BROKER_MEM=4096m 
            -p DISK_SIZE=40Gi -p MIN_INSYNC_REPLICAS=3 
            -p NUM_NETWORK_THREADS=10 -p NUM_IO_THREADS=20

เดชเตเดคเตเดฎ

เด•เดดเดฟเดžเตเดž เด•เตเดฑเดšเตเดšเต เดตเตผเดทเด™เตเด™เดณเดพเดฏเดฟ, เดชเตเดฐเดงเดพเดจ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดฑเดฟเดฒเต€เดธเตเด•เตพ เดเดคเดพเดจเตเด‚ เดฎเดพเดธเด™เตเด™เตพ เด•เต‚เดŸเตเดฎเตเดชเต‹เตพ เดชเตเดฑเดคเตเดคเตเดตเดฐเตเดจเตเดจเต - เด…เดคเดพเดฏเดคเต, เดชเตเดฐเดคเดฟเดตเตผเดทเด‚ เดฎเต‚เดจเตเดจเต‹ เดจเดพเดฒเต‹ เดชเตเดฐเดงเดพเดจ เดฑเดฟเดฒเต€เดธเตเด•เตพ. เด…เดตเดฏเดฟเตฝ เด“เดฐเต‹เดจเตเดจเดฟเดฒเตเด‚ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดคเดฟเดฏ เดซเต€เดšเตเดšเดฑเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เด•เตเดฑเดฏเตเดจเตเดจเดฟเดฒเตเดฒ. เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดˆ เดฆเตเดทเตโ€Œเด•เดฐเดฎเดพเดฏ เดธเดฎเดฏเด™เตเด™เดณเดฟเดฒเตเด‚ เดตเต‡เด—เดค เด•เตเดฑเดฏเตเดจเตเดจเดคเดฟเดจเตเดฑเต† เดฒเด•เตเดทเดฃเดฎเดฟเดฒเตเดฒ - เด‡เดชเตเดชเต‹เตพ เดธเตเดฅเดฟเดคเดฟ เดŽเดจเตเดคเดพเดฃเต†เดจเตเดจเต เดจเต‹เด•เตเด•เต‚ เด—เดฟเดคเตเดคเดฌเดฟเดฒเต† เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚.

เดตเตˆเดตเดฟเดงเตเดฏเดฎเดพเตผเดจเตเดจ เดœเต‹เดฒเดฟเดญเดพเดฐเด™เตเด™เดณเดฟเดฒเตเดŸเดจเต€เดณเด‚ เด•เต‚เดŸเตเดคเตฝ เด…เดฏเดตเตเดณเตเดณ เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดจเดŸเดคเตเดคเดพเตป เดชเตเดคเดฟเดฏ เด•เดดเดฟเดตเตเด•เตพ เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เด•เต‚เดŸเดพเดคเต†, เดชเตเดฐเตŠเดกเด•เตเดทเดจเดฟเดฒเต‡เด•เตเด•เต เดจเต‡เดฐเดฟเดŸเตเดŸเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตผเดฎเดพเตผ เด•เต‚เดŸเตเดคเตฝ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด‚ เด†เดธเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

เด•เดฎเตเดฎเตเดฏเต‚เดฃเดฟเดฑเตเดฑเดฟ

เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเดจเตเดฑเต† เดœเดจเดชเตเดฐเต€เดคเดฟเดฏเตเดŸเต† เดฎเดฑเตเดฑเตŠเดฐเต เดชเตเดฐเดงเดพเดจ เดตเดถเด‚ เด…เดคเดฟเดจเตเดฑเต† เดธเดฎเต‚เดนเดคเตเดคเดฟเดจเตเดฑเต† เดถเด•เตเดคเดฟเดฏเดพเดฃเต. 2015-เตฝ, เดชเดคเดฟเดชเตเดชเต 1.0-เตฝ เดŽเดคเตเดคเดฟเดฏเดชเตเดชเต‹เตพ, เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดธเตเดชเต‹เตบเดธเตผ เดšเต†เดฏเตเดคเต เด•เตเดฒเต—เดกเต เดจเต‡เดฑเตเดฑเต€เดตเต เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเดฟเด‚เด—เต เดซ .เดฃเตเดŸเต‡เดทเตป.

เดตเดฟเดตเดฟเดง เดธเดฎเต‚เดนเด™เตเด™เดณเตเดฎเตเดฃเตเดŸเต SIG (เดชเตเดฐเดคเตเดฏเต‡เด• เดคเดพเตฝเดชเตเดชเดฐเตเดฏ เด—เตเดฐเต‚เดชเตเดชเตเด•เตพ) เดชเดฆเตเดงเดคเดฟ เดตเดฟเด•เดธเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดฟเดจเตเดฑเต† เดตเดฟเดตเดฟเดง เดฎเต‡เด–เดฒเด•เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดถเตเดฐเดฆเตเดง เด•เต‡เดจเตเดฆเตเดฐเต€เด•เดฐเดฟเดšเตเดšเต. เดˆ เด—เตเดฐเต‚เดชเตเดชเตเด•เตพ เดจเดฟเดฐเดจเตเดคเดฐเด‚ เดชเตเดคเดฟเดฏ เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต, เด•เตเดฌเตผเดจเต†เดฑเตเดฑเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เด•เต‚เดŸเตเดคเตฝ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดตเตเด‚ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดตเตเดฎเดพเด•เตเด•เตเดจเตเดจเต.

เด•เตเดฒเต—เดกเต เดจเต‡เดฑเตเดฑเต€เดตเต เดซเต—เดฃเตเดŸเต‡เดทเตป CloudNativeCon/KubeCon เดนเต‹เดธเตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด‡เดคเต เดŽเดดเตเดคเตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต, เดฒเต‹เด•เดคเตเดคเดฟเดฒเต† เดเดฑเตเดฑเดตเตเด‚ เดตเดฒเดฟเดฏ เด“เดชเตเดชเตบ เดธเต‹เดดเตโ€Œเดธเต เด•เต‹เตบเดซเดฑเตปเดธเดพเดฃเต. เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดตเตผเดทเดคเตเดคเดฟเตฝ เดฎเต‚เดจเตเดจเต เดคเดตเดฃ เดจเดŸเดคเตเดคเดชเตเดชเต†เดŸเตเดจเตเดจเต, เด‡เดคเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเตเด•เดณเตเด‚ เด…เดคเดฟเดจเตเดฑเต† เด†เดตเดพเดธเดตเตเดฏเดตเดธเตเดฅเดฏเตเด‚ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจ เด†เดฏเดฟเดฐเด•เตเด•เดฃเด•เตเด•เดฟเดจเต เดชเตเดฐเตŠเดซเดทเดฃเดฒเตเด•เดณเต† เด’เดฐเตเดฎเดฟเดšเตเดšเต เด•เตŠเดฃเตเดŸเตเดตเดฐเตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เด“เดฐเต‹ เดฎเต‚เดจเตเดจเต เดฎเดพเดธเดคเตเดคเดฟเดฒเตเด‚ เดฆเตƒเดถเตเดฏเดฎเดพเด•เตเดจเตเดจ เดชเตเดคเดฟเดฏ เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ เดชเด เดฟเด•เตเด•เตเดจเตเดจเต.

เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เด•เตเดฒเต—เดกเต เดจเต‡เดฑเตเดฑเต€เดตเต เดซเต—เดฃเตเดŸเต‡เดทเดจเต เด‰เดฃเตเดŸเต เดธเดพเด™เตเด•เต‡เดคเดฟเด• เดฎเต‡เตฝเดจเต‹เดŸเตเดŸ เดธเดฎเดฟเดคเดฟ, SIG-เด•เตพเด•เตเด•เตŠเดชเตเดชเด‚, เดชเตเดคเดฟเดฏเดคเตเด‚ เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณเดคเตเด‚ เด…เดตเดฒเต‹เด•เดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต เดชเตเดฐเต‹เดœเด•เตเดŸเตเด•เตพ เดซเดฃเตเดŸเตเด•เตพ เด•เตเดฒเต—เดกเต เด‡เด•เตเด•เต‹เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดถเตเดฐเดฆเตเดง เด•เต‡เดจเตเดฆเตเดฐเต€เด•เดฐเดฟเดšเตเดšเต. เดˆ เดชเตเดฐเต‹เดœเด•เตเดŸเตเด•เดณเดฟเตฝ เดญเต‚เดฐเดฟเดญเดพเด—เดตเตเด‚ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเตเด•เดณเตเดŸเต† เดถเด•เตเดคเดฟ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เดธเดนเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดตเดธเดพเดจเดฎเดพเดฏเดฟ, เดฎเตเดดเตเดตเตป เดธเดฎเต‚เดนเดคเตเดคเดฟเดจเตเดฑเต†เดฏเตเด‚ เดฌเต‹เดงเดชเต‚เตผเดตเดฎเดพเดฏ เดชเดฐเดฟเดถเตเดฐเดฎเดฎเดฟเดฒเตเดฒเดพเดคเต† เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดตเดฟเดœเดฏเดฟเด•เตเด•เดฟเดฒเตเดฒเต†เดจเตเดจเต เดžเดพเตป เดตเดฟเดถเตเดตเดธเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดตเดฟเดŸเต† เด†เดณเตเด•เตพ เด’เดฐเตเดฎเดฟเดšเตเดšเต เดจเดฟเตฝเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เด…เดคเต‡ เดธเดฎเดฏเด‚ เดชเตเดคเตเดฎเตเด–เด™เตเด™เดณเต† เด•เต‚เดŸเตเดŸเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดธเตเดตเดพเด—เดคเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดญเดพเดตเดฟ

เดญเดพเดตเดฟเดฏเดฟเตฝ เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ เด…เดญเดฟเดฎเตเด–เต€เด•เดฐเดฟเด•เตเด•เต‡เดฃเตเดŸ เดชเตเดฐเดงเดพเดจ เดตเต†เดฒเตเดฒเตเดตเดฟเดณเดฟเด•เดณเดฟเดฒเตŠเดจเตเดจเต, เด•เต‹เดกเดฟเดจเตเดฑเต† เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เดณเดฟเตฝ เดคเดจเตเดจเต† เดถเตเดฐเดฆเตเดง เด•เต‡เดจเตเดฆเตเดฐเต€เด•เดฐเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเดพเดฃเต, เด…เดฒเตเดฒเดพเดคเต† เด…เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเต—เด•เดฐเตเดฏเด™เตเด™เดณเดฟเดฒเดฒเตเดฒ. เด‡เดคเต เดˆ เดชเตเดฐเดตเดฃเดคเด•เตพ เดชเดพเดฒเดฟเด•เตเด•เตเดจเตเดจเต เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เด†เตผเด•เตเด•เดฟเดŸเต†เด•เตเดšเดฑเตฝ เดฎเดพเดคเตƒเด•, เด‡เดจเตเดจเดคเตเดคเต† เดฎเตเตปเดจเดฟเดฐเดฏเดฟเตฝ เด’เดจเตเดจเดพเดฃเต. เดตเดฟเดชเตเดฒเดฎเดพเดฏ เดšเดŸเตเดŸเด•เตเด•เต‚เดŸเตเด•เตพ เด‡เดคเดฟเดจเด•เด‚ เดจเดฟเดฒเดตเดฟเดฒเตเดฃเตเดŸเต, เด‰เดฆเดพ. เดจเต‡เดฑเตเดฑเต€เดตเต ะธ เด“เดชเตเดชเตบเดซเดพเดธเต, เดกเต†เดตเดฒเดชเตเดชเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเตผ เดธเด‚เด—เตเดฐเดนเดฟเด•เตเด•เดพเตป เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.

เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ, เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเดฟเดจเตเดฑเต† เดจเดฟเดฒเดตเดฟเดฒเต† เด…เดตเดธเตเดฅเดฏเตเดŸเต† เด‰เดชเดฐเดฟเดคเดฒเด‚ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดžเด™เตเด™เตพ เดธเตเด•เตเดฐเดพเดšเตเดšเต เดšเต†เดฏเตเดคเดคเต-เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เด‡เดคเต เดฎเดžเตเดžเตเดฎเดฒเดฏเตเดŸเต† เด…เด—เตเดฐเด‚ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต. Kubernetes เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เต เดฎเดฑเตเดฑเต เดจเดฟเดฐเดตเดงเดฟ เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเตเด‚ เด•เดดเดฟเดตเตเด•เดณเตเด‚ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเด•เดณเตเด‚ เด‰เดฃเตเดŸเต.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•