เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฆเฉ€ เจตเจง เจฐเจนเฉ€ เจชเฉเจฐเจธเจฟเฉฑเจงเฉ€ เจฌเจพเจฐเฉ‡

เจนเฉ‡ เจนเจฌเจฐ!

เจ—เจฐเจฎเฉ€เจ†เจ‚ เจฆเฉ‡ เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฏเจพเจฆ เจฆเจฟเจตเจพเจ‰เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจตเจฟเจธเจผเฉ‡ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฌเจฐเจจเฉ‡เจŸเจฟเจธ เจ…เจคเฉ‡ เจœเฉ‚เจจ เจฆเฉ‡ เจธเจผเฉเจฐเฉ‚ เจตเจฟเฉฑเจš เจ‡เจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเฉฑเจš เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจฆเจพ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจธเจŸเฉˆเจ•เจ“เจตเจฐเจซเจฒเฉ‹ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจฒเฉ‡เจ– เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพเฅค

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฆเฉ€ เจตเจง เจฐเจนเฉ€ เจชเฉเจฐเจธเจฟเฉฑเจงเฉ€ เจฌเจพเจฐเฉ‡

เจชเฉœเฉเจนเจจ เจฆเจพ เจ†เจจเฉฐเจฆ เจฎเจพเจฃเฉ‹!

เจ‡เจธ เจฒเฉ‡เจ– เจจเฉ‚เฉฐ เจฒเจฟเจ–เจฃ เจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฆเฉ€ เจ‰เจฎเจฐ เจฒเจ—เจญเจ— เจนเฉˆ. เจ›เฉ‡ เจธเจพเจฒ เจฆเฉ€ เจ‰เจฎเจฐ เจฆเฉ‡, เจ…เจคเฉ‡ เจชเจฟเจ›เจฒเฉ‡ เจฆเฉ‹ เจธเจพเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจ‡เจธเจฆเฉ€ เจชเฉเจฐเจธเจฟเฉฑเจงเฉ€ เจ‡เฉฐเจจเฉ€ เจตเฉฑเจง เจ—เจˆ เจนเฉˆ เจ•เจฟ เจ‡เจธเจจเฉ‚เฉฐ เจฒเจ—เจพเจคเจพเจฐ เจ‡เจนเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฆเจฐเจœเจพ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆ เจธเจญ เจคเฉ‹เจ‚ เจชเจธเฉฐเจฆเฉ€เจฆเจพ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ‡เจธ เจธเจพเจฒ เจคเฉ€เจœเฉ‡ เจธเจฅเจพเจจ 'เจคเฉ‡ เจนเฉˆเฅค เจฐเฉ€เจ•เฉˆเจช เจ•เจฐเจจ เจฒเจˆ: เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ‡เฉฑเจ• เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจนเฉˆ เจœเฉ‹ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจˆเจœเจผเจก เจตเจฐเจ•เจฒเฉ‹เจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจ…เจคเฉ‡ เจ†เจฐเจ•เฉ‡เจธเจŸเฉเจฐเฉ‡เจŸ เจ•เจฐเจจ เจฒเจˆ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค

เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฒเฉ€เจจเจ•เจธ เจตเจฟเฉฑเจš เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจ…เจฒเฉฑเจ— เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจกเจฟเจœเจผเจพเจˆเจจ เจตเจœเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹เจ‡เจ†; เจ•เฉฐเจŸเฉ‡เจจเจฐ 2007 เจคเฉ‹เจ‚ เจธเจผเจพเจฎเจฒ เจนเจจ เจธเจฎเฉ‚เจน, เจ…เจคเฉ‡ 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"
}

  • เจ•เจฒเจพเจ‰เจก เจชเฉเจฐเจฆเจพเจคเจพ เจจเจพเจฒ เจเจ•เฉ€เจ•เจฐเจฃ เจฒเจˆ เจตเจฟเจ•เจฒเจชเฅค เจ…เฉฑเจœ เจฆเฉ€ เจ‰เฉฑเจš เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€ เจตเจฟเฉฑเจš เจธเจญ เจคเฉ‹เจ‚ เจตเฉฑเจง เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจตเจพเจฒเฉ‡ เจฐเฉเจเจพเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจนเฉˆ เจœเจจเจคเจ• เจ•เจฒเจพเจ‰เจก เจชเฉเจฐเจฆเจพเจคเจพเจตเจพเจ‚ 'เจคเฉ‡ เจตเจฐเจ•เจฒเฉ‹เจก เจšเจฒเจพเจ‰เจฃเจพเฅค เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจ•เจฒเจพเจŠเจก-เจชเฉเจฐเจฆเจพเจคเจพ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจ•เจฒเฉฑเจธเจŸเจฐ เจจเฉ‚เฉฐ เจ•เจฒเจพเจ‰เจก เจชเฉเจฐเจฆเจพเจคเจพ เจจเจพเจฒ เจเจ•เฉ€เจ•เฉเจฐเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจœเจฟเจธ 'เจคเฉ‡ เจ‡เจน เจšเฉฑเจฒเจฆเจพ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจœเฉ‡เจ•เจฐ เจ•เฉ‹เจˆ เจ‰เจชเจญเฉ‹เจ—เจคเจพ 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

เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจ•เฉเจฐเฉ‹เจจเจŸเฉˆเจฌ เจธเจฐเฉ‹เจค เจ•เฉเจ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚:

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

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš เจตเจฟเจธเจคเจพเจฐเจฏเฉ‹เจ—เจคเจพ เจฒเจˆ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจตเจฟเจ•เจฒเจช เจ‡เจน เจนเฉˆ เจ•เจฟ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจ†เจชเจฃเฉ‡ เจฌเจฟเจ†เจจ เจฒเจฟเจ– เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ“เจชเจฐเฉ‡เจŸเจฐ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจนเฉˆ เจœเฉ‹ "เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจธเจฐเจ•เจŸ" เจ‡เฉฑเจ• เจ“เจชเจฐเฉ‡เจŸเจฐ เจฆเฉ€ เจฎเจฆเจฆ เจจเจพเจฒ, เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ API เจจเจพเจฒ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฆเจพ เจ†เจฆเจพเจจ-เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจ•เฉ‡ CRDs (เจ•เจธเจŸเจฎ เจธเจฐเฉ‹เจค เจชเจฐเจฟเจญเจพเจธเจผเจพเจตเจพเจ‚) เจฆเฉ‡ เจชเฉเจฐเจฌเฉฐเจงเจจ เจจเฉ‚เฉฐ เจธเจตเฉˆเจšเจฒเจฟเจค เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ•เจฎเจฟเจŠเจจเจฟเจŸเฉ€ เจตเจฟเฉฑเจš เจ•เจˆ เจŸเฉ‚เจฒ เจนเจจ เจœเฉ‹ เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจฒเจˆ เจ†เจชเจฃเฉ‡ เจ†เจชเจฐเฉ‡เจŸเจฐ เจฌเจฃเจพเจ‰เจฃเจพ เจ†เจธเจพเจจ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจเฅค เจ‰เจจเฉเจนเจพเจ‚ เจฆเฉ‡ เจตเจฟเฉฑเจš - เจ†เจชเจฐเฉ‡เจŸเจฐ เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจ…เจคเฉ‡ เจ‰เจธ เจฆเฉ‡ เจ“เจชเจฐเฉ‡เจŸเจฐ SDK. เจ‡เจน SDK เจ‡เฉฑเจ• เจฌเฉเจจเจฟเจ†เจฆ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆ เจœเจฟเจธ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจกเจฟเจตเฉˆเจฒเจชเจฐ เจ‡เฉฑเจ• เจ†เจชเจฐเฉ‡เจŸเจฐ เจฌเจฃเจพเจ‰เจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจฎเฉฐเจจ เจฒเจ“ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจ•เจฎเจพเจ‚เจก เจฒเจพเจˆเจจ เจคเฉ‹เจ‚ เจ•เฉเจ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹:

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

เจ‡เจน เจคเฉเจนเจพเจกเฉ‡ เจ†เจชเจฐเฉ‡เจŸเจฐ เจฒเจˆ เจธเจพเจฐเฉ‡ เจฌเจพเจ‡เจฒเจฐเจชเจฒเฉ‡เจŸ เจ•เฉ‹เจก เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจตเจฟเฉฑเจš YAML เจซเจพเจˆเจฒเจพเจ‚ เจ…เจคเฉ‡ เจ—เฉ‹เจฒเฉฐเจ— เจ•เฉ‹เจก เจธเจผเจพเจฎเจฒ เจนเจจ:

.
|____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 เจคเฉฑเจ• เจชเจนเฉเฉฐเจšเจฃ 'เจคเฉ‡, เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฆเฉเจ†เจฐเจพ เจธเจชเจพเจ‚เจธเจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ เจ•เจฒเจพเจ‰เจก เจจเฉ‡เจŸเจฟเจต เจ•เฉฐเจชเจฟ CompเจŸเจฟเฉฐเจ— เจซเจพเจ‰เจ‚เจกเฉ‡เจธเจผเจจ.

เจตเฉฑเจ–-เจตเฉฑเจ– เจญเจพเจˆเจšเจพเจฐเฉ‡ เจตเฉ€ เจนเจจ SIG (เจตเจฟเจธเจผเฉ‡เจธเจผ เจฆเจฟเจฒเจšเจธเจชเฉ€ เจธเจฎเฉ‚เจน) เจจเฉ‡ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฆเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจ–เฉ‡เจคเจฐเจพเจ‚ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ 'เจคเฉ‡ เจงเจฟเจ†เจจ เจ•เฉ‡เจ‚เจฆเจฐเจฟเจค เจ•เฉ€เจคเจพ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเจ•เจธเจฟเจค เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจ‡เจน เจธเจฎเฉ‚เจน เจฒเจ—เจพเจคเจพเจฐ เจจเจตเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจœเฉ‹เฉœ เจฐเจนเฉ‡ เจนเจจ, เจœเจฟเจธ เจจเจพเจฒ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจตเจงเฉ‡เจฐเฉ‡ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจ…เจคเฉ‡ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจฌเจฃ เจฐเจฟเจนเจพ เจนเฉˆเฅค

เจ•เจฒเจพเจ‰เจก เจจเฉ‡เจŸเจฟเจต เจซเจพเจŠเจ‚เจกเฉ‡เจธเจผเจจ CloudNativeCon/KubeCon เจฆเฉ€ เจฎเฉ‡เจœเจผเจฌเจพเจจเฉ€ เจตเฉ€ เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจฒเจฟเจ–เจฃ เจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจฆเฉเจจเฉ€เจ† เจฆเฉ€ เจธเจญ เจคเฉ‹เจ‚ เจตเฉฑเจกเฉ€ เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจ•เจพเจจเจซเจฐเฉฐเจธ เจนเฉˆเฅค เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจพเจฒ เจตเจฟเฉฑเจš เจคเจฟเฉฐเจจ เจตเจพเจฐ เจ†เจฏเฉ‹เจœเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ‡เจน เจนเจœเจผเจพเจฐเจพเจ‚ เจชเฉ‡เจธเจผเฉ‡เจตเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจตเจพเจคเจพเจตเจฐเจฃ เจจเฉ‚เฉฐ เจฌเจฟเจนเจคเจฐ เจฌเจฃเจพเจ‰เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจจ, เจจเจพเจฒ เจนเฉ€ เจนเจฐ เจคเจฟเฉฐเจจ เจฎเจนเฉ€เจจเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจฃ เจตเจพเจฒเฉ€เจ†เจ‚ เจจเจตเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฟเฉฑเจ–เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค

เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ•เจฒเจพเจ‰เจก เจจเฉ‡เจŸเจฟเจต เจซเจพเจŠเจ‚เจกเฉ‡เจธเจผเจจ เจ•เฉ‹เจฒ เจนเฉˆ เจคเจ•เจจเฉ€เจ•เฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฎเฉ‡เจŸเฉ€, เจœเฉ‹, SIGs เจฆเฉ‡ เจจเจพเจฒ, เจจเจตเฉ‡เจ‚ เจ…เจคเฉ‡ เจฎเฉŒเจœเฉ‚เจฆเจพ เจฆเฉ€ เจธเจฎเฉ€เจ–เจฟเจ† เจ•เจฐเจฆเจพ เจนเฉˆ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ•เจฒเจพเจ‰เจก เจˆเจ•เฉ‹เจธเจฟเจธเจŸเจฎ 'เจคเฉ‡ เจ•เฉ‡เจ‚เจฆเฉเจฐเจฟเจค เจซเฉฐเจกเฅค เจ‡เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฆเฉ€เจ†เจ‚ เจธเจผเจ•เจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจธเฉเจงเจพเจฐเจจ เจตเจฟเฉฑเจš เจฎเจฆเจฆ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค

เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจฎเฉ‡เจฐเจพ เจฎเฉฐเจจเจฃเจพ เจนเฉˆ เจ•เจฟ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ“เจจเจพ เจธเจซเจฒ เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เจพ เจœเจฟเฉฐเจจเจพ เจ‡เจน เจธเจฎเฉเฉฑเจšเฉ‡ เจญเจพเจˆเจšเจพเจฐเฉ‡ เจฆเฉ‡ เจธเฉเจšเฉ‡เจค เจฏเจคเจจเจพเจ‚ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจœเจฟเฉฑเจฅเฉ‡ เจฒเฉ‹เจ• เจ‡เฉฑเจ•เจ เฉ‡ เจฐเจนเจฟเฉฐเจฆเฉ‡ เจนเจจ เจชเจฐ เจจเจพเจฒ เจนเฉ€ เจจเจตเฉ‡เจ‚ เจ†เจ เจฒเฉ‹เจ•เจพเจ‚ เจฆเจพ เจธเฉเจ†เจ—เจค เจ•เจฐเจฆเฉ‡ เจนเจจเฅค

เจญเจตเจฟเฉฑเจ–

เจฎเฉเฉฑเจ– เจšเฉเจฃเฉŒเจคเฉ€เจ†เจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจœเจฟเจธ เจจเจพเจฒ เจตเจฟเจ•เจพเจธเจ•เจพเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจญเจตเจฟเฉฑเจ– เจตเจฟเฉฑเจš เจจเจœเจฟเฉฑเจ เจฃเจพ เจชเจเจ—เจพ, เจ‰เจน เจนเฉˆ เจ•เฉ‹เจก เจฆเฉ‡ เจตเฉ‡เจฐเจตเจฟเจ†เจ‚ 'เจคเฉ‡ เจงเจฟเจ†เจจ เจ•เฉ‡เจ‚เจฆเจฐเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ, เจจเจพ เจ•เจฟ เจ‰เจธ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ 'เจคเฉ‡ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ‡เจน เจšเฉฑเจฒเจฆเจพ เจนเฉˆเฅค เจ‡เจน เจ‡เจนเจจเจพเจ‚ เจฐเฉเจเจพเจจเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจฆเจพ เจนเฉˆ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐเจฒ เจชเฉˆเจฐเจพเจกเจพเจˆเจฎ, เจœเฉ‹ เจ…เฉฑเจœ เจฎเฉ‹เจนเจฐเฉ€ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจนเฉˆเฅค เจ‰เฉฑเจจเจค เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจฎเฉŒเจœเฉ‚เจฆ เจนเจจ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ เจจเจพเจŸเจฟเจ• ะธ เจ“เจชเจจเจซเจพเจธ, เจœเฉ‹ เจ•เจฟ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจคเฉ‹เจ‚ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจจเฉ‚เฉฐ เจเจฌเจธเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐเจจ เจฒเจˆ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค

เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเจฅเจฟเจคเฉ€ เจฆเฉ€ เจธเจคเฉเจนเจพ เจจเฉ‚เฉฐ เจธเจฟเจฐเจซ เจ–เฉเจฐเจšเจฟเจ† เจนเฉˆ-เจ…เจธเจฒ เจตเจฟเฉฑเจš, เจ‡เจน เจธเจฟเจฐเจซ เจ†เจˆเจธเจฌเจฐเจ— เจฆเจพ เจธเจฟเจฐเจพ เจนเฉˆเฅค เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจ•เฉ‹เจฒ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจจเจฟเจชเจŸเจพเจฐเฉ‡ เจตเจฟเฉฑเจš เจนเฉ‹เจฐ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจธเจฐเฉ‹เจค, เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจ…เจคเฉ‡ เจธเฉฐเจฐเจšเจจเจพเจตเจพเจ‚ เจนเจจเฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹