เบ™เบณเปƒเบŠเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปƒเบ™เบ—เบปเปˆเบงเบซเบผเบฒเบเบเบธเปˆเบก Kubernetes เบ”เป‰เบงเบ Helm

Dailymotion เปƒเบŠเป‰ Kubernetes: เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™

เบžเบงเบเป€เบฎเบปเบฒเบขเบนเปˆเบ—เบตเปˆ Dailymotion เป€เบฅเบตเปˆเบกเปƒเบŠเป‰ Kubernetes เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ” 3 เบ›เบตเบเปˆเบญเบ™. เปเบ•เปˆเบเบฒเบ™เบ™เบณเปƒเบŠเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปƒเบ™เบ—เบปเปˆเบงเบเบธเปˆเบกเบซเบผเบฒเบเบเบธเปˆเบกเปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบกเปˆเบงเบ™, เบชเบฐเบ™เบฑเป‰เบ™ เปƒเบ™เป„เบฅเบเบฐเบชเบญเบ‡เบชเบฒเบกเบ›เบตเบœเปˆเบฒเบ™เบกเบฒเบ™เบตเป‰ เบžเบงเบเป€เบฎเบปเบฒเบžเบฐเบเบฒเบเบฒเบกเบ›เบฑเบšเบ›เบธเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบท เปเบฅเบฐเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เบกเบฑเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเปƒเบช

เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบซเป‰เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ™เบณเปƒเบŠเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบ—เบปเปˆเบงเบเบธเปˆเบก Kubernetes เบซเบผเบฒเบเบเบธเปˆเบกเบ—เบปเปˆเบงเป‚เบฅเบ.

เป€เบžเบทเปˆเบญเบ™เบณเปƒเบŠเป‰เบงเบฑเบ”เบ–เบธ Kubernetes เบซเบผเบฒเบเบญเบฑเบ™เบžเป‰เบญเบกเบเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ Helm, เปเบฅเบฐเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™ repository git เบ”เบฝเบง. เป€เบžเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰ stack เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบˆเบฒเบเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡, เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบญเบฑเบ™เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบชเบฐเบซเบผเบธเบš. เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบง, เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเบ›เบฐเบเบฒเบ”เบ„เบงเบฒเบกเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเปเบฅเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ API เปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฝเบง.

เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เป„เบ”เป‰เบ‚เบฝเบ™เบ•เบปเบงเบญเบฑเบเบชเบญเบ™ Python เบ™เป‰เบญเบเป†เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”เบ‚เบญเบ‡ Helm เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบเบฒเบ™เบเบงเบ”เบชเบญเบš, เบชเป‰เบฒเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡, เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบฅเบฑเบš, เปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เบงเบฝเบเบ‡เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเปƒเบ™เป€เบงเบ—เบต CI เบเบฒเบ‡เป‚เบ”เบเปƒเบŠเป‰เบฎเบนเบšเบžเบฒเบš docker.

เบ‚เปเปƒเบซเป‰เบกเบฒเบฎเบญเบ”เบˆเบธเบ”.

เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹. เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ—เปˆเบฒเบ™เบญเปˆเบฒเบ™เบ™เบตเป‰, เบœเบนเป‰เบชเบฐเบซเบกเบฑเบเบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเบ—เปเบฒเบญเบดเบ”เบชเปเบฒเบฅเบฑเบš Helm 3 เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบเบฒเบ”เปเบฅเป‰เบง. เบชเบฐเบšเบฑเบšเบ•เบปเป‰เบ™เบ•เปเบ›เบฐเบเบญเบšเบกเบตเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฒเบ‡เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบปเบšเปƒเบ™เบญเบฐเบ”เบตเบ”.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ•เบฒเบ•เบฐเบฅเบฒเบ‡

เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบชเบฒเบ‚เบฒเบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ™เปเบฒเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡.

  • เบชเบฒเบ‚เบฒ dev เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบ—เบปเบ”เบชเบญเบšเปƒเบ™เบเบธเปˆเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ.
  • เป€เบกเบทเปˆเบญเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡เบ–เบทเบเบชเบปเปˆเบ‡เบเบฑเบš เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš, เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ–เบทเบเบเบงเบ”เบเบฒเบขเบนเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™.
  • เบชเบธเบ”เบ—เป‰เบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเบฒเบ‚เบฒ เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™ เปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰เบžเบงเบเบกเบฑเบ™เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”.

เปเบ•เปˆเบฅเบฐเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบกเบตเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบชเปˆเบงเบ™เบ•เบปเบงเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบ—เบตเปˆเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ เบซเปเบžเบดเบžเบดเบ—เบฐเบžเบฑเบ™ Chartmuseum เบ”เป‰เบงเบ APIs เบ—เบตเปˆเบกเบตเบ›เบฐเป‚เบซเบเบ”เบซเบผเบฒเบ. เบงเบดเบ—เบตเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเป‚เบ”เบ”เบ”เปˆเบฝเบงเบขเปˆเบฒเบ‡เป€เบ‚เบฑเป‰เบกเบ‡เบงเบ”เบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ•เบปเบงเบˆเบดเบ‡เบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบžเบงเบเบกเบฑเบ™เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”.

เบ„เบฑเบ‡เป€เบเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™

เบกเบฑเบ™เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเป€เบกเบทเปˆเบญเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบธเบเบเบนเป‰เบชเบฒเบ‚เบฒ dev, เบชเบฐเบšเบฑเบšเบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบˆเบฐเบ–เบทเบ pushed เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป„เบ›เบซเบฒ dev Chartmuseum. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบŠเป‰ dev repository เบ”เบฝเบงเบเบฑเบ™, เปเบฅเบฐเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบเปเบฒเบ™เบปเบ”เบชเบฐเบšเบฑเบšเบžเบฒเบชเบฒเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบขเปˆเบฒเบ‡เบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เปƒเบŠเป‰เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เบ„เบปเบ™เบญเบทเปˆเบ™เป‚เบ”เบเบšเบฑเบ‡เป€เบญเบตเบ™.

เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, script Python เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบเบงเบ”เบชเบญเบšเบงเบฑเบ”เบ–เบธ Kubernetes เบ•เปเปˆเบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบˆเปเบฒเป€เบžเบฒเบฐ Kubernetes OpenAPI เป‚เบ”เบเปƒเบŠเป‰ Kubeval, เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบœเบตเบเปเบœเปˆเบžเบงเบเบกเบฑเบ™เบขเบนเปˆเปƒเบ™ Chartmusem.

เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ—เบปเปˆเบงเป„เบ›เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ•เบฒเบ•เบฐเบฅเบฒเบ‡

  1. เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เบงเบฝเบโ€‹เบ‡เบฒเบ™โ€‹เบ—เปเปˆโ€‹เบ•เบฒเบกโ€‹เบชเบฐโ€‹เป€เบžเบฒเบฐโ€‹ gazr.io เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ„เบธเบ™เบ™เบฐเบžเบฒเบš (lint, unit-test).
  2. เบเบฒเบ™เบŠเบธเบเบเบนเป‰เบฎเบนเบšเบžเบฒเบš docker เบ”เป‰เบงเบเป€เบ„เบทเปˆเบญเบ‡เบกเบท Python เบ—เบตเปˆเบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.
  3. เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเป‚เบ”เบเบŠเบทเปˆเบชเบฒเบ‚เบฒ.
  4. เบเบฒเบ™เบเบงเบ”เบชเบญเบšเป„เบŸเบฅเปŒ Kubernetes yaml เป‚เบ”เบเปƒเบŠเป‰ Kubeval.
  5. เป€เบžเบตเปˆเบกเบชเบฐเบšเบฑเบšเบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปเบฅเบฐเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบซเบผเบฑเบเบ‚เบญเบ‡เบกเบฑเบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ” (เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡).
  6. เบเบฒเบ™เบชเบปเปˆเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป„เบ›เบซเบฒ Chartmuseum เบ—เบตเปˆเบเบปเบ‡เบเบฑเบšเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ‚เบญเบ‡เบกเบฑเบ™

เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เปƒเบ™เบ—เบปเปˆเบงเบเบธเปˆเบก

เบชเบฐเบซเบฐเบžเบฑเบ™เบเบณเบกเบฐเบšเบฒเบ™

เบกเบตเป€เบงเบฅเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ เบชเบฐเบซเบฐเบžเบฑเบ™เบ‚เบญเบ‡เบเบธเปˆเบก Kubernetes, เบšเปˆเบญเบ™เบ—เบตเปˆเบงเบฑเบ”เบ–เบธ Kubernetes เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบฐเบเบฒเบ”เบˆเบฒเบเบˆเบธเบ”เบชเบดเป‰เบ™เบชเบธเบ” API เบ”เบฝเบง. เปเบ•เปˆเบšเบฑเบ™เบซเบฒเป€เบเบตเบ”เบ‚เบถเป‰เบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบšเบฒเบ‡เบงเบฑเบ”เบ–เบธ Kubernetes เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบชเป‰เบฒเบ‡เบขเบนเปˆเปƒเบ™เบˆเบธเบ”เบชเบดเป‰เบ™เบชเบธเบ”เบ‚เบญเบ‡เบชเบฐเบซเบฐเบžเบฑเบ™, เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเบฎเบฑเบเบชเบฒเบงเบฑเบ”เบ–เบธเบชเบฐเบซเบฐเบžเบฑเบ™เปเบฅเบฐเบงเบฑเบ”เบ–เบธเบญเบทเปˆเบ™เป†เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบเบธเปˆเบก.

เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบˆเบฑเบ”เบเบฒเบ™เบเบธเปˆเบกเบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบ (เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบชเบฐเบšเบฑเบšเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบชเบฐเบซเบฐเบžเบฑเบ™; เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบญเบฒเบ”เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบ„เบฑเป‰เบ‡เบ—เบตเบชเบญเบ‡).

เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเบ—เบตเปˆเปเบˆเบเบขเบฒเบเบ—เบฒเบ‡เบžเบนเบกเบชเบฒเบ”

เบ›เบฐเบˆเบธเบšเบฑเบ™เปเบžเบฅเบ”เบŸเบญเบกเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ–เบทเบเปเบˆเบเบขเบฒเบเปƒเบ™เบ—เบปเปˆเบง 6 เบžเบฒเบเบžเบทเป‰เบ™ - 3 เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เปเบฅเบฐ 3 เปƒเบ™เบ„เบฅเบฒเบง.


เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบเบฒเบ™โ€‹เปเบˆเบโ€‹เบขเบฒเบโ€‹

เบ„เบธเบ™เบ„เปˆเบฒเบ—เบปเปˆเบงเป‚เบฅเบ

4 เบ„เปˆเบฒ Helm เบ—เบปเปˆเบงเป‚เบฅเบเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบธเปˆเบก. เปเบœเบ™เบงเบฒเบ”เบ—เบฑเบ‡เปเบปเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เปˆเบฒเบ‚เบฑเป‰เบ™เบ•เปˆเบณเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

global:
  cloud: True
  env: staging
  region: us-central1
  clusterName: staging-us-central1

เบ„เบธเบ™เบ„เปˆเบฒเบ—เบปเปˆเบงเป‚เบฅเบ

เบ„เบธเบ™เบ„เปˆเบฒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบŠเปˆเบงเบเบเปเบฒเบ™เบปเบ”เบชเบฐเบžเบฒเบšเบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบฅเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ•เปˆเบฒเบ‡เป†: เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก, เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก, เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบ, เบเบฒเบ™เป‚เบ—เบซเบฒเบžเบฒเบเบ™เบญเบ, เบเบฒเบ™เบ›เบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”, เปเบฅเบฐเบญเบทเปˆเบ™เป†.

  • "cloud": เบžเบงเบเป€เบฎเบปเบฒเบกเบตเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Kubernetes เบ›เบฐเบชเบปเบก. เบ•เบปเบงเบขเปˆเบฒเบ‡, API เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ–เบทเบเบ™เบณเปƒเบŠเป‰เปƒเบ™เป€เบ‚เบ” GCP เปเบฅเบฐเปƒเบ™เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.
  • "env": เบšเบฒเบ‡เบ„เปˆเบฒเบญเบฒเบ”เบˆเบฐเบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเปเบฒเบฅเบฑเบšเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปเบฅเบฐเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”.
  • "เบžเบฒเบเบžเบทเป‰เบ™": เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เบŠเปˆเบงเบเบเปเบฒเบ™เบปเบ”เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ‚เบญเบ‡เบเบธเปˆเบกเปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบˆเบธเบ”เบชเบดเป‰เบ™เบชเบธเบ”เปƒเบเป‰เบ„เบฝเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบžเบฒเบเบ™เบญเบ.
  • "clusterName": เบ–เป‰เบฒเปเบฅเบฐเป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ„เปˆเบฒเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบเบธเปˆเบก.

เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบชเบฐเป€เบžเบฒเบฐ:

{{/* Returns Horizontal Pod Autoscaler replicas for GraphQL*/}}
{{- define "graphql.hpaReplicas" -}}
{{- if eq .Values.global.env "prod" }}
{{- if eq .Values.global.region "europe-west1" }}
minReplicas: 40
{{- else }}
minReplicas: 150
{{- end }}
maxReplicas: 1400
{{- else }}
minReplicas: 4
maxReplicas: 20
{{- end }}
{{- end -}}

เบ•เบปเบงเบขเปˆเบฒเบ‡เปเบกเปˆเปเบšเบšเบ‚เบญเบ‡ Helm

เป€เบซเบ”เบœเบปเบ™เบ™เบตเป‰เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เปเบกเปˆเปเบšเบšเบœเบนเป‰เบŠเปˆเบงเบเป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™ cluttering Kubernetes YAML.

เบ›เบฐเบเบฒเบ”เบชเบฐเปเบฑเบ

เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบซเบผเบฒเบเป„เบŸเบฅเปŒ YAML. เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบเบฒเบ”เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปเบฅเบฐ topology เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบกเบฑเบ™ (เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ replicas) เปƒเบ™เบเบธเปˆเบก.

releases:
  - foo.world

foo.world:                # Release name
  services:               # List of dailymotion's apps/projects
    foobar:
      chart_name: foo-foobar
      repo: [email protected]:dailymotion/foobar
      contexts:
        prod-europe-west1:
          deployments:
            - name: foo-bar-baz
              replicas: 18
            - name: another-deployment
              replicas: 3

เบ™เบดเบเบฒเบกเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™

เบ™เบตเป‰เปเบกเปˆเบ™เป‚เบ„เบ‡เบฎเปˆเบฒเบ‡เบ‚เบญเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบเบณเบ™เบปเบ”เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบชเบธเบ”โ€‹เบ—เป‰เบฒเบโ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹เบเบฑเบšโ€‹เบซเบผเบฒเบโ€‹เบเบธเปˆเบกโ€‹เบ„เบปเบ™โ€‹เบ‡เบฒเบ™โ€‹เบžเป‰เบญเบกโ€‹เบเบฑเบ™โ€‹.


เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบ™เบณเปƒเบŠเป‰ Jenkins

เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบฅเบฑเบš?

เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž, เบžเบงเบเป€เบฎเบปเบฒเบ•เบดเบ”เบ•เบฒเบกเบ„เบงเบฒเบกเบฅเบฑเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฒเบเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปเบฅเบฐเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบขเบนเปˆเปƒเบ™ vault เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบ Vault เปƒเบ™เบ›เบฒเบฃเบต.

เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบˆเบฑเบ”เบงเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเบเบฑเบ”เป€เบญเบปเบฒเบ„เปˆเบฒเบฅเบฑเบšเบˆเบฒเบ Vault เปเบฅเบฐ, เป€เบกเบทเปˆเบญเป€เบงเบฅเบฒเบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบกเบฒเบฎเบญเบ”, เปƒเบชเปˆเบžเบงเบเบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ Helm.

เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เปเบœเบ™เบ—เบตเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡เบ„เบงเบฒเบกเบฅเบฑเบšเปƒเบ™ Vault เปเบฅเบฐเบ„เบงเบฒเบกเบฅเบฑเบšเบ—เบตเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™:

secrets:                                                                                                                                                                                                        
     - secret_id: "stack1-app1-password"                                                                                                                                                                                  
       contexts:                                                                                                                                                                                                   
         - name: "default"                                                                                                                                                                                         
           vaultPath: "/kv/dev/stack1/app1/test"                                                                                                                                                               
           vaultKey: "password"                                                                                                                                                                                    
         - name: "cluster1"                                                                                                                                                                           
           vaultPath: "/kv/dev/stack1/app1/test"                                                                                                                                                               
           vaultKey: "password"

  • เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบšเบฑเบ™เบ—เบถเบเบ„เบงเบฒเบกเบฅเบฑเบšเบขเบนเปˆเปƒเบ™ Vault.
  • เบ–เป‰เบฒเบ„เบงเบฒเบกเบฅเบฑเบšเปƒเบŠเป‰ เบ•เปเปˆเบเบฑเบšเบšเปเบฅเบดเบšเบปเบ”เบชเบฐเป€เบžเบฒเบฐ เบซเบผเบทเบเบธเปˆเบก, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบžเบตเปˆเบกเบฅเบฒเบเบเบฒเบ™เบชเบฐเป€เบžเบฒเบฐ. (เบ—เบตเปˆเบ™เบตเป‰ context cluster1 เบกเบตเบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบชเปเบฒเบฅเบฑเบš stack-app1-password เบฅเบฑเบš).
  • เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ„เปˆเบฒเปเบกเปˆเบ™เปƒเบŠเป‰ เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.
  • เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบฅเบฒเบเบเบฒเบ™เปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ™เบตเป‰เปƒเบ™ Kubernetes เบ„เบงเบฒเบกเบฅเบฑเบš เบ„เบนเปˆเบ„เบต-เบ„เปˆเบฒเบ–เบทเบเปƒเบชเปˆ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปเบกเปˆเปเบšเบšเบฅเบฑเบšเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบ.

apiVersion: v1
data:
{{- range $key,$value := .Values.secrets }}
  {{ $key }}: {{ $value | b64enc | quote }}
{{ end }}
kind: Secret
metadata:
  name: "{{ .Chart.Name }}"
  labels:
    chartVersion: "{{ .Chart.Version }}"
    tillerVersion: "{{ .Capabilities.TillerVersion.SemVer }}"
type: Opaque

เบšเบฑเบ™เบซเบฒเปเบฅเบฐเบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”

เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบซเบผเบฒเบ repositories

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเปเบเบเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปเบฅเบฐเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบชเบญเบ‡ git repositories: เบซเบ™เบถเปˆเบ‡เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ, เปเบฅเบฐเบซเบ™เบถเปˆเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เบญเบ‡เบ•เบปเบ™เบเบฑเบš Kubernetes. 2 git repositories เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ 2 workflows, เปเบฅเบฐเบกเบฑเบ™เบ‡เปˆเบฒเบเบชเปเบฒเบฅเบฑเบšเบกเบทเปƒเบซเบกเปˆเบ—เบตเปˆเบˆเบฐเบชเบฑเบšเบชเบปเบ™.

เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบปเปˆเบงเป„เบ›เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบ

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบเปˆเบฒเบงเปเบฅเป‰เบง, เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบปเปˆเบงเป„เบ›เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰เบซเบผเบฒเบเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบขเปˆเบฒเบ‡เป„เบงเบงเบฒ. เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ --reuse-valuesเป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบœเปˆเบฒเบ™เบ„เปˆเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบปเปˆเบงเป„เบ›เบ™เบตเป‰.

เปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบžเบฝเบ‡เปเบ•เปˆเบชเบญเบ‡เบ„เปˆเบฒเบ—เบตเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบ›เบฑเบ™เบ›เบปเบเบเบฐเบ•เบด: เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ replicas เปเบฅเบฐ tag เบฎเบนเบšเบžเบฒเบš (เบชเบฐเบšเบฑเบš). เบญเบทเปˆเบ™, เบ„เปˆเบฒเบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบซเบผเบฒเบเปเบกเปˆเบ™เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡, เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบเบฒเบ. เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบญเบฑเบ™เปœเบถเปˆเบ‡เปƒเบ™เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบปเปˆเบงเป„เบ›เบชเบฒเบกเบฒเบ”เบ™เบณเป„เบ›เบชเบนเปˆเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบงเบ—เบตเปˆเบฎเป‰เบฒเบเปเบฎเบ‡, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบซเบฑเบ™เบˆเบฒเบเบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบ‡.

เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบซเบผเบฒเบเบญเบฑเบ™

เป€เบกเบทเปˆเบญเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบžเบตเปˆเบกเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปƒเบซเบกเปˆ, เบฅเบฒเบงเบ•เป‰เบญเบ‡เบ›เปˆเบฝเบ™เป„เบŸเบฅเปŒเบซเบผเบฒเบ: เบเบฒเบ™เบ›เบฐเบเบฒเบ”เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบฅเบฒเบเบŠเบทเปˆเบ„เบงเบฒเบกเบฅเบฑเบš, เป€เบžเบตเปˆเบกเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ–เป‰เบฒเบกเบฑเบ™เบ–เบทเบเบฅเบงเบกเบขเบนเปˆเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบปเปˆเบงเป„เบ›.

เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ” Jenkins เปเบกเปˆเบ™เบ‚เบฐเบซเบเบฒเบเป€เบเบตเบ™เป„เบ›เปƒเบ™ Vault

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบซเบ™เบถเปˆเบ‡ AppRole, เป€เบŠเบดเปˆเบ‡เบญเปˆเบฒเบ™เบ„เบงเบฒเบกเบฅเบฑเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฒเบ Vault.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™ rollback เบšเปเปˆเปเบกเปˆเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”

เป€เบžเบทเปˆเบญ rollback, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบ™เบซเบผเบฒเบ clusters, เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™ fraught เบกเบตเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”. เบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ™เบตเป‰เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒ ID เบชเบฐเบšเบฑเบšเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ–เบทเบเบฅเบฐเบšเบธ.

เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบเป‰เบฒเบงเป„เบ›เบชเบนเปˆ GitOps

เป€เบ›เบปเป‰เบฒOurเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ

เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฑเบšเบ„เบทเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเบฑเบš repository เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบกเบฑเบ™ deploy.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบˆเบฐเบ„เบทเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญเบชเบฒเบ‚เบฒเบ–เบทเบเบเบนเป‰เปƒเบซเป‰เป€เบ›เบฑเบ™เปเบกเปˆเบšเบปเบ”, เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบˆเบฐเบ–เบทเบเบเบฐเบ•เบธเป‰เบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบ•เบปเป‰เบ™เบ•เปเบฅเบฐเบซเบงเปˆเบฒเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เปเบฅเบฐเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เปเบšเบšเบ™เบฑเป‰เบ™ เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบˆเบฐเบ–เบทเบเบ„เบธเป‰เบกเบ„เบญเบ‡เปƒเบ™ git (เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบกเบฑเบ™เบ–เบทเบ เบ™เบณ เปƒเบŠเป‰เปƒเบ™ Kubernetes).

เบกเบตเบซเบผเบฒเบเบ‚เปเป‰เป„เบ”เป‰เบ›เบฝเบš:

  • เบซเบผเบฒเบ เบˆเบฐเปเบˆเป‰เบ‡เบเบงเปˆเบฒ เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบžเบฑเบ”โ€‹เบ—เบฐโ€‹เบ™เบฒโ€‹. เบกเบฑเบ™เบ‡เปˆเบฒเบเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเบฎเบฝเบ™เบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™.
  • เบชเบฒเบกเบฒเบ”เบเบณเบ™เบปเบ”เบเบฒเบ™เบเบณเบ™เบปเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป„เบ”เป‰ เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบฅเบฐเบซเบฑเบ” เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™.
  • เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบเบฒเบ™เป‚เบเบเบเป‰เบฒเบเบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบปเปˆเบงเป„เบ›. เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบญเบ Helm เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เบ™เบตเป‰เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เบงเบปเบ‡เบˆเบญเบ™เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ (rollback, เบเบปเบเบฅเบฐเบ”เบฑเบš) เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”, เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบญเบทเปˆเบ™เป†.
  • เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡ git เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡: เบเบปเบเป€เบฅเบตเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบเบงเบ”เบชเบญเบš, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบปเบเป€เบฅเบตเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰เป‚เบ”เบเปƒเบŠเป‰ git. เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”.
  • เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ›เบฑเบšเบ›เบธเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ”เป‰เบงเบเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบŠเบฑเปˆเบ™ Skaffold, เป€เบŠเบดเปˆเบ‡เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบฒเบกเบฒเบ”เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบ—เบตเปˆเปƒเบเป‰เบŠเบดเบ”เบเบฑเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”.

เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบชเบญเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™

เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เปƒเบŠเป‰เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ™เบตเป‰เป€เบ›เบฑเบ™เป€เบงเบฅเบฒ 2 เบ›เบตเปเบฅเป‰เบง, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบถเปˆเบ‡เบขเบฒเบเปƒเบซเป‰เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบšเปเปˆเป€เบˆเบฑเบšเบ›เบงเบ”เป€เบ—เบปเปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบฅเบฐเบ”เบฑเบšเบ›เบฒเบ™เบเบฒเบ‡เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เป„เบ›เบชเบนเปˆเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ.
เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบ—เปเบฒโ€‹เบญเบดเบ”โ€‹เปเบกเปˆเบ™โ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹:

  • เบžเบงเบเป€เบฎเบปเบฒเบฎเบฑเบเบชเบฒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ, เปเบ•เปˆเบขเบนเปˆเปƒเบ™เบงเบฑเบ”เบ–เบธเบ”เบฝเบงเบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ DailymotionRelease.

apiVersion: "v1"
kind: "DailymotionRelease"
metadata:
  name: "app1.ns1"
  environment: "dev"
  branch: "mybranch"
spec:
  slack_channel: "#admin"
  chart_name: "app1"
  scaling:
    - context: "dev-us-central1-0"
      replicas:
        - name: "hermes"
          count: 2
    - context: "dev-europe-west1-0"
      replicas:
        - name: "app1-deploy"
          count: 2
  secrets:
    - secret_id: "app1"
      contexts:
        - name: "default"
          vaultPath: "/kv/dev/ns1/app1/test"
          vaultKey: "password"
        - name: "dev-europe-west1-0"
          vaultPath: "/kv/dev/ns1/app1/test"
          vaultKey: "password"

  • 1 เบเบฒเบ™เบ›เปˆเบญเบเบ•เปเปˆเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ (เป‚เบ”เบเบšเปเปˆเบกเบตเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบปเปˆเบงเป„เบ›).
  • เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบš git เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™.

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเบปเบ™เบ—เบฐเบ™เบฒเบเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบฑเบ‡เบซเบกเบปเบ”, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ‚เบถเป‰เบ™เปเบฅเป‰เบง. เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบเบฑเบ‡เบ–เบทเบเบ„เบงเบšเบ„เบธเบกเป‚เบ”เบเปƒเบŠเป‰เป€เบงเบ—เบต CI. เบ‚เป‰เบญเบเบˆเบฐเบ‚เบฝเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบญเบทเปˆเบ™เปƒเบ™เป„เบงเป†เบ™เบตเป‰เบเปˆเบฝเบงเบเบฑเบšเป„เบฅเบเบฐเบชเบญเบ‡: เบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเป‰เบฒเบเป„เบ›เบขเบนเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ GitOps เบเบฑเบš เป„เบซเบผ. เบ‚เป‰เบญเบเบˆเบฐเบšเบญเบเป€เบˆเบปเป‰เบฒเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบธเบเบขเปˆเบฒเบ‡เปเบ™เบงเปƒเบ” เปเบฅเบฐเบ›เบฐเบชเบปเบšเบเบฑเบšเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบญเบฑเบ™เปƒเบ” (เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบซเบผเบฒเบเบญเบฑเบ™, เบ„เบงเบฒเบกเบฅเบฑเบš, เปเบฅเบฐเบญเบทเปˆเบ™เป†). เบ•เบดเบ”เบ•เบฒเบกเบ‚เปˆเบฒเบง.

เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเบญเบฐเบ—เบดเบšเบฒเบเบ„เบงเบฒเบกเบ„เบทเบšเบซเบ™เป‰เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปƒเบ™เบ›เบตเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™ GitOps. เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เป„เบ”เป‰เบšเบฑเบ™เบฅเบธเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปเบฅเบฐเบˆเบฐเบฅเบฒเบเบ‡เบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš, เปเบ•เปˆเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบซเบกเบฑเป‰เบ™เปƒเบˆเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เปƒเบเป‰เบŠเบดเบ”เบเบฑเบšเบ™เบดเป„เบชเบ‚เบญเบ‡เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™