เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเชพ เชตเชฟเช•เชพเชธ เชฎเชพเชŸเซ‡ เชธเซเช•เชพเชซเซ‹เชฒเซเชกเชจเซ€ เชธเชฎเซ€เช•เซเชทเชพ

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเชพ เชตเชฟเช•เชพเชธ เชฎเชพเชŸเซ‡ เชธเซเช•เชพเชซเซ‹เชฒเซเชกเชจเซ€ เชธเชฎเซ€เช•เซเชทเชพ

เชฆเซ‹เชข เชตเชฐเซเชท เชชเชนเซ‡เชฒเชพเช‚, 5 เชฎเชพเชฐเซเชš, 2018เชจเชพ เชฐเซ‹เชœ, Google เช CI/CD เชฎเชพเชŸเซ‡ เชคเซ‡เชจเชพ เช“เชชเชจ เชธเซ‹เชฐเซเชธ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซเช‚ เชชเซเชฐเชฅเชฎ เช†เชฒเซเชซเชพ เชตเชฐเซเชเชจ เชฌเชนเชพเชฐ เชชเชพเชกเซเชฏเซเช‚ เชธเซเช•เชพเชซเซ‹เชฒเซเชก, เชœเซ‡เชจเซ‹ เชงเซเชฏเซ‡เชฏ "เชธเชฐเชณ เช…เชจเซ‡ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชตเชฟเช•เชพเชธ" เชฌเชจเชพเชตเชตเชพเชจเซ‹ เชนเชคเซ‹ เชœเซ‡เชฅเซ€ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชตเชนเซ€เชตเชŸเชจเซ‡ เชฌเชฆเชฒเซ‡ เชตเชฟเช•เชพเชธ เชชเชฐ เชงเซเชฏเชพเชจ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช•เชฐเซ€ เชถเช•เซ‡. เชธเซเช•เชพเชซเซ‹เชฒเซเชก เชตเชฟเชถเซ‡ เชถเซเช‚ เชฐเชธเชชเซเชฐเชฆ เชนเซ‹เชˆ เชถเช•เซ‡? เชœเซ‡เชฎ เชœเซ‡เชฎ เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡, เชคเซ‡เชจเซ€ เชชเชพเชธเซ‡ เชคเซ‡เชจเซ€ เชธเซเชฒเซ€เชตเชฎเชพเช‚ เช•เซ‡เชŸเชฒเซ€เช• เชฏเซเช•เซเชคเชฟเช“ เช›เซ‡ เชœเซ‡ เชคเซ‡เชจเซ‡ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพ เช…เชจเซ‡ เช•เชฆเชพเชš เช‘เชชเชฐเซ‡เชถเชจ เชเชจเซเชœเชฟเชจเชฟเชฏเชฐ เชฎเชพเชŸเซ‡ เชเช• เชถเช•เซเชคเชฟเชถเชพเชณเซ€ เชธเชพเชงเชจ เชฌเชจเชพเชตเซ€ เชถเช•เซ‡ เช›เซ‡. เชšเชพเชฒเซ‹ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช…เชจเซ‡ เชคเซ‡เชจเซ€ เช•เซเชทเชฎเชคเชพเช“เชฅเซ€ เชชเชฐเชฟเชšเชฟเชค เชฅเชˆเช.

NB: เชฎเชพเชฐเซเช— เชฆเซเชตเชพเชฐเชพ, เช…เชฎเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เช…เชฎเชพเชฐเชพ เชœเชจเชฐเชฒเชฎเชพเช‚ เชธเซเช•เชพเชซเซ‹เชฒเซเชก เชตเชฟเชถเซ‡ เชŸเซ‚เช‚เช•เชฎเชพเช‚ เชตเชพเชค เช•เชฐเซ€ เช›เซ‡ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพ เชธเชพเชงเชจเซ‹เชจเซ€ เชธเชฎเซ€เช•เซเชทเชพ, เชœเซ‡เชฎเชจเซเช‚ เชœเซ€เชตเชจ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒเซเช‚ เช›เซ‡.

เชฅเชฟเชฏเชฐเซ€. เชนเซ‡เชคเซ เช…เชจเซ‡ เช•เซเชทเชฎเชคเชพเช“

เชคเซ‡เชฅเซ€, เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช•เชนเซ€เช เชคเซ‹, Skaffold CI/CD เชšเช•เซเชฐเชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชธเชฎเชธเซเชฏเชพเชจเซ‡ เชนเชฒ เช•เชฐเซ‡ เช›เซ‡ (เชฌเชฟเชฒเซเชก, เชชเซเชถ, เชกเชฟเชชเซเชฒเซ‹เชฏ เชธเซเชŸเซ‡เชœ เชชเชฐ), เชกเซ‡เชตเชฒเชชเชฐเชจเซ‡ เชชเซเชฐเซ‹เชฎเซเชชเซเชŸ เชซเซ€เชกเชฌเซ‡เช• เช“เชซเชฐ เช•เชฐเซ‡ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡. เช…เชจเซเช—เชพเชฎเซ€ เช•เซ‹เชก เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ เชเชกเชชเชฅเซ€ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ - เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชšเชพเชฒเชคเซ€ เช…เชชเชกเซ‡เชŸ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเชพ เชธเซเชตเชฐเซ‚เชชเชฎเชพเช‚. เช…เชจเซ‡ เชคเซ‡ เชตเชฟเชตเชฟเชง เชธเชฐเซเช•เชฟเชŸเชฎเชพเช‚ เช•เชพเชฎ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ (เชฆเซ‡เชต, เชธเซเชŸเซ‡เชœ, เช‰เชคเซเชชเชพเชฆเชจ...), เชœเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชธเซเช•เชพเชซเซ‹เชฒเซเชก เชฐเซ‹เชฒเช†เช‰เชŸ เชฎเชพเชŸเซ‡ เช…เชจเซเชฐเซ‚เชช เชชเชพเช‡เชชเชฒเชพเช‡เชจเซเชธเชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเซ‡ เช›เซ‡.

เชธเซเช•เชพเชซเซ‹เชฒเซเชกเชจเซ‹ เชธเซ‹เชฐเซเชธ เช•เซ‹เชก เช—เซ‹เชฎเชพเช‚ เชฒเช–เชพเชฏเซ‡เชฒเซ‹ เช›เซ‡, เชฆเซเชตเชพเชฐเชพ เชตเชฟเชคเชฐเชฟเชค เชฎเชซเชค เช…เชชเชพเชšเซ‡ เชฒเชพเช‡เชธเชจเซเชธ 2.0 (GitHub) เชนเซ‡เช เชณ.

เชšเชพเชฒเซ‹ เชฎเซเช–เซเชฏ เช•เชพเชฐเซเชฏเซ‹ เช…เชจเซ‡ เชฒเช•เซเชทเชฃเซ‹ เชœเซ‹เชˆเช. เชชเซเชฐเชฅเชฎเชฎเชพเช‚ เชจเซ€เชšเซ‡เชจเชพเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡:

  • เชธเซเช•เชพเชซเซ‹เชฒเซเชก CI/CD เชชเชพเช‡เชชเชฒเชพเช‡เชจเซเชธ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเชพเชงเชจเซ‹ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡.
  • เชคเชฎเชจเซ‡ เชฌเซ‡เช•เช—เซเชฐเชพเช‰เชจเซเชกเชฎเชพเช‚ เชธเซ‹เชฐเซเชธ เช•เซ‹เชกเชฎเชพเช‚ เชฅเชคเชพ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซ‡ เชฎเซ‹เชจเชฟเชŸเชฐ เช•เชฐเชตเชพเชจเซ€ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชˆเชฎเซ‡เชœเซ€เชธเชฎเชพเช‚ เช•เซ‹เชก เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเชตเชพเชจเซ€ เช“เชŸเซ‹เชฎเซ‡เชŸเซ‡เชก เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชšเชฒเชพเชตเชตเชพเชจเซ€, เช† เชˆเชฎเซ‡เชœเซ‹เชจเซ‡ เชกเซ‹เช•เชฐ เชฐเชœเชฟเชธเซเชŸเซเชฐเซ€เชฎเชพเช‚ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพเชจเซ€ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชกเชฟเชชเซเชฒเซ‹เชฏ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.
  • เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เชจเชฟเชฐเซเชฆเซ‡เชถเชฟเช•เชพ เชธเชพเชฅเซ‡ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเซ‡ เช›เซ‡.
  • เช•เชจเซเชŸเซ‡เชจเชฐ-เชธเซเชŸเซเชฐเช•เซเชšเชฐ-เชŸเซ‡เชธเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช†เชชเชฎเซ‡เชณเซ‡ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซ‡ เช›เซ‡.
  • เชชเซ‹เชฐเซเชŸ เชซเซ‹เชฐเชตเชฐเซเชก เช•เชฐเซ‡ เช›เซ‡.
  • เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชšเชพเชฒเชคเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเชพ เชฒเซ‹เช— เชตเชพเช‚เชšเซ‡ เช›เซ‡.
  • Java, Node.js, Python, Go เชฎเชพเช‚ เชฒเช–เชพเชฏเซ‡เชฒ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชกเซ€เชฌเช— เช•เชฐเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเซ‡ เช›เซ‡.

เชนเชตเซ‡ เชฒเช•เซเชทเชฃเซ‹ เชตเชฟเชถเซ‡:

  • เชธเซเช•เชพเชซเซ‹เชฒเซเชกเชฎเชพเช‚ เชชเซ‹เชคเซ‡ เช•เซ‹เชˆ เช•เซเชฒเชธเซเชŸเชฐ-เชธเชพเช‡เชก เช˜เชŸเช•เซ‹ เชจเชฅเซ€. เชเชŸเชฒเซ‡ เช•เซ‡, เช† เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเซ‡ เชตเชงเซ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€.
  • เชคเชฎเชพเชฐเซ€ เช…เชฐเชœเซ€ เชฎเชพเชŸเซ‡ เชตเชฟเชตเชฟเชง เชชเชพเช‡เชชเชฒเชพเช‡เชจเซเชธ. เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เชตเชฟเช•เชพเชธ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เชนเซ‹เชต เชคเซเชฏเชพเชฐเซ‡ เชถเซเช‚ เชคเชฎเชพเชฐเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชฎเชฟเชจเซ€เช•เซเชฏเซเชฌ เชชเชฐ เช•เซ‹เชก เชฐเซ‹เชฒ เช†เช‰เชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช…เชจเซ‡ เชชเช›เซ€ เชธเซเชŸเซ‡เชœ เช…เชฅเชตเชพ เชชเซเชฐเซ‹เชกเช•เซเชถเชจ เชฎเชพเชŸเซ‡? เช† เชนเซ‡เชคเซ เชฎเชพเชŸเซ‡ เชคเซเชฏเชพเช‚ เช›เซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช“ เช…เชจเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเซ‹, เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒเซ‹ เช…เชจเซ‡ เชซเซเชฒเซ‡เช—เซเชธ, เชœเซ‡ เชคเชฎเชจเซ‡ เชเช• เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เชตเชฟเชตเชฟเชง เชชเชพเช‡เชชเชฒเชพเช‡เชจเซเชธเชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.
  • CLI. YAML เชฎเชพเช‚ เชฎเชพเชคเซเชฐ เช•เชจเซเชธเซ‹เชฒ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพ เช…เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€เช“. เช‡เชจเซเชŸเชฐเชจเซ‡เชŸ เชชเชฐ เชคเชฎเซ‡ เชฌเชจเชพเชตเชตเชพเชจเชพ เชชเซเชฐเชฏเชพเชธเซ‹เชจเชพ เชธเช‚เชฆเชฐเซเชญเซ‹ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹ เชชเซเชฐเชพเชฏเซ‹เช—เชฟเช• GUI, เชœเซ‹ เช•เซ‡, เช† เช•เซเชทเชฃเซ‡ เชฎเซ‹เชŸเซ‡ เชญเชพเช—เซ‡ เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เช•เซ‹เชˆเชจเซ‡ เชคเซ‡เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชชเชฐเช‚เชคเซ เช–เชฐเซ‡เช–เชฐ เชจเชนเซ€เช‚.
  • เชฎเซ‹เชกเซเชฏเซเชฒเชฐเชฟเชŸเซ€. เชธเซเช•เชพเชซเซ‹เชฒเซเชก เช เชเช•เชฒ เชนเชพเชฐเซเชตเซ‡เชธเซเชŸเชฐ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชšเซ‹เช•เซเช•เชธ เช•เชพเชฐเซเชฏเซ‹ เชฎเชพเชŸเซ‡ เชตเซเชฏเช•เซเชคเชฟเช—เชค เชฎเซ‹เชกเซเชฏเซเชฒเซ‹ เช…เชฅเชตเชพ เชนเชพเชฒเชจเชพ เช‰เช•เซ‡เชฒเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‡ เช›เซ‡.

เชฌเชพเชฆเชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ:

  • เชเชธเซ‡เชฎเซเชฌเชฒเซ€เชจเชพ เชคเชฌเช•เซเช•เซ‡ เชคเชฎเซ‡ เช†เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹:
    • เชกเซ‹เช•เชฐ เชฌเชฟเชฒเซเชก เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡, เช•เชจเชฟเช•เซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เช…เชฅเชตเชพ เช—เซ‚เช—เชฒ เช•เซเชฒเชพเช‰เชก เชฌเชฟเชฒเซเชกเชฎเชพเช‚;
    • เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เชฌเซ‡เชเชฒ;
    • Jib Maven เช…เชจเซ‡ Jib Gradle เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เช…เชฅเชตเชพ Google เช•เซเชฒเชพเช‰เชก เชฌเชฟเชฒเซเชกเชฎเชพเช‚;
    • เช•เชธเซเชŸเชฎ เชฌเชฟเชฒเซเชก เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เชšเชพเชฒเซ‡ เช›เซ‡. เชœเซ‹ เชคเชฎเชพเชฐเซ‡ เชฌเซ€เชœเซเช‚ (เชตเชงเซ เชฒเชตเชšเซ€เช•/เชชเชฐเชฟเชšเชฟเชค/...) เชฌเชฟเชฒเซเชก เชธเซ‹เชฒเซเชฏเซเชถเชจ เชšเชฒเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชฎเชพเช‚ เชตเชฐเซเชฃเชตเซ‡เชฒ เช›เซ‡ เชœเซ‡เชฅเซ€ เชธเซเช•เชพเชซเซ‹เชฒเซเชก เชคเซ‡เชจเซ‡ เชฒเซ‹เชจเซเชš เช•เชฐเซ‡ (เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃเชฎเชพเช‚เชฅเซ€ เช‰เชฆเชพเชนเชฐเชฃ). เช† เชคเชฎเชจเซ‡ เช•เซ‹เชˆเชชเชฃ เช•เชฒเซ‡เช•เซเชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡ เชœเซ‡เชจเซ‡ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เชนเซ€ เชถเช•เชพเชฏ;
  • เชชเชฐเซ€เช•เซเชทเชฃ เชคเชฌเช•เซเช•เซ‡, เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เช•เชจเซเชŸเซ‡เชจเชฐ-เชธเซเชŸเซเชฐเช•เซเชšเชฐ-เชŸเซ‡เชธเซเชŸ;
  • เชœเชฎเชพเชตเชŸ เชฎเชพเชŸเซ‡ เชจเซ€เชšเซ‡ เช†เชชเซ‡เชฒ เช›เซ‡:
    • เช•เซเชฌเซ‡เช•เซเชŸเชฒ;
    • เชธเซเช•เชพเชจ;
    • เช•เชธเซเชŸเชฎเชพเช‡เช เช•เชฐเซ‹.

เช†เชจเซ‹ เช†เชญเชพเชฐ, เชธเซเช•เชพเชซเซ‹เชฒเซเชกเชจเซ‡ เช…เชจเชจเซเชฏ เช•เชนเซ€ เชถเช•เชพเชฏ เชธเซ€เช†เชˆ/เชธเซ€เชกเซ€ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซเช‚ เชฎเชพเชณเช–เซเช‚. เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชตเชฐเซเช•เชซเซเชฒเซ‹เชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ เช…เชนเซ€เช‚ เช›เซ‡ (เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃเชฎเชพเช‚เชฅเซ€):

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเชพ เชตเชฟเช•เชพเชธ เชฎเชพเชŸเซ‡ เชธเซเช•เชพเชซเซ‹เชฒเซเชกเชจเซ€ เชธเชฎเซ€เช•เซเชทเชพ

เชธเชพเชฎเชพเชจเซเชฏ เชฆเซเชฐเชทเซเชŸเชฟเช เชธเซเช•เชพเชซเซ‹เชฒเซเชกเชจเซเช‚ เช•เชพเชฐเซเชฏ เช•เซ‡เชตเซเช‚ เชฆเซ‡เช–เชพเชฏ เช›เซ‡?

  1. เชฏเซเชŸเชฟเชฒเชฟเชŸเซ€ เชธเซ‹เชฐเซเชธ เช•เซ‹เชก เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซ‡ เชฎเซ‹เชจเชฟเชŸเชฐ เช•เชฐเซ‡ เช›เซ‡. เชœเซ‹ เชซเชพเช‡เชฒเซ‹เชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‹ เชคเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชชเซ‹เชก เชธเชพเชฅเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เชฅเชพเชฏ เช›เซ‡. เชœเซ‹ เชถเช•เซเชฏ เชนเซ‹เชฏ เชคเซ‹, เช›เชฌเซ€เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ. เชจเชนเชฟเช‚เชคเชฐ, เชเช• เชจเชตเซ€ เช›เชฌเซ€ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.
  2. เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเซ‡เชฒเซ€ เช›เชฌเซ€ เช•เชจเซเชŸเซ‡เชจเชฐ-เชธเซเชŸเซเชฐเช•เซเชšเชฐ-เชŸเซ‡เชธเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเชชเชพเชธเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชŸเซ‡เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชกเซ‹เช•เชฐ เชฐเชœเชฟเชธเซเชŸเซเชฐเซ€เชฎเชพเช‚ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.
  3. เช† เชชเช›เซ€, เช›เชฌเซ€ เชœเชฎเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ - เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชคเซˆเชจเชพเชค.
  4. เชœเซ‹ เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฒเซ‹เชจเซเชš เชถเชฐเซ‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚ skaffold dev, เชชเช›เซ€ เช…เชฎเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฎเชพเช‚เชฅเซ€ เชฒเซ‹เช—เซเชธ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ€เช เช›เซ€เช, เช…เชจเซ‡ Skaffold เชฌเชงเซ€ เช•เซเชฐเชฟเชฏเชพเช“เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซ€ เชฐเชพเชน เชœเซเช เช›เซ‡.

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเชพ เชตเชฟเช•เชพเชธ เชฎเชพเชŸเซ‡ เชธเซเช•เชพเชซเซ‹เชฒเซเชกเชจเซ€ เชธเชฎเซ€เช•เซเชทเชพ
เชธเซเช•เชพเชซเซ‹เชฒเซเชก เช“เชชเชฐเซ‡เชถเชจเชจเชพ เชฎเซเช–เซเชฏ เชคเชฌเช•เซเช•เชพเช“เชจเซเช‚ เชšเชฟเชคเซเชฐเชฃ

เชชเซเชฐเซ‡เช•เซเชŸเชฟเชธ เช•เชฐเซ‹. Skaffold เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชธเซเช•เชพเชซเซ‹เชฒเซเชกเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฆเชฐเซเชถเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชนเซเช‚ เชเช• เช‰เชฆเชพเชนเชฐเชฃ เชฒเชˆเชถ 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 เช† เช•เซ‹เชกเชจเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ Go เช•เซ‹เชก เช…เชจเซ‡ เชธเชฐเชณ เชกเซ‹เช•เชฐเชซเชพเชˆเชฒเซเชธ เชงเชฐเชพเชตเซ‡ เช›เซ‡:

~/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/, เชเชŸเชฒเซ‡ เช•เซ‡ เชœเซ‡ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚ เช›เชฌเซ€ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡ เชคเซ‡ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เช›เซ‡.
  • เชœเชฎเชพเชตเชŸเชจเชพ เชคเชฌเช•เซเช•เซ‡, เชคเซ‡ เชจเช•เซเช•เซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช•เซ‡ เช…เชฎเซ‡ เชœเชฐเซ‚เชฐเซ€ เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸ เชฎเชพเชŸเซ‡ kubectl เช…เชจเซ‡ เชฎเชพเชธเซเช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚.
  • PortForward: เช†เชชเชฃเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชชเซ‹เชฐเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชซเซ‹เชฐเชตเชฐเซเชก เช•เชฐเซ€เช เช›เซ€เช เชคเซ‡เชจเชพ เชœเซ‡เชตเซเช‚ เชœ kubectl port-forward, เช…เชฎเซ‡ เช† เช†เชฆเซ‡เชถเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ Skaffold เชจเซ‡ เชธเซ‚เชšเชจเชพเช“ เช†เชชเซ€เช เช›เซ€เช. เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชธเซเชฅเชพเชจเชฟเช• เชชเซ‹เชฐเซเชŸ 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, เชฎเชพเชคเซเชฐ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซเช‚ เชจเชฟเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชคเซเช‚ เชจเชฅเซ€), เชเช• เช…เชฒเช— เชฐเซ‚เชชเชฐเซ‡เช–เชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡.

เช•เชŸเชพเช•เซ‹เชกเชพ เชชเชฐ เช›เซ‡ เชจเซ‡เชคเซƒเชคเซเชต เช‰เชฆเชพเชนเชฐเชฃ เชธเชพเชฅเซ‡ เชคเซ‡ เชตเชงเซ เชธเชฐเชณ เช›เซ‡. เชชเชฐเช‚เชคเซ เชคเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ, เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช…เชจเซ‡ เชธเซเช•เชพเชซเซ‹เชฒเซเชก เชธเชพเชฅเซ‡ เชคเซˆเชฏเชพเชฐ เชธเซ‡เชจเซเชกเชฌเซ‹เช•เซเชธ เช“เชซเชฐ เช•เชฐเซ‡ เช›เซ‡. เชœเซ‹ เชคเชฎเชจเซ‡ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชพเชฌเชคเซ‹ เชœเชพเชคเซ‡ เช…เชœเชฎเชพเชตเชตเชพเชฎเชพเช‚ เชฐเชธ เชนเซ‹เชฏ เชคเซ‹ เชเช• เชธเชฐเชธ เชตเชฟเช•เชฒเซเชช.

เชธเซเช•เชพเชซเซ‹เชฒเซเชก เชฎเชพเชŸเซ‡ เชเช• เชธเช‚เชญเชตเชฟเชค เช‰เชชเชฏเซ‹เช—เชจเซ‹ เช•เซ‡เชธ เชฐเชฟเชฎเซ‹เชŸ เช•เซเชฒเชธเซเชŸเชฐ เชชเชฐ เชตเชฟเช•เชพเชธ เชนเชพเชฅ เชงเชฐเชตเชพเชจเซ‹ เช›เซ‡. เชฆเชฐเซ‡เช• เชœเชฃ เชชเซ‹เชคเชพเชจเชพ เชนเชพเชฐเซเชกเชตเซ‡เชฐ เชชเชฐ เชฎเชฟเชจเชฟเช•เซเชฏเซเชฌ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช†เชฐเชพเชฎเชฆเชพเชฏเช• เชจเชฅเซ€ เชนเซ‹เชคเซเช‚, เชชเช›เซ€ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจเชจเซ‡ เชฐเซ‹เชฒเช†เช‰เชŸ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ เชชเชฐเซเชฏเชพเชชเซเชค เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เชคเซ‡เชตเซ€ เช…เชชเซ‡เช•เซเชทเชพ เชฐเชพเช–เซ‡ เช›เซ‡... เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชธเซเช•เชพเชซเซ‹เชฒเซเชก เชธเชฎเชธเซเชฏเชพเชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃ เชฐเซ€เชคเซ‡ เชนเชฒ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชจเซ€ เชชเซเชทเซเชŸเชฟ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, Reddit เชเชจเซเชœเชฟเชจเชฟเชฏเชฐเซ‹ เชฆเซเชตเชพเชฐเชพ, เชœเซ‡เชฎ เช•เซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช›เซ‡. เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชšเชฐเซเชšเชพ เช•เชฐเซ€ เช›เซ‡ เชฒเช–เซเชฏเซเช‚ เช…เชฎเชพเชฐเชพ เชฌเซเชฒเซ‹เช—เชฎเชพเช‚.

เช…เชจเซ‡ เชธเชพเช‡เชจ เช† เชชเซเชฐเช•เชพเชถเชจ Weaveworks เชฎเชพเช‚เชฅเซ€ เชคเชฎเซ‡ เช‰เชคเซเชชเชพเชฆเชจ เชฎเชพเชŸเซ‡ เชชเชพเช‡เชชเชฒเชพเช‡เชจ เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹.

เชจเชฟเชทเซเช•เชฐเซเชท

เชธเซเช•เชพเชซเซ‹เชฒเซเชก เช เชชเชพเช‡เชชเชฒเชพเช‡เชจเซเชธ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซเช‚ เชเช• เช…เชจเซเช•เซ‚เชณ เชธเชพเชงเชจ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชฎเชพเชŸเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹ เชฐเซ‹เชฒ เช†เช‰เชŸ เช•เชฐเชตเชพเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ เชฎเซเช–เซเชฏเชคเซเชตเซ‡ เชตเชฟเช•เชพเชธเชจเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹ เชชเชฐ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช›เซ‡. เชคเซ‡ "เชŸเซ‚เช‚เช•เซ€" เชชเชพเช‡เชชเชฒเชพเช‡เชจ เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เช–เซ‚เชฌ เชธเชฐเชณ เชฌเชจเชพเชตเซ‡ เช›เซ‡ เชœเซ‡ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹เชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชœเซ‹ เช‡เชšเซเช›เชฟเชค เชนเซ‹เชฏ, เชคเซ‹ เชคเชฎเซ‡ เชฎเซ‹เชŸเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เช—เซ‹เช เชตเซ€ เชถเช•เซ‹ เช›เซ‹. CI/CD เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชฎเชพเช‚ เชธเซเช•เชพเชซเซ‹เชฒเซเชกเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเชพ เชธเซเชชเชทเซเชŸ เช‰เชฆเชพเชนเชฐเชฃเซ‹เชฎเชพเช‚เชจเชพ เชเช• เชคเชฐเซ€เช•เซ‡ เช†เชชเซ€ เชฆเซ€เชงเซ€ เช›เซ‡ เช†เชตเชพ เชชเชฐเซ€เช•เซเชทเชฃ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ, gRPC, Istio เช…เชจเซ‡ OpenCensus เชŸเซเชฐเซ‡เชธเชฟเช‚เช—เชจเซ€ เช•เซเชทเชฎเชคเชพเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ 10 เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธเชฎเชพเช‚เชฅเซ€.

เช—เชฟเชŸเชนเชฌ เชชเชฐ เชธเซเช•เชพเชซเซ‹เชฒเซเชก เชชเชพเชธเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชฒเช—เชญเช— 8000+ เชธเซเชŸเชพเชฐเซเชธ เช›เซ‡, เชคเซ‡ Google เชฆเซเชตเชพเชฐเชพ เชตเชฟเช•เชธเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‹ เชเช• เชญเชพเช— เช›เซ‡ Google Container Tools - เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เช† เช•เซเชทเชฃเซ‡ เชเชตเซเช‚ เชฎเชพเชจเชตเชพ เชฎเชพเชŸเซ‡ เชฆเชฐเซ‡เช• เช•เชพเชฐเชฃ เช›เซ‡ เช•เซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชชเช›เซ€เชฅเซ€ เช–เซเชถเซ€เชฅเซ€ เชตเชฟเช•เชพเชธ เช•เชฐเชถเซ‡.

PS

เช…เชฎเชพเชฐเชพ เชฌเซเชฒเซ‹เช— เชชเชฐ เชชเชฃ เชตเชพเช‚เชšเซ‹:

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹