เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฆเฉ‡ เจตเจฟเจ•เจพเจธ เจฒเจˆ เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจฆเฉ€ เจธเจฎเฉ€เจ–เจฟเจ†

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฆเฉ‡ เจตเจฟเจ•เจพเจธ เจฒเจˆ เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจฆเฉ€ เจธเจฎเฉ€เจ–เจฟเจ†

เจกเฉ‡เจข เจธเจพเจฒ เจชเจนเจฟเจฒเจพเจ‚, 5 เจฎเจพเจฐเจš, 2018 เจจเฉ‚เฉฐ, เจ—เฉ‚เจ—เจฒ เจจเฉ‡ CI/CD เจฒเจˆ เจ†เจชเจฃเฉ‡ เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจชเจนเจฟเจฒเจพ เจ…เจฒเจซเจผเจพ เจธเฉฐเจธเจ•เจฐเจฃ เจœเจพเจฐเฉ€ เจ•เฉ€เจคเจพ เจธเจ•เฉˆเจซเฉ‹เจฒเจก, เจœเจฟเจธเจฆเจพ เจŸเฉ€เจšเจพ "เจธเจฐเจฒ เจ…เจคเฉ‡ เจฆเฉเจนเจฐเจพเจ‰เจฃ เจฏเฉ‹เจ— เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเจ•เจพเจธ" เจฌเจฃเจพเจ‰เจฃเจพ เจธเฉ€ เจคเจพเจ‚ เจœเฉ‹ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจชเฉเจฐเจธเจผเจพเจธเจจ เจฆเฉ€ เจฌเจœเจพเจ เจตเจฟเจ•เจพเจธ 'เจคเฉ‡ เจงเจฟเจ†เจจ เจฆเฉ‡ เจธเจ•เจฃเฅค เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจฌเจพเจฐเฉ‡ เจ•เฉ€ เจฆเจฟเจฒเจšเจธเจช เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ? เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‡เจน เจชเจคเจพ เจšเจฒเจฆเจพ เจนเฉˆ, เจ‡เจธ เจตเจฟเฉฑเจš เจ‡เจธเจฆเฉ€ เจธเจฒเฉ€เจต เจตเจฟเฉฑเจš เจ•เฉเจ เจšเจพเจฒเจพเจ‚ เจนเจจ เจœเฉ‹ เจ‡เจธเจจเฉ‚เฉฐ เจกเจฟเจตเฉˆเจฒเจชเจฐ, เจ…เจคเฉ‡ เจธเจผเจพเจ‡เจฆ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจ‡เฉฐเจœเฉ€เจจเฉ€เจ…เจฐ เจฒเจˆ เจ‡เฉฑเจ• เจธเจผเจ•เจคเฉ€เจธเจผเจพเจฒเฉ€ เจธเฉฐเจฆ เจฌเจฃเจพ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจ†เจ“ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ…เจคเฉ‡ เจ‡เจธ เจฆเฉ€เจ†เจ‚ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจคเฉ‹เจ‚ เจœเจพเจฃเฉ‚ เจ•เจฐเฉ€เจ.

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

เจฅเจฟเจŠเจฐเฉ€. เจ‰เจฆเฉ‡เจธเจผ เจ…เจคเฉ‡ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚

เจ‡เจธ เจฒเจˆ, เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจฌเฉ‹เจฒเจฆเฉ‡ เจนเฉ‹เจ, เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจกเจฟเจตเฉˆเจฒเจชเจฐ เจจเฉ‚เฉฐ เจคเฉเจฐเฉฐเจค เจซเฉ€เจกเจฌเฉˆเจ• เจฆเฉ€ เจชเฉ‡เจธเจผเจ•เจธเจผ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, CI/CD เจšเฉฑเจ•เจฐ (เจฌเจฟเจฒเจก, เจชเฉเจธเจผ, เจกเจฟเจชเจฒเฉ‹เจ เจชเฉœเจพเจ… 'เจคเฉ‡) เจจเฉ‚เฉฐ เจธเจตเฉˆเจšเจพเจฒเจค เจ•เจฐเจจ เจฆเฉ€ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจฆเจพ เจนเฉˆ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ. เจ…เจ—เจฒเฉ€เจ†เจ‚ เจ•เฉ‹เจก เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจจเฉ‚เฉฐ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ - เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจšเฉฑเจฒ เจฐเจนเฉ€ เจ‡เฉฑเจ• เจ…เฉฑเจชเจกเฉ‡เจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจšเฅค เจ…เจคเฉ‡ เจ‡เจน เจตเฉฑเจ–-เจตเฉฑเจ– เจธเจฐเจ•เจŸเจพเจ‚ (เจฆเฉ‡เจต, เจชเฉœเจพเจ…, เจ‰เจคเจชเจพเจฆเจจ...) เจตเจฟเฉฑเจš เจ•เฉฐเจฎ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจฒเจˆ เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจฐเฉ‹เจฒเจ†เจŠเจŸ เจฒเจˆ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจชเจพเจˆเจชเจฒเจพเจˆเจจเจพเจ‚ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฎเจฆเจฆ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจฆเจพ เจธเจฐเฉ‹เจค เจ•เฉ‹เจก เจ—เฉ‹ เจตเจฟเฉฑเจš เจฒเจฟเจ–เจฟเจ† เจ—เจฟเจ† เจนเฉˆ, เจฆเฉเจ†เจฐเจพ เจตเฉฐเจกเจฟเจ† เจฎเฉเจซเจผเจค เจ…เจชเจพเจšเฉ‡ เจฒเจพเจ‡เจธเฉฐเจธ 2.0 (GitHub) เจฆเฉ‡ เจ…เจงเฉ€เจจเฅค

เจ†เจ‰ เจฎเฉเฉฑเจ– เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจ…เจคเฉ‡ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉ‡เจ–เฉ€เจ. เจชเจนเจฟเจฒเฉ‡ เจตเจฟเฉฑเจš เจนเฉ‡เจ  เจฒเจฟเจ–เฉ‡ เจธเจผเจพเจฎเจฒ เจนเจจ:

  • เจธเจ•เฉˆเจซเฉ‹เจฒเจก CI/CD เจชเจพเจˆเจชเจฒเจพเจˆเจจเจพเจ‚ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจŸเฉ‚เจฒ เจชเฉ‡เจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆเฅค
  • เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฌเฉˆเจ•เจ—เฉเจฐเจพเจ‰เจ‚เจก เจตเจฟเฉฑเจš เจธเจฐเฉ‹เจค เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจ…เจธเฉˆเจ‚เจฌเจฒ เจ•เจฐเจจ, เจ‡เจนเจจเจพเจ‚ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจกเฉŒเจ•เจฐ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจชเฉเจฐเจ•เจพเจธเจผเจค เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจคเฉˆเจจเจพเจค เจ•เจฐเจจ เจฆเฉ€ เจ‡เฉฑเจ• เจธเจตเฉˆเจšเจฒเจฟเจค เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค
  • เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš เจตเจฐเจ•เจฟเฉฐเจ— เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจจเจพเจฒ เจธเจฎเจ•เจพเจฒเฉ€ เจ•เจฐเจฆเจพ เจนเฉˆเฅค
  • เจ•เฉฐเจŸเฉ‡เจจเจฐ-เจธเจŸเฉเจฐเจ•เจšเจฐ-เจŸเฉˆเจธเจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจŸเฉˆเจธเจŸ เจ•เจฐเจฆเจพ เจนเฉˆเฅค
  • เจชเฉ‹เจฐเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจ…เฉฑเจ—เฉ‡ เจญเฉ‡เจœเจฆเจพ เจนเฉˆเฅค
  • เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš เจšเฉฑเจฒ เจฐเจนเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ‡ เจฒเฉŒเจ—เจธ เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจฆเจพ เจนเฉˆเฅค
  • Java, Node.js, Python, Go เจตเจฟเฉฑเจš เจฒเจฟเจ–เฉ€เจ†เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจกเฉ€เจฌเฉฑเจ— เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฎเจฆเจฆ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจนเฉเจฃ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจฌเจพเจฐเฉ‡:

  • เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจตเจฟเฉฑเจš เจ†เจชเจฃเฉ‡ เจ†เจช เจตเจฟเฉฑเจš เจ•เฉ‹เจˆ เจ•เจฒเฉฑเจธเจŸเจฐ-เจธเจพเจˆเจก เจญเจพเจ— เจจเจนเฉ€เจ‚ เจนเจจ. เจญเจพเจต, เจ‡เจธ เจธเจนเฉ‚เจฒเจค เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจธเฉฐเจฐเจšเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจˆ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค
  • เจคเฉเจนเจพเจกเฉ€ เจ…เจฐเจœเจผเฉ€ เจฒเจˆ เจตเฉฑเจ–-เจตเฉฑเจ– เจชเจพเจˆเจชเจฒเจพเจˆเจจเจพเจ‚. เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจตเจฟเจ•เจพเจธ เจ•เจฐ เจฐเจนเฉ‡ เจนเฉ‹เจตเฉ‹ เจคเจพเจ‚ เจ•เฉ€ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจธเจฅเจพเจจเจ• เจฎเจฟเจจเฉ€เจ•เฉ‚เจฌ 'เจคเฉ‡ เจฐเฉ‹เจฒ เจ†เจŠเจŸ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจ…เจคเฉ‡ เจซเจฟเจฐ เจธเจŸเฉ‡เจœ เจœเจพเจ‚ เจ‰เจคเจชเจพเจฆเจจ เจฒเจˆ? เจ‡เจธ เจฎเจ•เจธเจฆ เจฒเจˆ เจนเจจ เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒเจพเจ‚ เจ…เจคเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจธเฉฐเจฐเจšเจจเจพ, เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจ…เจคเฉ‡ เจซเจฒเฉˆเจ—, เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจˆ เจตเฉฑเจ–-เจตเฉฑเจ– เจชเจพเจˆเจชเจฒเจพเจˆเจจเจพเจ‚ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเฉ‡ เจนเจจเฅค
  • CLI. YAML เจตเจฟเฉฑเจš เจธเจฟเจฐเจซเจผ เจ•เฉฐเจธเฉ‹เจฒ เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจ…เจคเฉ‡ เจธเฉฐเจฐเจšเจจเจพเจตเจพเจ‚เฅค เจ‡เฉฐเจŸเจฐเจจเฉˆเฉฑเจŸ 'เจคเฉ‡ เจคเฉเจธเฉ€เจ‚ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€เจ†เจ‚ เจ•เฉ‹เจธเจผเจฟเจธเจผเจพเจ‚ เจฆเฉ‡ เจนเจตเจพเจฒเฉ‡ เจฒเฉฑเจญ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจชเฉเจฐเจฏเฉ‹เจ—เจพเจคเจฎเจ• GUI, เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เจธ เจธเจฎเฉ‡เจ‚ เจ‡เจธเจฆเจพ เจธเจญ เจคเฉ‹เจ‚ เจตเฉฑเจง เจธเฉฐเจญเจพเจตเจค เจ…เจฐเจฅ เจ‡เจน เจนเฉˆ เจ•เจฟ เจ•เจฟเจธเฉ‡ เจจเฉ‚เฉฐ เจ‰เจธเจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ, เจชเจฐ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚.
  • เจฐเฉ‚เจช -เจฐเฉ‡เจ–เจพ. เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจ‡เฉฑเจ• เจธเจŸเฉˆเจ‚เจกเจ…เจฒเฉ‹เจจ เจนเจพเจฐเจตเฉˆเจธเจŸเจฐ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจชเจฐ เจ–เจพเจธ เจ•เฉฐเจฎเจพเจ‚ เจฒเจˆ เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจฎเจพเจกเจฟเจŠเจฒเจพเจ‚ เจœเจพเจ‚ เจฎเฉŒเจœเฉ‚เจฆเจพ เจนเฉฑเจฒเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจฌเจพเจ…เจฆ เจฆเฉ€ เจ‰เจฆเจพเจนเจฐเจฃ:

  • เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจชเฉœเจพเจ… 'เจคเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ‡เจน เจตเจฐเจค เจธเจ•เจฆเฉ‡ เจนเฉ‹:
    • เจกเฉŒเจ•เจฐ เจฌเจฟเจฒเจก เจธเจฅเจพเจจเจ• เจคเฉŒเจฐ 'เจคเฉ‡, เจ•เจจเฉ€เจ•เฉ‹ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ‡เฉฑเจ• เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจœเจพเจ‚ เจ—เฉ‚เจ—เจฒ เจ•เจฒเจพเจ‰เจก เจฌเจฟเจฒเจก เจตเจฟเฉฑเจš;
    • เจธเจฅเจพเจจเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจฌเฉ‡เจœเจผเจฒ;
    • เจœเจฟเจฌ เจฎเจพเจตเฉ‡เจจ เจ…เจคเฉ‡ เจœเจฟเจฌ เจ—เฉเจฐเฉ‡เจกเจฒ เจธเจฅเจพเจจเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจœเจพเจ‚ เจ—เฉ‚เจ—เจฒ เจ•เจฒเจพเจ‰เจก เจฌเจฟเจฒเจก เจตเจฟเฉฑเจš;
    • เจ•เจธเจŸเจฎ เจฌเจฟเจฒเจก เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจธเจฅเจพเจจเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจšเฉฑเจฒเจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เฉ‹เจˆ เจนเฉ‹เจฐ (เจตเจงเฉ‡เจฐเฉ‡ เจฒเจšเจ•เจฆเจพเจฐ/เจœเจพเจฃเฉ‚/...) เจฌเจฟเจฒเจก เจนเฉฑเจฒ เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจธ เจฆเจพ เจตเจฐเจฃเจจ เจธเจ•เฉเจฐเจฟเจชเจŸ เจตเจฟเฉฑเจš เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจคเจพเจ‚ เจœเฉ‹ เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจ‡เจธเจจเฉ‚เฉฐ เจฒเจพเจ‚เจš เจ•เจฐเฉ‡ (เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจคเฉ‹เจ‚ เจ‰เจฆเจพเจนเจฐเจจ). เจ‡เจน เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจ•เฉเจฒเฉˆเจ•เจŸเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจœเจฟเจธ เจจเฉ‚เฉฐ เจธเจ•เฉเจฐเจฟเจชเจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ•เจฟเจนเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ;
  • เจŸเฉˆเจธเจŸเจฟเฉฐเจ— เจชเฉœเจพเจ… 'เจคเฉ‡, เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจœเจผเจฟเจ•เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ•เฉฐเจŸเฉ‡เจจเจฐ-เจขเจพเจ‚เจšเจพ-เจŸเฉˆเจธเจŸ;
  • เจคเฉˆเจจเจพเจคเฉ€ เจฒเจˆ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจ—เจ เจนเจจ:
    • เจ•เจฟเจŠเจฌเฉˆเจ•เจŸเจฒ;
    • เจนเฉˆเจฒเจฎ;
    • เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจ•เจฐเฉ‹.

เจ‡เจธเจฆเจพ เจงเฉฐเจจเจตเจพเจฆ, เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเจฟเจฒเฉฑเจ–เจฃ เจ•เจฟเจนเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ CI/CD เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจขเจพเจ‚เจšเจพ. เจ‡เฉฑเจฅเฉ‡ เจตเจฐเจ•เจซเจฒเฉ‹ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจนเฉˆ (เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจธเจคเจพเจตเฉ‡เจœเจผเจพเจ‚ เจคเฉ‹เจ‚):

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฆเฉ‡ เจตเจฟเจ•เจพเจธ เจฒเจˆ เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจฆเฉ€ เจธเจฎเฉ€เจ–เจฟเจ†

เจธเจ•เจพเจซเฉ‹เจฒเจก เจฆเจพ เจ•เฉฐเจฎ เจ†เจฎ เจธเจผเจฌเจฆเจพเจ‚ เจตเจฟเฉฑเจš เจ•เจฟเจนเฉ‹ เจœเจฟเจนเจพ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ?

  1. เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจธเจฐเฉ‹เจค เจ•เฉ‹เจก เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจซเจพเจˆเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจธเฉ‹เจงเจพเจ‚ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ, เจคเจพเจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจชเฉŒเจก เจจเจพเจฒ เจธเจฎเจ•เจพเจฒเฉ€ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจœเฉ‡ เจธเฉฐเจญเจต เจนเฉ‹เจตเฉ‡, เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจฎเฉเฉœ-เจ…เจธเฉˆเจ‚เจฌเจฒ เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚เฅค เจจเจนเฉ€เจ‚ เจคเจพเจ‚, เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจคเจธเจตเฉ€เจฐ เจ‡เจ•เฉฑเจ เฉ€ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ.
  2. เจ…เจธเฉˆเจ‚เจฌเจฒ เจ•เฉ€เจคเฉ‡ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจ•เฉฐเจŸเฉ‡เจจเจฐ-เจธเจŸเฉเจฐเจ•เจšเจฐ-เจŸเฉˆเจธเจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจœเจพเจ‚เจšเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจŸเฉˆเจ— เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจกเฉŒเจ•เจฐ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจจเฉ‚เฉฐ เจญเฉ‡เจœเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค
  3. เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจคเฉˆเจจเจพเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ - เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจคเฉˆเจจเจพเจค.
  4. เจœเฉ‡เจ•เจฐ เจ•เจฎเจพเจ‚เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจฒเจพเจ‚เจš เจจเฉ‚เฉฐ เจธเจผเฉเจฐเฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ skaffold dev, เจซเจฟเจฐ เจ…เจธเฉ€เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจคเฉ‹เจ‚ เจฒเฉŒเจ— เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจธเจพเจฐเฉ€เจ†เจ‚ เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจฆเฉเจนเจฐเจพเจ‰เจฃ เจฒเจˆ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฆเฉ‡ เจตเจฟเจ•เจพเจธ เจฒเจˆ เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจฆเฉ€ เจธเจฎเฉ€เจ–เจฟเจ†
เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจ“เจชเจฐเฉ‡เจธเจผเจจ เจฆเฉ‡ เจฎเฉเฉฑเจ– เจชเฉœเจพเจตเจพเจ‚ เจฆเจพ เจ‰เจฆเจพเจนเจฐเจจ

เจ…เจญเจฟเจ†เจธ. เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ

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

เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจธเจฅเจพเจชเจฟเจค เจ•เจฐเฉ‹:

curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64
chmod +x skaffold
sudo mv skaffold /usr/local/bin
skaffold version
v0.37.1

เจ†เจ‰ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€เจ†เจ‚ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจฆเฉ‡ เจญเฉฐเจกเจพเจฐ เจจเฉ‚เฉฐ เจ•เจฒเฉ‹เจจ เจ•เจฐเฉ€เจ:

git clone https://github.com/GoogleContainerTools/skaffold
cd skaffold/examples/microservices

เจฎเฉˆเจ‚ เจฆเฉ‹ เจชเฉŒเจกเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจšเฉเจฃเจฟเจ†, เจนเจฐ เจ‡เฉฑเจ• เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ›เฉ‹เจŸเฉ€ เจ—เฉ‹ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจนเฉˆเฅค เจ‡เฉฑเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจซเจฐเฉฐเจŸเจเจ‚เจก (เจฒเฉ€เจฐเฉ‹เจ-เจตเฉˆเจฌ) เจนเฉˆ, เจœเฉ‹ เจฌเฉ‡เจจเจคเฉ€ เจจเฉ‚เฉฐ เจฆเฉ‚เจœเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ - เจฌเฉˆเจ•เจเจ‚เจก (เจฒเฉ€เจฐเฉ‹เจ-เจเจช) 'เจคเฉ‡ เจฐเฉ€เจกเจพเจ‡เจฐเฉˆเจ•เจŸ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจ†เจ“ เจฆเฉ‡เจ–เฉ€เจ เจ•เจฟ เจ‡เจน เจ•เจฟเจนเฉ‹ เจœเจฟเจนเจพ เจฒเฉฑเจ—เจฆเจพ เจนเฉˆ:

~/skaffold/examples/microservices # tree
.
โ”œโ”€โ”€ leeroy-app
โ”‚   โ”œโ”€โ”€ app.go
โ”‚   โ”œโ”€โ”€ Dockerfile
โ”‚   โ””โ”€โ”€ kubernetes
โ”‚       โ””โ”€โ”€ deployment.yaml
โ”œโ”€โ”€ leeroy-web
โ”‚   โ”œโ”€โ”€ Dockerfile
โ”‚   โ”œโ”€โ”€ kubernetes
โ”‚   โ”‚   โ””โ”€โ”€ deployment.yaml
โ”‚   โ””โ”€โ”€ web.go
โ”œโ”€โ”€ README.adoc
โ””โ”€โ”€ skaffold.yaml
 
4 directories, 8 files

leeroy-app เจ…เจคเฉ‡ leeroy-web เจตเจฟเฉฑเจš เจ‡เจธ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจธเจฅเจพเจจเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ—เฉ‹ เจ•เฉ‹เจก เจ…เจคเฉ‡ เจธเจงเจพเจฐเจจ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒเจพเจ‚ เจธเจผเจพเจฎเจฒ เจนเจจ:

~/skaffold/examples/microservices # cat leeroy-app/Dockerfile
FROM golang:1.12.9-alpine3.10 as builder
COPY app.go .
RUN go build -o /app .
 
FROM alpine:3.10
CMD ["./app"]
COPY --from=builder /app .

เจฎเฉˆเจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เฉ‹เจก เจจเจนเฉ€เจ‚ เจฆเฉ‡เจตเจพเจ‚เจ—เจพ - เจ‡เจน เจœเจพเจฃเจจเจพ เจ•เจพเจซเจผเฉ€ เจนเฉˆ leeroy-web เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจธเจตเฉ€เจ•เจพเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเฉŒเจ•เจธเฉ€ เจ•เจฐเจฆเจพ เจนเฉˆ leeroy-app. เจ‡เจธ เจฒเจˆ เจซเจพเจˆเจฒเจพเจ‚ เจตเจฟเฉฑเจš Deployment.yaml เจฒเจˆ เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจธเฉ‡เจตเจพ เจนเฉˆ app (เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจฐเฉ‚เจŸเจฟเฉฐเจ— เจฒเจˆ) เจชเฉŒเจก เจชเฉ‹เจฐเจŸ web เจ…เจธเฉ€เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจคเฉฑเจ• เจคเฉเจฐเฉฐเจค เจชเจนเฉเฉฐเจš เจฒเจˆ เจ‡เจธเจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ•เฉ‹เจฒ เจญเฉ‡เจœเจพเจ‚เจ—เฉ‡เฅค

เจ‡เจน เจ•เจฟเจฆเฉ‡ เจตเจฐเจ—เจพ เจฆเจฟเจธเจฆเจพ เจนเฉˆ skaffold.yaml:

~/skaffold/examples/microservices # cat skaffold.yaml
apiVersion: skaffold/v1beta13
kind: Config
build:
  artifacts:
    - image: leeroy-web
      context: ./leeroy-web/
    - image: leeroy-app
      context: ./leeroy-app/
deploy:
  kubectl:
    manifests:
      - ./leeroy-web/kubernetes/*
      - ./leeroy-app/kubernetes/*
portForward:
  - resourceType: deployment
    resourceName: leeroy-web
    port: 8080
    localPort: 9000

เจ‰เฉฑเจชเจฐ เจฆเฉฑเจธเฉ‡ เจ—เจ เจธเจพเจฐเฉ‡ เจชเฉœเจพเจ… เจ‡เฉฑเจฅเฉ‡ เจฆเฉฑเจธเฉ‡ เจ—เจ เจนเจจ. เจ‡เจธ เจธเฉฐเจฐเจšเจจเจพ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ—เจฒเฉ‹เจฌเจฒ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจตเจพเจฒเฉ€ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจตเฉ€ เจนเฉˆ - ~/.skaffold/config. เจ‡เจธเจจเฉ‚เฉฐ เจนเฉฑเจฅเฉ€เจ‚ เจœเจพเจ‚ CLI เจฆเฉเจ†เจฐเจพ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ - เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚:

skaffold config set --global local-cluster true

เจ‡เจน เจ•เจฎเจพเจ‚เจก เจ—เจฒเฉ‹เจฌเจฒ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจธเฉˆเฉฑเจŸ เจ•เจฐเฉ‡เจ—เฉ€ local-cluster เจ…เจฐเจฅ เจตเจฟเฉฑเจš true, เจœเจฟเจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจฐเจฟเจฎเฉ‹เจŸ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจงเฉฑเจ•เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจจเจนเฉ€เจ‚ เจ•เจฐเฉ‡เจ—เจพเฅค เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจธเจฅเจพเจจเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจตเจฟเจ•เจพเจธ เจ•เจฐ เจฐเจนเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจธเจฅเจพเจจเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ‡เจธ เจ•เจฎเจพเจ‚เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจตเจพเจชเจธ เจฒเจˆ skaffold.yaml:

  • เจธเจŸเฉ‡เจœ 'เจคเฉ‡ build เจ…เจธเฉ€เจ‚ เจจเจฟเจธเจผเจšเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจธเจฅเจพเจจเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจ เจ…เจคเฉ‡ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจชเจนเจฟเจฒเฉ€ เจตเจพเจฐ เจฌเจฟเจฒเจก เจšเฉฑเจฒเจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ…เจธเฉ€เจ‚ เจนเฉ‡เจ  เจฒเจฟเจ–เจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจพเจ‚เจ—เฉ‡:
    // ั‚.ะบ. Minikube ัะพะทะดะฐะตั‚ ะบะปะฐัั‚ะตั€ ะฒ ะพั‚ะดะตะปัŒะฝะพะน ะฒะธั€ั‚ัƒะฐะปัŒะฝะพะน ะผะฐัˆะธะฝะต,
    // ะฟั€ะธะดะตั‚ัั ะฟั€ะพะฝะธะบะฝัƒั‚ัŒ ะฒะฝัƒั‚ั€ัŒ, ั‡ั‚ะพะฑั‹ ะฝะฐะนั‚ะธ ะพะฑั€ะฐะทั‹
    # minikube ssh
    $ docker images
    REPOSITORY                                TAG                                                                IMAGE ID            CREATED             SIZE 
    leeroy-app                                7d55a50803590b2ff62e47e6f240723451f3ef6f8c89aeb83b34e661aa287d2e   7d55a5080359        4 hours ago         13MB 
    leeroy-app                                v0.37.1-171-g0270a0c-dirty                                         7d55a5080359        4 hours ago         13MB
    leeroy-web                                5063bfb29d984db1ff70661f17d6efcc5537f2bbe6aa6907004ad1ab38879681   5063bfb29d98        5 hours ago         13.1MB
    leeroy-web                                v0.37.1-171-g0270a0c-dirty                                         5063bfb29d98        5 hours ago         13.1MB

    เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจจเฉ‡ เจ–เฉเจฆ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจŸเฉˆเจ— เจ•เฉ€เจคเจพ. เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ, เจ•เจˆ เจŸเฉˆเจ—เจฟเฉฐเจ— เจจเฉ€เจคเฉ€เจ†เจ‚ เจธเจฎเจฐเจฅเจฟเจค เจนเจจเฅค

  • เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจ…เฉฑเจ—เฉ‡ เจ‡เจน เจฆเจฐเจธเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ context: ./leeroy-app/, i.e. เจธเฉฐเจฆเจฐเจญ เจœเจฟเจธ เจตเจฟเฉฑเจš เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค
  • เจคเฉˆเจจเจพเจคเฉ€ เจชเฉœเจพเจ… 'เจคเฉ‡, เจ‡เจน เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจœเจผเจฐเฉ‚เจฐเฉ€ เจฎเฉˆเจจเฉ€เจซเฉˆเจธเจŸ เจฒเจˆ เจ•เจฟเจŠเจฌเฉˆเจ•เจŸเจฒ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจฎเจพเจธเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค
  • PortForward: เจœเจฟเจตเฉ‡เจ‚ เจ…เจธเฉ€เจ‚ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจชเฉ‹เจฐเจŸเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ…เฉฑเจ—เฉ‡ เจญเฉ‡เจœเจฆเฉ‡ เจนเจพเจ‚ kubectl port-forward, เจ…เจธเฉ€เจ‚ เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจจเฉ‚เฉฐ เจ‡เจธ เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจจ เจฒเจˆ เจจเจฟเจฐเจฆเฉ‡เจธเจผ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ‡เจธ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, เจฒเฉ‹เจ•เจฒ เจชเฉ‹เจฐเจŸ 9000 เจจเฉ‚เฉฐ 8080 เจตเจฟเฉฑเจš เจคเฉˆเจจเจพเจคเฉ€ เจฆเฉ‡ เจจเจพเจฎ เจจเจพเจฒ เจ…เฉฑเจ—เฉ‡ เจญเฉ‡เจœ เจฆเจฟเฉฑเจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ leeroy-web.

เจ‡เจน เจฒเจพเจ‚เจš เจ•เจฐเจจ เจฆเจพ เจธเจฎเจพเจ‚ เจนเฉˆ skaffold dev: เจŸเฉ€เจฎ เจ‡เฉฑเจ• เจšเฉฑเจฒ เจฐเจนเฉ€ "เจซเฉ€เจกเจฌเฉˆเจ• เจฒเฉ‚เจช" เจฌเจฃเจพเจเจ—เฉ€, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‡เจน เจจเจพ เจธเจฟเจฐเจซ เจธเจญ เจ•เฉเจ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจคเจพเจ‡เจจเจพเจค เจ•เจฐเฉ‡เจ—เจพ, เจฌเจฒเจ•เจฟ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธ เจธเจฎเฉ‡เจ‚ เจชเฉŒเจกเจพเจ‚ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจฌเจพเจฐเฉ‡ เจตเฉ€ เจฆเฉฑเจธเฉ‡เจ—เจพ, เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฐเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจชเฉŒเจกเจพเจ‚ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจ…เจชเจกเฉ‡เจŸ เจ•เจฐเฉ‡เจ—เจพเฅค

เจ‡เฉฑเจฅเฉ‡ เจฒเจพเจ‚เจš เจจเจคเฉ€เจœเจพ เจนเฉˆ skaffold dev --port-forward เจฆเฉเจฌเจพเจฐเจพ เจœเฉ‹เฉœเจจ เจตเฉ‡เจฒเฉ‡:

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฆเฉ‡ เจตเจฟเจ•เจพเจธ เจฒเจˆ เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจฆเฉ€ เจธเจฎเฉ€เจ–เจฟเจ†

เจชเจนเจฟเจฒเจพเจ‚, เจคเฉเจธเฉ€เจ‚ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจ•เฉˆเจธเจผ เจตเจฐเจคเจฟเจ† เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆเฅค เจ…เฉฑเจ—เฉ‡, เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ…เจธเฉˆเจ‚เจฌเจฒ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจคเฉˆเจจเจพเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจชเฉ‹เจฐเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจ…เฉฑเจ—เฉ‡ เจญเฉ‡เจœเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจœเจฆเฉ‹เจ‚ เจคเฉ‹เจ‚ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ --port-forward, เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจจเฉ‡ เจชเฉ‹เจฐเจŸ เจจเฉ‚เฉฐ เจ…เฉฑเจ—เฉ‡ เจญเฉ‡เจœ เจฆเจฟเฉฑเจคเจพ web, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‰เจธเจจเฉ‚เฉฐ เจชเฉเฉฑเจ›เจฟเจ† เจ—เจฟเจ† เจธเฉ€, เจชเจฐ เจ‡เฉฑเจฅเฉ‡ app เจ‰เจธเจจเฉ‡ เจ†เจชเจฃเฉ€ เจฎเจฐเจœเจผเฉ€ 'เจคเฉ‡ เจธเฉเฉฑเจŸ เจฆเจฟเฉฑเจคเจพ (เจจเฉ‡เฉœเจฒเฉ‡ เจฎเฉเจซเจผเจค เจจเฉ‚เฉฐ เจšเฉเจฃเฉ‹)เฅค เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ…เจธเฉ€เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเฉ‡ เจฒเฉŒเจ— เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค

เจ†เจ“ เจœเจพเจ‚เจš เจ•เจฐเฉ€เจ เจ•เจฟ เจ•เฉ€ เจ‡เจน เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ?

~/skaffold/examples/microservices # kubectl get po
NAME                          READY   STATUS    RESTARTS   AGE
leeroy-app-6998dfcc95-2nxvf   1/1     Running   0          103s
leeroy-web-69f7d47c9d-5ff77   1/1     Running   0          103s
~/skaffold/examples/microservices # curl localhost:9000
leeroooooy app!!!

เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจธเฉ‹เจงเจฟเจ† เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆ leeroy-app/app.go - เจ•เฉเจ เจธเจ•เจฟเฉฐเจŸ เจฒเฉฐเจ˜เจฆเฉ‡ เจนเจจ ... เจ…เจคเฉ‡:

~/skaffold/examples/microservices # kubectl get po
NAME                          READY   STATUS    RESTARTS   AGE
leeroy-app-ffd79d986-l6nwp    1/1     Running   0          11s
leeroy-web-69f7d47c9d-5ff77   1/1     Running   0          4m59s
~/skaffold/examples/microservices # curl localhost:9000
leeroooooy Habr!!!

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

เจนเฉ‹เจฐ เจ…เจญเจฟเจ†เจธ

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

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

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

เจ…เจคเฉ‡ เจ…เฉฐเจฆเจฐ เจ‡เจธ เจชเฉเจฐเจ•เจพเจธเจผเจจ เจตเฉ‡เจตเจตเจฐเจ•เจธ เจคเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจ‰เจคเจชเจพเจฆเจจ เจฒเจˆ เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ‰เจฆเจพเจนเจฐเจฃ เจฒเฉฑเจญ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจธเจฟเฉฑเจŸเจพ

เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจชเจพเจˆเจชเจฒเจพเจˆเจจเจพเจ‚ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจธเจพเจงเจจ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฒเจˆ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฐเฉ‹เจฒ เจ†เจŠเจŸ เจ•เจฐเจจเจพ เจธเจผเจพเจฎเจฒ เจนเฉˆ เจ…เจคเฉ‡ เจฎเฉเฉฑเจ– เจคเฉŒเจฐ 'เจคเฉ‡ เจตเจฟเจ•เจพเจธ เจฆเฉ€เจ†เจ‚ เจฒเฉ‹เฉœเจพเจ‚ 'เจคเฉ‡ เจ•เฉ‡เจ‚เจฆเฉเจฐเจฟเจค เจนเฉˆเฅค เจ‡เจน เจ‡เฉฑเจ• "เจ›เฉ‹เจŸเฉ€" เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฌเจฃเจพเจ‰เจฃเจพ เจฌเจนเฉเจค เจ†เจธเจพเจจ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจœเฉ‹ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจฆเฉ€เจ†เจ‚ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจฒเฉ‹เฉœเจพเจ‚ เจจเฉ‚เฉฐ เจงเจฟเจ†เจจ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฆเฉ€ เจนเฉˆ, เจชเจฐ เจœเฉ‡เจ•เจฐ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจตเฉฑเจกเฉ€เจ†เจ‚ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉฐเจ—เจ เจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค CI/CD เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจตเจฟเฉฑเจš เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€เจ†เจ‚ เจธเจชเฉฑเจธเจผเจŸ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจตเจœเฉ‹เจ‚ เจฆเจฟเฉฑเจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจœเจฟเจนเฉ‡ เจ‡เฉฑเจ• เจŸเฉˆเจธเจŸ เจชเฉเจฐเจพเจœเฉˆเจ•เจŸ Kubernetes, gRPC, Istio เจ…เจคเฉ‡ OpenCensus เจŸเจฐเฉ‡เจธเจฟเฉฐเจ— เจฆเฉ€เจ†เจ‚ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ 10 เจฎเจพเจˆเจ•เฉเจฐเฉ‹เจธเจฐเจตเจฟเจธเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚เฅค

เจธเจ•เฉˆเจซเฉ‹เจฒเจก เจ•เฉ‹เจฒ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ—เจฟเจŸเจนเจฌ 'เจคเฉ‡ เจฒเจ—เจญเจ— 8000+ เจธเจฟเจคเจพเจฐเฉ‡ เจนเจจ, เจ—เฉ‚เจ—เจฒ เจฆเฉเจ†เจฐเจพ เจตเจฟเจ•เจธเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจฆเจพ เจนเจฟเฉฑเจธเจพ เจนเฉˆ เจ—เฉ‚เจ—เจฒ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจŸเฉ‚เจฒเจธ - เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจธ เจธเจฎเฉ‡เจ‚ เจ‡เจน เจตเจฟเจธเจผเจตเจพเจธ เจ•เจฐเจจ เจฆเจพ เจนเจฐ เจ•เจพเจฐเจจ เจนเฉˆ เจ•เจฟ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ–เฉเจธเจผเฉ€ เจจเจพเจฒ เจตเจฟเจ•เจพเจธ เจ•เจฐเฉ‡เจ—เจพ.

PS

เจธเจพเจกเฉ‡ เจฌเจฒเฉŒเจ— 'เจคเฉ‡ เจตเฉ€ เจชเฉœเฉเจนเฉ‹:

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

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