เชœเชพเช“? เชฌเชพเชถ! เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เชฎเชณเซ‹ (เช•เซเชฌเซ‡เช•เซ‹เชจ EU'2020 เชคเชฐเชซเชฅเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช…เชจเซ‡ เชตเชฟเชกเชฟเช“ เชฐเชฟเชชเซ‹เชฐเซเชŸ)

เช† เชตเชฐเซเชทเซ‡, เชฎเซเช–เซเชฏ เชฏเซเชฐเซ‹เชชเชฟเชฏเชจ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซ‹เชจเซเชซเชฐเชจเซเชธ - KubeCon + CloudNativeCon Europe 2020 - เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชนเชคเซ€. เชœเซ‹ เช•เซ‡, เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฎเชพเช‚ เช†เชตเชพ เชซเซ‡เชฐเชซเชพเชฐเชฅเซ€ เช…เชฎเชจเซ‡ เช…เชฎเชพเชฐเชพ เชฒเชพเช‚เชฌเชพ-เช†เชฏเซ‹เชœเชฟเชค เช…เชนเซ‡เชตเชพเชฒ "เชœเชพเช“? เชฌเชพเชถ! เช…เชฎเชพเชฐเชพ เช“เชชเชจ เชธเซ‹เชฐเซเชธ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ‡ เชธเชฎเชฐเซเชชเชฟเชค เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เชฎเชณเซ‹ เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐ.

เช† เชฒเซ‡เช–, เชตเชพเชฐเซเชคเชพเชฒเชพเชชเชฅเซ€ เชชเซเชฐเซ‡เชฐเชฟเชค, เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชฎเชพเชŸเซ‡ เช“เชชเชฐเซ‡เชŸเชฐเซเชธ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชตเชพเชจเซ‹ เช…เชญเชฟเช—เชฎ เชฐเชœเซ‚ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชฌเชคเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เชคเชฎเซ‡ เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชจเซเชฏเซ‚เชจเชคเชฎ เชชเซเชฐเชฏเชคเซเชจเซ‹ เชธเชพเชฅเซ‡ เชคเชฎเชพเชฐเซเช‚ เชชเซ‹เชคเชพเชจเซเช‚ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹.

เชœเชพเช“? เชฌเชพเชถ! เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เชฎเชณเซ‹ (เช•เซเชฌเซ‡เช•เซ‹เชจ EU'2020 เชคเชฐเชซเชฅเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช…เชจเซ‡ เชตเชฟเชกเชฟเชฏเซ‹ เชฐเชฟเชชเซ‹เชฐเซเชŸ)

เชชเชฐเชฟเชšเชฏ เช…เชนเซ‡เชตเชพเชฒเชจเซ‹ เชตเชฟเชกเชฟเชฏเซ‹ (เช…เช‚เช—เซเชฐเซ‡เชœเซ€เชฎเชพเช‚ ~23 เชฎเชฟเชจเชฟเชŸ, เชฒเซ‡เช– เช•เชฐเชคเชพเช‚ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เชตเชงเซ เชฎเชพเชนเชฟเชคเซ€เชชเซเชฐเชฆ) เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชฎเซเช–เซเชฏ เช…เชฐเซเช• เชŸเซ‡เช•เซเชธเซเชŸ เชธเซเชตเชฐเซ‚เชชเชฎเชพเช‚. เชœเชพเช“!

เชซเซเชฒเชพเชจเซเชŸเชฎเชพเช‚ เช…เชฎเซ‡ เชธเชคเชค เชฆเชฐเซ‡เช• เชตเชธเซเชคเซเชจเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช…เชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเซ€เช เช›เซ€เช. เช†เชœเซ‡ เช†เชชเชฃเซ‡ เชฌเซ€เชœเชพ เชเช• เชฐเซ‹เชฎเชพเช‚เชšเช• เช•เซ‹เชจเซเชธเซ‡เชชเซเชŸ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เชถเซเช‚. เชฎเชณเซ‹: เช•เซเชฒเชพเช‰เชก-เชจเซ‡เชŸเชฟเชต เชถเซ‡เชฒ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ€เช‚เช—!

เชœเซ‹ เช•เซ‡, เชšเชพเชฒเซ‹ เชคเซ‡ เชธเช‚เชฆเชฐเซเชญเชฅเซ€ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ€เช เชœเซ‡เชฎเชพเช‚ เช† เชฌเชงเซเช‚ เชฅเชพเชฏ เช›เซ‡: เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ.

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ API เช…เชจเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเช•เซ‹

Kubernetes เชฎเชพเช‚ API เชจเซ‡ เชฆเชฐเซ‡เช• เชชเซเชฐเช•เชพเชฐเชจเชพ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชฎเชพเชŸเซ‡ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เช“ เชธเชพเชฅเซ‡ เชซเชพเช‡เชฒ เชธเชฐเซเชตเชฐ เชคเชฐเซ€เช•เซ‡ เชฐเชœเซ‚ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เช† เชธเชฐเซเชตเชฐ เชชเชฐเชจเชพ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธ (เชธเช‚เชธเชพเชงเชจเซ‹) YAML เชซเชพเช‡เชฒเซ‹ เชฆเซเชตเชพเชฐเชพ เชฐเชœเซ‚ เชฅเชพเชฏ เช›เซ‡. เชตเชงเซเชฎเชพเช‚, เชธเชฐเซเชตเชฐ เชชเชพเชธเซ‡ เชฎเซ‚เชณเชญเซ‚เชค API เช›เซ‡ เชœเซ‡ เชคเชฎเชจเซ‡ เชคเซเชฐเชฃ เชตเชธเซเชคเซเช“ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡:

  • เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เชจเชพ เชชเซเชฐเช•เชพเชฐ เช…เชจเซ‡ เชจเชพเชฎ เชฆเซเชตเชพเชฐเชพ เชธเช‚เชธเชพเชงเชจ;
  • เชฌเชฆเชฒเซ‹ เชธเช‚เชธเชพเชงเชจ (เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชธเชฐเซเชตเชฐ เชซเช•เซเชค "เชธเชพเชšเชพ" เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธเชจเซ‡ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเซ‡ เช›เซ‡ - เชฌเชงเซ€ เช–เซ‹เชŸเซ€ เชฐเซ€เชคเซ‡ เชฐเชšเชพเชฏเซ‡เชฒเซ€ เช…เชฅเชตเชพ เช…เชจเซเชฏ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เช“ เชฎเชพเชŸเซ‡ เชนเซ‡เชคเซ เช•เชพเชขเซ€ เชจเชพเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡);
  • เชŸเซเชฐเซ‡เช• เชธเช‚เชธเชพเชงเชจ เชฎเชพเชŸเซ‡ (เช† โ€‹โ€‹เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชคเชฐเชค เชœ เชคเซ‡เชจเซเช‚ เชตเชฐเซเชคเชฎเชพเชจ/เช…เชชเชกเซ‡เชŸ เช•เชฐเซ‡เชฒ เชธเช‚เชธเซเช•เชฐเชฃ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡).

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

เชœเชพเช“? เชฌเชพเชถ! เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เชฎเชณเซ‹ (เช•เซเชฌเซ‡เช•เซ‹เชจ EU'2020 เชคเชฐเชซเชฅเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช…เชจเซ‡ เชตเชฟเชกเชฟเชฏเซ‹ เชฐเชฟเชชเซ‹เชฐเซเชŸ)

เชธเชฎเชธเซเชฏเชพ เช เช›เซ‡ เช•เซ‡ เชธเชฐเซเชตเชฐ เชซเช•เซเชค เชฎเชพเชนเชฟเชคเซ€ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชคเซ‡เชจเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ เชœเชฐเซ‚เชฐ เช›เซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเช• - เช•เซเชฌเชฐเชจเซ‡เชŸเซ€เชธเชจเซ€ เชฆเซเชจเชฟเชฏเชพเชฎเชพเช‚ เชฌเซ€เชœเซ‹ เชธเซŒเชฅเซ€ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช…เชจเซ‡ เชฎเซ‚เชณเชญเซ‚เชค เช–เซเชฏเชพเชฒ.

เชจเชฟเชฏเช‚เชคเซเชฐเช•เซ‹เชจเชพ เชฌเซ‡ เชฎเซเช–เซเชฏ เชชเซเชฐเช•เชพเชฐ เช›เซ‡. เชชเซเชฐเชฅเชฎ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชชเชพเชธเซ‡เชฅเซ€ เชฎเชพเชนเชฟเชคเซ€ เชฒเซ‡ เช›เซ‡, เชคเซ‡เชจเซ‡ เชจเซ‡เชธเซเชŸเซ‡เชก เชฒเซ‹เชœเชฟเช• เช…เชจเซเชธเชพเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡เชจเซ‡ K8s เชชเชฐ เชชเชฐเชค เช•เชฐเซ‡ เช›เซ‡. เชฌเซ€เชœเซ‹ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชชเชพเชธเซ‡เชฅเซ€ เชฎเชพเชนเชฟเชคเซ€ เชฒเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ, เชชเซเชฐเชฅเชฎ เชชเซเชฐเช•เชพเชฐเชฅเซ€ เชตเชฟเชชเชฐเซ€เชค, เช•เซ‡เชŸเชฒเชพเช• เชฌเชพเชนเซเชฏ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ€ เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเซ‡ เช›เซ‡.

เชšเชพเชฒเซ‹ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชœเชฎเชพเชตเชŸ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชชเชฐ เชจเชœเซ€เช•เชฅเซ€ เชจเชœเชฐ เช•เชฐเซ€เช:

  • เชœเชฎเชพเชตเชŸ เชจเชฟเชฏเช‚เชคเซเชฐเช• (เช†เชฎเชพเช‚ เชธเชฎเชพเชตเชฟเชทเซเชŸ kube-controller-manager) เชœเชฎเชพเชตเชŸ เชตเชฟเชถเซ‡ เชฎเชพเชนเชฟเชคเซ€ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชชเซเชฐเชคเชฟเช•เซƒเชคเชฟ เชธเซ‡เชŸ เชฌเชจเชพเชตเซ‡ เช›เซ‡.
  • ReplicaSet เช† เชฎเชพเชนเชฟเชคเซ€เชจเชพ เช†เชงเชพเชฐเซ‡ เชฌเซ‡ เชชเซเชฐเชคเชฟเช•เซƒเชคเชฟเช“ (เชฌเซ‡ เชชเซ‹เชก) เชฌเชจเชพเชตเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เช† เชชเซ‹เชกเซเชธ เชนเชœเซ เชธเซเชจเชฟเชถเซเชšเชฟเชค เชจเชฅเซ€.
  • เชถเซ‡เชกเซเชฏเซ‚เชฒเชฐ เชชเซ‹เชกเซเชธ เชถเซ‡เชกเซเชฏเซ‚เชฒ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชจเชพ YAML เชฎเชพเช‚ เชจเซ‹เชก เชฎเชพเชนเชฟเชคเซ€ เช‰เชฎเซ‡เชฐเซ‡ เช›เซ‡.
  • เช•เซเชฌเซ‡เชฒเซ‡เชŸเซเชธ เชฌเชพเชนเซเชฏ เชธเช‚เชธเชพเชงเชจเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เช•เชฐเซ‡ เช›เซ‡ (เชกเซ‹เช•เชฐ เช•เชนเซ‡ เช›เซ‡).

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

เชœเชพเช“? เชฌเชพเชถ! เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เชฎเชณเซ‹ (เช•เซเชฌเซ‡เช•เซ‹เชจ EU'2020 เชคเชฐเชซเชฅเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช…เชจเซ‡ เชตเชฟเชกเชฟเชฏเซ‹ เชฐเชฟเชชเซ‹เชฐเซเชŸ)

เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐ

เชคเซ‡ เชคเชพเชฐเชฃ เช†เชชเซ‡ เช›เซ‡ เช•เซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชตเชฟเชตเชฟเชง เชจเชฟเชฏเช‚เชคเซเชฐเช•เซ‹เชจเชพ เชธเช‚เชฏเซเช•เซเชค เช•เชพเชฐเซเชฏ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡ (เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช“เชชเชฐเซ‡เชŸเชฐเซ‹ เชชเชฃ เชจเชฟเชฏเช‚เชคเซเชฐเช•เซ‹ เช›เซ‡). เชชเซเชฐเชถเซเชจ เชŠเชญเซ‹ เชฅเชพเชฏ เช›เซ‡ เช•เซ‡, เชจเซเชฏเซ‚เชจเชคเชฎ เชชเซเชฐเชฏเชคเซเชจเซ‹ เชธเชพเชฅเซ‡ เชคเชฎเชพเชฐเซเช‚ เชชเซ‹เชคเชพเชจเซเช‚ เช“เชชเชฐเซ‡เชŸเชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเซเช‚? เช…เชจเซ‡ เช…เชนเซ€เช‚ เช†เชชเชฃเซ‡ เชœเซ‡ เชตเชฟเช•เชธเชพเชตเซเชฏเซเช‚ เช›เซ‡ เชคเซ‡ เชฌเชšเชพเชตเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐ. เชคเซ‡ เชธเชฟเชธเซเชŸเชฎ เชธเช‚เชšเชพเชฒเช•เซ‹เชจเซ‡ เชชเชฐเชฟเชšเชฟเชค เชชเชฆเซเชงเชคเชฟเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเซ‡เชฎเชจเชพ เชชเซ‹เชคเชพเชจเชพ เชจเชฟเชตเซ‡เชฆเชจเซ‹ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

เชœเชพเช“? เชฌเชพเชถ! เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เชฎเชณเซ‹ (เช•เซเชฌเซ‡เช•เซ‹เชจ EU'2020 เชคเชฐเชซเชฅเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช…เชจเซ‡ เชตเชฟเชกเชฟเชฏเซ‹ เชฐเชฟเชชเซ‹เชฐเซเชŸ)

เชธเชฐเชณ เช‰เชฆเชพเชนเชฐเชฃ: เชฐเชนเชธเซเชฏเซ‹เชจเซ€ เชจเช•เชฒ เช•เชฐเชตเซ€

เชšเชพเชฒเซ‹ เชเช• เชธเชฐเชณ เช‰เชฆเชพเชนเชฐเชฃ เชœเซ‹เชˆเช.

เชšเชพเชฒเซ‹ เช•เชนเซ€เช เช•เซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐ เช›เซ‡. เชคเซ‡เชฎเชพเช‚ เชจเซ‡เชฎเชธเซเชชเซ‡เชธ เช›เซ‡ default เช•เซ‡เชŸเชฒเชพเช• เชฐเชนเชธเซเชฏเซ‹ เชธเชพเชฅเซ‡ mysecret. เช† เช‰เชชเชฐเชพเช‚เชค, เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เช…เชจเซเชฏ เชจเซ‡เชฎเชธเซเชชเซ‡เชธ เช›เซ‡. เชคเซ‡เชฎเชพเช‚เชจเชพ เช•เซ‡เชŸเชฒเชพเช• เชคเซ‡เชฎเชจเซ€ เชธเชพเชฅเซ‡ เชšเซ‹เช•เซเช•เชธ เชฒเซ‡เชฌเชฒ เชœเซ‹เชกเชพเชฏเซ‡เชฒเชพ เช›เซ‡. เช…เชฎเชพเชฐเซ‹ เชงเซเชฏเซ‡เชฏ เชฒเซ‡เชฌเชฒ เชธเชพเชฅเซ‡ เชจเซ‡เชฎเชธเซเชชเซ‡เชธเชฎเชพเช‚ เชธเชฟเช•เซเชฐเซ‡เชŸเชจเซ€ เชจเช•เชฒ เช•เชฐเชตเชพเชจเซ‹ เช›เซ‡.

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

เชนเชตเซ‡ เชœเซเชฏเชพเชฐเซ‡ เช•เชพเชฐเซเชฏ เช˜เชกเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡, เชคเซ‡ เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเซ‡เชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชจเซ‹ เชธเชฎเชฏ เช›เซ‡. เชชเชฐเช‚เชคเซ เชชเซเชฐเชฅเชฎ เชคเซ‡ เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐ เชตเชฟเชถเซ‡ เชฅเซ‹เชกเชพเช• เชถเชฌเซเชฆเซ‹ เช•เชนเซ‡เชตเชพ เชฏเซ‹เช—เซเชฏ เช›เซ‡.

เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เช…เชจเซเชฏ เชตเชฐเซเช•เชฒเซ‹เชกเชจเซ€ เชœเซ‡เชฎ, เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐ เชคเซ‡เชจเชพ เชชเซ‹เชคเชพเชจเชพ เชชเซ‹เชกเชฎเชพเช‚ เชšเชพเชฒเซ‡ เช›เซ‡. เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เช† เชชเซ‹เชกเชฎเชพเช‚ /hooks เชเช•เซเชเซ‡เช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชซเชพเช‡เชฒเซ‹ เชธเช‚เช—เซเชฐเชนเชฟเชค เช›เซ‡. เช† Bash, Python, Ruby, เชตเช—เซ‡เชฐเซ‡เชฎเชพเช‚ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เช…เชฎเซ‡ เช†เชตเซ€ เชเช•เซเชเซ‡เช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เชนเซเช•เซเชธ เช•เชนเซ€เช เช›เซ€เช (เชนเซเช•เซเชธ).

เชœเชพเช“? เชฌเชพเชถ! เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เชฎเชณเซ‹ (เช•เซเชฌเซ‡เช•เซ‹เชจ EU'2020 เชคเชฐเชซเชฅเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช…เชจเซ‡ เชตเชฟเชกเชฟเชฏเซ‹ เชฐเชฟเชชเซ‹เชฐเซเชŸ)

เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช‡เชตเซ‡เชจเซเชŸเซเชธเชฎเชพเช‚ เชธเชฌเซเชธเซเช•เซเชฐเชพเช‡เชฌ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ เช‡เชตเซ‡เชจเซเชŸเซเชธเชจเชพ เชœเชตเชพเชฌเชฎเชพเช‚ เช† เชนเซ‚เช• เชšเชฒเชพเชตเซ‡ เช›เซ‡ เชœเซ‡เชจเซ€ เช…เชฎเชจเซ‡ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชœเชพเช“? เชฌเชพเชถ! เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เชฎเชณเซ‹ (เช•เซเชฌเซ‡เช•เซ‹เชจ EU'2020 เชคเชฐเชซเชฅเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช…เชจเซ‡ เชตเชฟเชกเชฟเชฏเซ‹ เชฐเชฟเชชเซ‹เชฐเซเชŸ)

เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช–เชฌเชฐ เชชเชกเซ‡ เช›เซ‡ เช•เซ‡ เช•เชฏเซ‹ เชนเซ‚เช• เชšเชฒเชพเชตเชตเซ‹ เช…เชจเซ‡ เช•เซเชฏเชพเชฐเซ‡? เชฎเซเชฆเซเชฆเซ‹ เช เช›เซ‡ เช•เซ‡ เชฆเชฐเซ‡เช• เชนเซ‚เช•เชฎเชพเช‚ เชฌเซ‡ เชคเชฌเช•เซเช•เชพ เชนเซ‹เชฏ เช›เซ‡. เชธเซเชŸเชพเชฐเซเชŸเช…เชช เชฆเชฐเชฎเชฟเชฏเชพเชจ, เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐ เชฆเชฒเซ€เชฒ เชธเชพเชฅเซ‡ เชคเชฎเชพเชฎ เชนเซเช•เซเชธ เชšเชฒเชพเชตเซ‡ เช›เซ‡ --config เช† เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชธเซเชŸเซ‡เชœ เช›เซ‡. เช…เชจเซ‡ เชคเซ‡ เชชเช›เซ€, เชนเซเช•เซเชธ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชฒเซ‹เช‚เชš เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ - เชœเซ‡ เช‡เชตเซ‡เชจเซเชŸเซเชธ เชธเชพเชฅเซ‡ เชคเซ‡เช“ เชœเซ‹เชกเชพเชฏเซ‡เชฒเชพ เช›เซ‡ เชคเซ‡เชจเชพ เชœเชตเชพเชฌเชฎเชพเช‚. เชชเช›เซ€เชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชนเซ‚เช• เชฌเช‚เชงเชจเช•เชฐเซเชคเชพ เชธเช‚เชฆเชฐเซเชญ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡ (เชฌเช‚เชงเชจเช•เชฐเซเชคเชพ เชธเช‚เชฆเชฐเซเชญ) - JSON เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฎเชพเช‚ เชกเซ‡เชŸเชพ, เชœเซ‡เชจเชพ เชตเชฟเชถเซ‡ เช…เชฎเซ‡ เชจเซ€เชšเซ‡ เชตเชงเซ เชตเชฟเช—เชคเชตเชพเชฐ เชตเชพเชค เช•เชฐเซ€เชถเซเช‚.

เชฌเชพเชถเชฎเชพเช‚ เช“เชชเชฐเซ‡เชŸเชฐ เชฌเชจเชพเชตเชตเซเช‚

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

  • เชชเซเชฐเชฅเชฎ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชคเชฌเช•เซเช•เชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ - เชคเซ‡ เชฌเช‚เชงเชจเช•เชฐเซเชคเชพ เชธเช‚เชฆเชฐเซเชญ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡;
  • เชฌเซ€เชœเชพเชฎเชพเช‚ เชนเซ‚เช•เชจเซ‹ เชฎเซเช–เซเชฏ เชคเชฐเซเช• เช›เซ‡.

#!/bin/bash

source /shell_lib.sh

function __config__() {
  cat << EOF
    configVersion: v1
    # BINDING CONFIGURATION
EOF
}

function __main__() {
  # THE LOGIC
}

hook::run "$@"

เช†เช—เชณเชจเซเช‚ เชชเช—เชฒเซเช‚ เช เชจเช•เซเช•เซ€ เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‡ เช•เซ‡ เช†เชชเชฃเชจเซ‡ เช•เชˆ เชตเชธเซเชคเซเช“เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช…เชฎเชพเชฐเซ‡ เชŸเซเชฐเซ…เช• เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:

  • เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชฎเชพเชŸเซ‡ เชธเซเชคเซเชฐเซ‹เชค เชฐเชนเชธเซเชฏ;
  • เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชคเชฎเชพเชฎ เชจเซ‡เชฎเชธเซเชชเซ‡เชธ, เชœเซ‡เชฅเซ€ เชคเชฎเซ‡ เชœเชพเชฃเซ€ เชถเช•เซ‹ เช•เซ‡ เช•เช‡ เชœเช—เซเชฏเชพเช“ เชธเชพเชฅเซ‡ เชฒเซ‡เชฌเชฒ เชœเซ‹เชกเชพเชฏเซ‡เชฒ เช›เซ‡;
  • เชฒเช•เซเชทเซเชฏ เชฐเชนเชธเซเชฏเซ‹ เช เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‡ เชคเซ‡ เชฌเชงเชพ เชธเซเชฐเซ‹เชค เชฐเชนเชธเซเชฏ เชธเชพเชฅเซ‡ เชธเซเชฎเซ‡เชณเชฎเชพเช‚ เช›เซ‡.

เช—เซเชชเซเชค เชธเซเชคเซเชฐเซ‹เชค เชชเชฐ เชธเชฌเซเชธเซเช•เซเชฐเชพเช‡เชฌ เช•เชฐเซ‹

เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชฌเช‚เชงเชจเช•เชฐเซเชคเชพ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชเช•เชฆเชฎ เชธเชฐเชณ เช›เซ‡. เช…เชฎเซ‡ เชธเซ‚เชšเชตเซ€เช เช›เซ€เช เช•เซ‡ เช…เชฎเชจเซ‡ เชจเชพเชฎ เชธเชพเชฅเซ‡เชจเชพ เชฐเชนเชธเซเชฏเชฎเชพเช‚ เชฐเชธ เช›เซ‡ mysecret เชจเซ‡เชฎเชธเซเชชเซ‡เชธเชฎเชพเช‚ default:

เชœเชพเช“? เชฌเชพเชถ! เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เชฎเชณเซ‹ (เช•เซเชฌเซ‡เช•เซ‹เชจ EU'2020 เชคเชฐเชซเชฅเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช…เชจเซ‡ เชตเชฟเชกเชฟเชฏเซ‹ เชฐเชฟเชชเซ‹เชฐเซเชŸ)

function __config__() {
  cat << EOF
    configVersion: v1
    kubernetes:
    - name: src_secret
      apiVersion: v1
      kind: Secret
      nameSelector:
        matchNames:
        - mysecret
      namespace:
        nameSelector:
          matchNames: ["default"]
      group: main
EOF

เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชœเซเชฏเชพเชฐเซ‡ เชธเซเชคเซเชฐเซ‹เชค เช—เซเชชเซเชค เชฌเชฆเชฒเชพเชถเซ‡ เชคเซเชฏเชพเชฐเซ‡ เชนเซ‚เช• เชŸเซเชฐเชฟเช—เชฐ เชฅเชถเซ‡ (src_secret) เช…เชจเซ‡ เชจเซ€เชšเซ‡เชจเชพ เชฌเช‚เชงเชจเช•เชฐเซเชคเชพ เชธเช‚เชฆเชฐเซเชญ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ‹:

เชœเชพเช“? เชฌเชพเชถ! เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เชฎเชณเซ‹ (เช•เซเชฌเซ‡เช•เซ‹เชจ EU'2020 เชคเชฐเชซเชฅเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช…เชจเซ‡ เชตเชฟเชกเชฟเชฏเซ‹ เชฐเชฟเชชเซ‹เชฐเซเชŸ)

เชœเซ‡เชฎ เชคเชฎเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹, เชคเซ‡เชฎเชพเช‚ เชจเชพเชฎ เช…เชจเซ‡ เชธเชฎเช—เซเชฐ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เช›เซ‡.

เชจเซ‡เชฎเชธเซเชชเซ‡เชธเชจเซ‹ เชŸเซเชฐเซ‡เช• เชฐเชพเช–เชตเซ‹

เชนเชตเซ‡ เชคเชฎเชพเชฐเซ‡ เชจเซ‡เชฎเชธเซเชชเซ‡เชธ เชชเชฐ เชธเชฌเซเชธเซเช•เซเชฐเชพเช‡เชฌ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชจเซ€เชšเซ‡เชจเชพ เชฌเช‚เชงเชจเช•เชฐเซเชคเชพ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ€เช เช›เซ€เช:

- name: namespaces
  group: main
  apiVersion: v1
  kind: Namespace
  jqFilter: |
    {
      namespace: .metadata.name,
      hasLabel: (
       .metadata.labels // {} |  
         contains({"secret": "yes"})
      )
    }
  group: main
  keepFullObjectsInMemory: false

เชœเซ‡เชฎ เชคเชฎเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹, เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชฎเชพเช‚ เชจเชพเชฎ เชธเชพเชฅเซ‡ เชเช• เชจเชตเซเช‚ เช•เซเชทเซ‡เชคเซเชฐ เชฆเซ‡เช–เชพเชฏเซเช‚ เช›เซ‡ jqFilter. เชคเซ‡เชจเซเช‚ เชจเชพเชฎ เชธเซ‚เชšเชตเซ‡ เช›เซ‡ เชคเซ‡เชฎ, jqFilter เชฌเชงเซ€ เชฌเชฟเชจเชœเชฐเซ‚เชฐเซ€ เชฎเชพเชนเชฟเชคเซ€เชจเซ‡ เชซเชฟเชฒเซเชŸเชฐ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เช…เชฎเชจเซ‡ เชฐเซเชšเชฟ เชงเชฐเชพเชตเชคเชพ เช•เซเชทเซ‡เชคเซเชฐเซ‹ เชธเชพเชฅเซ‡ เชเช• เชจเชตเซ‹ JSON เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชฌเชจเชพเชตเซ‡ เช›เซ‡. เชธเชฎเชพเชจ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชธเชพเชฅเซ‡เชจเซ‹ เชนเซ‚เช• เชจเซ€เชšเซ‡เชจเชพ เชฌเช‚เชงเชจเช•เชฐเซเชคเชพ เชธเช‚เชฆเชฐเซเชญ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชถเซ‡:

เชœเชพเช“? เชฌเชพเชถ! เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เชฎเชณเซ‹ (เช•เซเชฌเซ‡เช•เซ‹เชจ EU'2020 เชคเชฐเชซเชฅเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช…เชจเซ‡ เชตเชฟเชกเชฟเชฏเซ‹ เชฐเชฟเชชเซ‹เชฐเซเชŸ)

เชคเซ‡ เชเชฐเซ‡ เชธเชฎเชพเชตเซ‡ เช›เซ‡ filterResults เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชฆเชฐเซ‡เช• เชจเซ‡เชฎเชธเซเชชเซ‡เชธ เชฎเชพเชŸเซ‡. เชฌเซเชฒเชฟเชฏเชจ เชšเชฒ hasLabel เชธเซ‚เชšเชตเซ‡ เช›เซ‡ เช•เซ‡ เชถเซเช‚ เชฒเซ‡เชฌเชฒ เช†เชชเซ‡เชฒ เชจเซ‡เชฎเชธเซเชชเซ‡เชธ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒ เช›เซ‡. เชชเชธเช‚เชฆเช—เซ€เช•เชพเชฐ keepFullObjectsInMemory: false เชธเซ‚เชšเชตเซ‡ เช›เซ‡ เช•เซ‡ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃ เชตเชธเซเชคเซเช“ เชฐเชพเช–เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€.

เชฒเช•เซเชทเซเชฏ เชฐเชนเชธเซเชฏเซ‹ เชŸเซเชฐเซ‡เช•เชฟเช‚เช—

เช…เชฎเซ‡ เชเชตเชพ เชคเชฎเชพเชฎ เชฐเชนเชธเซเชฏเซ‹ เชชเชฐ เชธเชฌเซเชธเซเช•เซเชฐเชพเช‡เชฌ เช•เชฐเซ€เช เช›เซ€เช เช•เซ‡ เชœเซ‡เชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชเชจเซ‹เชŸเซ‡เชถเชจ เชนเซ‹เชฏ managed-secret: "yes" (เช† เช…เชฎเชพเชฐเซเช‚ เชฒเช•เซเชทเซเชฏ เช›เซ‡ dst_secrets):

- name: dst_secrets
  apiVersion: v1
  kind: Secret
  labelSelector:
    matchLabels:
      managed-secret: "yes"
  jqFilter: |
    {
      "namespace":
        .metadata.namespace,
      "resourceVersion":
        .metadata.annotations.resourceVersion
    }
  group: main
  keepFullObjectsInMemory: false

เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ jqFilter เชจเซ‡เชฎเชธเซเชชเซ‡เชธ เช…เชจเซ‡ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เชธเชฟเชตเชพเชฏเชจเซ€ เชคเชฎเชพเชฎ เชฎเชพเชนเชฟเชคเซ€เชจเซ‡ เชซเชฟเชฒเซเชŸเชฐ เช•เชฐเซ‡ เช›เซ‡ resourceVersion. เชฐเชนเชธเซเชฏ เชฌเชจเชพเชตเชคเซ€ เชตเช–เชคเซ‡ เช›เซ‡เชฒเซเชฒเซเช‚ เชชเชฐเชฟเชฎเชพเชฃ เชเชจเซ‹เชŸเซ‡เชถเชจเชฎเชพเช‚ เชชเชธเชพเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚: เชคเซ‡ เชคเชฎเชจเซ‡ เชฐเชนเชธเซเชฏเซ‹เชจเชพ เชธเช‚เชธเซเช•เชฐเชฃเซ‹เชจเซ€ เชคเซเชฒเชจเชพ เช•เชฐเชตเชพเชจเซ€ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช…เชฆเซเชฏเชคเชจ เชฐเชพเช–เชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

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

เชœเชพเช“? เชฌเชพเชถ! เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เชฎเชณเซ‹ (เช•เซเชฌเซ‡เช•เซ‹เชจ EU'2020 เชคเชฐเชซเชฅเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช…เชจเซ‡ เชตเชฟเชกเชฟเชฏเซ‹ เชฐเชฟเชชเซ‹เชฐเซเชŸ)

เช† เชฌเชงเซ€ เชฎเชพเชนเชฟเชคเซ€เชจเชพ เช†เชงเชพเชฐเซ‡, เชฎเซ‚เชณเชญเซ‚เชค เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎ เชตเชฟเช•เชธเชพเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชคเซ‡ เชคเชฎเชพเชฎ เชจเซ‡เชฎเชธเซเชชเซ‡เชธ เชชเชฐ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡:

  • เชคเซ‹ hasLabel เชฌเชพเชฌเชคเซ‹ true เชตเชฐเซเชคเชฎเชพเชจ เชจเซ‡เชฎเชธเซเชชเซ‡เชธ เชฎเชพเชŸเซ‡:
    • เชตเซˆเชถเซเชตเชฟเช• เชฐเชนเชธเซเชฏเชจเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชธเชพเชฅเซ‡ เชธเชฐเช–เชพเชตเซ‡ เช›เซ‡:
      • เชœเซ‹ เชคเซ‡เช“ เชธเชฎเชพเชจ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡ เช•เช‚เชˆ เช•เชฐเชคเซเช‚ เชจเชฅเซ€;
      • เชœเซ‹ เชคเซ‡เช“ เช…เชฒเช— เชนเซ‹เชฏ เชคเซ‹ - เชšเชฒเชพเชตเซ‡ เช›เซ‡ kubectl replace เช…เชฅเชตเชพ create;
  • เชคเซ‹ hasLabel เชฌเชพเชฌเชคเซ‹ false เชตเชฐเซเชคเชฎเชพเชจ เชจเซ‡เชฎเชธเซเชชเซ‡เชธ เชฎเชพเชŸเซ‡:
    • เช–เชพเชคเชฐเซ€ เช•เชฐเซ‹ เช•เซ‡ เชธเชฟเช•เซเชฐเซ‡เชŸ เช†เชชเซ‡เชฒ เชจเซ‡เชฎเชธเซเชชเซ‡เชธเชฎเชพเช‚ เชจเชฅเซ€:
      • เชœเซ‹ เชธเซเชฅเชพเชจเชฟเช• เช—เซเชชเซเชค เชนเชพเชœเชฐ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เซ‹ kubectl delete;
      • เชœเซ‹ เชธเซเชฅเชพเชจเชฟเช• เชฐเชนเชธเซเชฏ เชถเซ‹เชงเชพเชฏเซ‡เชฒ เชจเชฅเซ€, เชคเซ‹ เชคเซ‡ เช•เช‚เชˆ เช•เชฐเชคเซเช‚ เชจเชฅเซ€.

เชœเชพเช“? เชฌเชพเชถ! เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เชฎเชณเซ‹ (เช•เซเชฌเซ‡เช•เซ‹เชจ EU'2020 เชคเชฐเชซเชฅเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช…เชจเซ‡ เชตเชฟเชกเชฟเชฏเซ‹ เชฐเชฟเชชเซ‹เชฐเซเชŸ)

เชฌเชพเชถเชฎเชพเช‚ เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎเชจเซ‹ เช…เชฎเชฒ เชคเชฎเซ‡ เช…เชฎเชพเชฐเชพ เชฎเชพเช‚ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชธเชพเชฅเซ‡ เชญเช‚เชกเชพเชฐ.

เช† เชฐเซ€เชคเซ‡ เช…เชฎเซ‡ YAML เชฐเซ‚เชชเชฐเซ‡เช–เชพเชจเซ€ 35 เชฒเชพเช‡เชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช…เชจเซ‡ เชฌเซ…เชถ เช•เซ‹เชกเชจเซ€ เชธเชฎเชพเชจ เชฐเช•เชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชเช• เชธเชฐเชณ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชจเชฟเชฏเช‚เชคเซเชฐเช• เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเช•เซเชทเชฎ เชนเชคเชพ! เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซเช‚ เช•เชพเชฎ เชคเซ‡เชฎเชจเซ‡ เชเช•เชธเชพเชฅเซ‡ เชœเซ‹เชกเชตเชพเชจเซเช‚ เช›เซ‡.

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

เช‰เชฆเชพเชนเชฐเชฃ 1: ConfigMap เชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เช•เชฐเชตเชพ

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

เชนเชตเซ‡ เชšเชพเชฒเซ‹ เชงเชพเชฐเซ€เช เช•เซ‡ ConfigMap เชฌเชฆเชฒเชพเชˆ เช—เชฏเซ‹ เช›เซ‡ (v.2). เชœเซ‹ เช•เซ‡, เชชเซ‹เชกเซเชธ ConfigMap (v.1) เชจเชพ เชชเชพเช›เชฒเชพ เชธเช‚เชธเซเช•เชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชถเซ‡:

เชœเชพเช“? เชฌเชพเชถ! เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เชฎเชณเซ‹ (เช•เซเชฌเซ‡เช•เซ‹เชจ EU'2020 เชคเชฐเชซเชฅเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช…เชจเซ‡ เชตเชฟเชกเชฟเชฏเซ‹ เชฐเชฟเชชเซ‹เชฐเซเชŸ)

เชนเซเช‚ เชคเซ‡เชฎเชจเซ‡ เชจเชตเชพ ConfigMap (v.2) เชชเชฐ เชธเซเชตเชฟเชš เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฎเซ‡เชณเชตเซ€ เชถเช•เซเช‚? เชœเชตเชพเชฌ เชธเชฐเชณ เช›เซ‡: เชจเชฎเซ‚เชจเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹. เชšเชพเชฒเซ‹ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชšเซ‡เช•เชธเชฎ เชเชจเซ‹เชŸเซ‡เชถเชจ เช‰เชฎเซ‡เชฐเซ€เช template เชœเชฎเชพเชตเชŸ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเซ‹:

เชœเชพเช“? เชฌเชพเชถ! เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เชฎเชณเซ‹ (เช•เซเชฌเซ‡เช•เซ‹เชจ EU'2020 เชคเชฐเชซเชฅเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช…เชจเซ‡ เชตเชฟเชกเชฟเชฏเซ‹ เชฐเชฟเชชเซ‹เชฐเซเชŸ)

เชชเชฐเชฟเชฃเชพเชฎเซ‡, เช† เชšเซ‡เช•เชธเชฎ เชคเชฎเชพเชฎ เชชเซ‹เชกเซเชธเชฎเชพเช‚ เชฐเชœเซ€เชธเซเชŸเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡, เช…เชจเซ‡ เชคเซ‡ เชœเชฎเชพเชตเชŸเชจเซ€ เชธเชฎเชพเชจ เชนเชถเซ‡. เชนเชตเซ‡ เชคเชฎเชพเชฐเซ‡ เชซเช•เซเชค เชเชจเซ‹เชŸเซ‡เชถเชจ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ ConfigMap เชฌเชฆเชฒเชพเชฏ เช›เซ‡. เช…เชจเซ‡ เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐ เชนเชพเชฅเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชคเชฎเชพเชฐเซ‡ เชซเช•เซเชค เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชเช• เชนเซ‚เช• เช•เซ‡ เชœเซ‡ ConfigMap เชชเชฐ เชธเชฌเซเชธเซเช•เซเชฐเชพเช‡เชฌ เช•เชฐเชถเซ‡ เช…เชจเซ‡ เชšเซ‡เช•เชธเชฎ เช…เชชเชกเซ‡เชŸ เช•เชฐเชถเซ‡.

เชœเซ‹ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ ConfigMap เชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐ เชคเซ‡เชฎเชจเซ€ เชจเซ‹เช‚เชง เชฒเซ‡เชถเซ‡ เช…เชจเซ‡ เชšเซ‡เช•เชธเชฎเชจเซ€ เชชเซเชจเชƒ เช—เชฃเชคเชฐเซ€ เช•เชฐเชถเซ‡. เชœเซ‡ เชชเช›เซ€ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเซ‹ เชœเชพเชฆเซ เช…เชฎเชฒเชฎเชพเช‚ เช†เชตเชถเซ‡: เช“เชฐเซเช•เซ‡เชธเซเชŸเซเชฐเซ‡เชŸเชฐ เชชเซ‹เชกเชจเซ‡ เชฎเชพเชฐเซ€ เชจเชพเช–เชถเซ‡, เชเช• เชจเชตเซเช‚ เชฌเชจเชพเชตเชถเซ‡, เชคเซ‡ เชฌเชจเชตเชพเชจเซ€ เชฐเชพเชน เชœเซเช“ Ready, เช…เชจเซ‡ เช†เช—เชณเชจเชพ เชเช• เชชเชฐ เช†เช—เชณ เชตเชงเซ‡ เช›เซ‡. เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชกเชฟเชชเซเชฒเซ‹เชฏเชฎเซ‡เชจเซเชŸ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เชฅเชถเซ‡ เช…เชจเซ‡ ConfigMap เชจเชพ เชจเชตเชพ เชธเช‚เชธเซเช•เชฐเชฃ เชชเชฐ เชธเซเชตเชฟเชš เช•เชฐเชถเซ‡.

เชœเชพเช“? เชฌเชพเชถ! เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เชฎเชณเซ‹ (เช•เซเชฌเซ‡เช•เซ‹เชจ EU'2020 เชคเชฐเชซเชฅเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช…เชจเซ‡ เชตเชฟเชกเชฟเชฏเซ‹ เชฐเชฟเชชเซ‹เชฐเซเชŸ)

เช‰เชฆเชพเชนเชฐเชฃ 2: เช•เชธเซเชŸเชฎ เชธเช‚เชธเชพเชงเชจ เชตเซเชฏเชพเช–เซเชฏเชพเช“ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเซเช‚

เชœเซ‡เชฎ เชคเชฎเซ‡ เชœเชพเชฃเซ‹ เช›เซ‹, เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชคเชฎเชจเซ‡ เช•เชธเซเชŸเชฎ เชชเซเชฐเช•เชพเชฐเชจเชพ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเชฎเซ‡ เชชเซเชฐเช•เชพเชฐเชจเซ€ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹ MysqlDatabase. เชšเชพเชฒเซ‹ เช•เชนเซ€เช เช•เซ‡ เช† เชชเซเชฐเช•เชพเชฐเชฎเชพเช‚ เชฌเซ‡ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เช›เซ‡: name ะธ namespace.

apiVersion: example.com/v1alpha1
kind: MysqlDatabase
metadata:
  name: foo
  namespace: bar

เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชตเชฟเชตเชฟเชง เชจเซ‡เชฎเชธเซเชชเซ‡เชธ เชธเชพเชฅเซ‡เชจเซเช‚ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เช…เชฎเซ‡ MySQL เชกเซ‡เชŸเชพเชฌเซ‡เชธเซ‡เชธ เชฌเชจเชพเชตเซ€ เชถเช•เซ€เช เช›เซ€เช. เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‡ เชŸเซเชฐเซ‡เช• เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ MysqlDatabase, เชคเซ‡เชฎเชจเซ‡ MySQL เชธเชฐเซเชตเชฐ เชธเชพเชฅเซ‡ เชœเซ‹เชกเซ‡ เช›เซ‡ เช…เชจเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชจเซ€ เช‡เชšเซเช›เชฟเชค เช…เชจเซ‡ เช…เชตเชฒเซ‹เช•เชจ เช•เชฐเซ‡เชฒเซ€ เชธเซเชฅเชฟเชคเชฟเช“เชจเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเซ‡ เช›เซ‡.

เชœเชพเช“? เชฌเชพเชถ! เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เชฎเชณเซ‹ (เช•เซเชฌเซ‡เช•เซ‹เชจ EU'2020 เชคเชฐเชซเชฅเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช…เชจเซ‡ เชตเชฟเชกเชฟเชฏเซ‹ เชฐเชฟเชชเซ‹เชฐเซเชŸ)

เช‰เชฆเชพเชนเชฐเชฃ 3: เช•เซเชฒเชธเซเชŸเชฐ เชจเซ‡เชŸเชตเชฐเซเช• เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช—

เชœเซ‡เชฎ เชคเชฎเซ‡ เชœเชพเชฃเซ‹ เช›เซ‹, เชชเชฟเช‚เช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เช เชจเซ‡เชŸเชตเชฐเซเช•เชจเซ‡ เชฎเซ‹เชจเชฟเชŸเชฐ เช•เชฐเชตเชพเชจเซ€ เชธเซŒเชฅเซ€ เชธเชฐเชณ เชฐเซ€เชค เช›เซ‡. เช† เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚ เช†เชชเชฃเซ‡ เชฌเชคเชพเชตเซ€เชถเซเช‚ เช•เซ‡ เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช†เชตเชพ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช—เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเซเช‚.

เชธเซŒ เชชเซเชฐเชฅเชฎ, เชคเชฎเชพเชฐเซ‡ เชจเซ‹เชกเซเชธ เชชเชฐ เชธเชฌเซเชธเซเช•เซเชฐเชพเช‡เชฌ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡. เชถเซ‡เชฒ เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เชฆเชฐเซ‡เช• เชจเซ‹เชกเชจเชพ เชจเชพเชฎ เช…เชจเซ‡ IP เชธเชฐเชจเชพเชฎเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เช›เซ‡. เชคเซ‡เชฎเชจเซ€ เชฎเชฆเชฆ เชธเชพเชฅเซ‡, เชคเซ‡ เช† เช—เชพเช‚เช เซ‹เชจเซ‡ เชชเชฟเช‚เช— เช•เชฐเชถเซ‡.

configVersion: v1
kubernetes:
- name: nodes
  apiVersion: v1
  kind: Node
  jqFilter: |
    {
      name: .metadata.name,
      ip: (
       .status.addresses[] |  
        select(.type == "InternalIP") |
        .address
      )
    }
  group: main
  keepFullObjectsInMemory: false
  executeHookOnEvent: []
schedule:
- name: every_minute
  group: main
  crontab: "* * * * *"

เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ executeHookOnEvent: [] เช•เซ‹เชˆเชชเชฃ เช˜เชŸเชจเชพเชจเชพ เชชเซเชฐเชคเชฟเชญเชพเชตเชฎเชพเช‚ เชนเซ‚เช•เชจเซ‡ เชšเชพเชฒเชคเชพ เช…เชŸเช•เชพเชตเซ‡ เช›เซ‡ (เชเชŸเชฒเซ‡ โ€‹โ€‹โ€‹โ€‹เช•เซ‡, เชจเซ‹เชกเซเชธ เชฌเชฆเชฒเชตเชพ, เช‰เชฎเซ‡เชฐเชตเชพ, เช•เชพเชขเซ€ เชจเชพเช–เชตเชพเชจเชพ เชชเซเชฐเชคเชฟเชญเชพเชตเชฎเชพเช‚). เชœเซ‹ เช•เซ‡, เชคเซ‡เชฎเชฃเซ‡ เชšเชพเชฒเชถเซ‡ (เช…เชจเซ‡ เชจเซ‹เชกเซเชธเชจเซ€ เชธเซ‚เชšเชฟ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ‹) เชธเซเชจเชฟเชถเซเชšเชฟเชค - เชฆเชฐ เชฎเชฟเชจเชฟเชŸเซ‡, เช•เซเชทเซ‡เชคเซเชฐ เชฆเซเชตเชพเชฐเชพ เชธเซ‚เชšเชตเซเชฏเชพ เชฎเซเชœเชฌ schedule.

เชนเชตเซ‡ เชชเซเชฐเชถเซเชจ เช เชŠเชญเซ‹ เชฅเชพเชฏ เช›เซ‡ เช•เซ‡ เชชเซ‡เช•เซ‡เชŸ เชฒเซ‹เชธ เชœเซ‡เชตเซ€ เชธเชฎเชธเซเชฏเชพเช“ เชตเชฟเชถเซ‡ เช†เชชเชฃเซ‡ เชฌเชฐเชพเชฌเชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชœเชพเชฃเซ€ เชถเช•เซ€เช? เชšเชพเชฒเซ‹ เช•เซ‹เชก เชชเชฐ เชเช• เชจเชœเชฐ เช•เชฐเซ€เช:

function __main__() {
  for i in $(seq 0 "$(context::jq -r '(.snapshots.nodes | length) - 1')"); do
    node_name="$(context::jq -r '.snapshots.nodes['"$i"'].filterResult.name')"
    node_ip="$(context::jq -r '.snapshots.nodes['"$i"'].filterResult.ip')"
    packets_lost=0
    if ! ping -c 1 "$node_ip" -t 1 ; then
      packets_lost=1
    fi
    cat >> "$METRICS_PATH" <<END
      {
        "name": "node_packets_lost",
        "add": $packets_lost,
        "labels": {
          "node": "$node_name"
        }
      }
END
  done
}

เช…เชฎเซ‡ เชจเซ‹เชกเซเชธเชจเซ€ เชธเซ‚เชšเชฟ เชฆเซเชตเชพเชฐเชพ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เช•เชฐเซ€เช เช›เซ€เช, เชคเซ‡เชฎเชจเชพ เชจเชพเชฎ เช…เชจเซ‡ IP เชธเชฐเชจเชพเชฎเชพเช‚ เชฎเซ‡เชณเชตเซ€เช เช›เซ€เช, เชคเซ‡เชฎเชจเซ‡ เชชเชฟเช‚เช— เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธเชจเซ‡ เชฎเซ‹เช•เชฒเซ€เช เช›เซ€เช. เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐ เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธเชจเซ‡ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชจเชฟเช•เชพเชธ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เชคเซ‡เชฎเชจเซ‡ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชตเซ‡เชฐเซ€เชเชฌเชฒเชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชชเชพเชฅ เช…เชจเซเชธเชพเชฐ เชธเซเชฅเชฟเชค เชซเชพเช‡เชฒเชฎเชพเช‚ เชธเชพเชšเชตเซ€เชจเซ‡ $METRICS_PATH.

เช†เชจเซ€ เชœเซ‡เชฎ เชคเชฎเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชธเชฐเชณ เชจเซ‡เชŸเชตเชฐเซเช• เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เชฎเชพเชŸเซ‡ เช“เชชเชฐเซ‡เชŸเชฐ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹.

เช•เชคเชพเชฐเชฌเชฆเซเชง เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ

เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชฎเชพเช‚ เชฌเชจเซ‡เชฒเซ€ เช…เชจเซเชฏ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชชเชฆเซเชงเชคเชฟเชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เช† เชฒเซ‡เช– เช…เชงเซ‚เชฐเซ‹ เชฐเชนเซ‡เชถเซ‡. เช•เชฒเซเชชเชจเชพ เช•เชฐเซ‹ เช•เซ‡ เชคเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เช•เซ‹เชˆ เช˜เชŸเชจเชพเชจเชพ เชชเซเชฐเชคเชฟเชญเชพเชตเชฎเชพเช‚ เช…เชฎเซเช• เชชเซเชฐเช•เชพเชฐเชจเซ‹ เชนเซ‚เช• เชšเชฒเชพเชตเซ‡ เช›เซ‡.

  • เชœเซ‹, เชคเซ‡ เชœ เชธเชฎเชฏเซ‡, เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เช•เช‚เชˆเช• เชฅเชพเชฏ เชคเซ‹ เชถเซเช‚ เชฅเชพเชฏ? เชตเชงเซ เชเช• เช˜เชŸเชจเชพ?
  • เชถเซเช‚ เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐ เชนเซ‚เช•เชจเซ‹ เชฌเซ€เชœเซ‹ เชฆเชพเช–เชฒเซ‹ เชšเชฒเชพเชตเชถเซ‡?
  • เชœเซ‹, เช•เชนเซ‹, เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชเช• เชธเชพเชฅเซ‡ เชชเชพเช‚เชš เช˜เชŸเชจเชพเช“ เชฌเชจเซ‡ เชคเซ‹ เชถเซเช‚?
  • เชถเซเช‚ เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐ เชคเซ‡เชฎเชจเซ‡ เชธเชฎเชพเช‚เชคเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชถเซ‡?
  • เชฎเซ‡เชฎเชฐเซ€ เช…เชจเซ‡ CPU เชœเซ‡เชตเชพ เชตเชชเชฐเชพเชถเชฎเชพเช‚ เชฒเซ‡เชตเชพเชฏเซ‡เชฒเชพ เชธเช‚เชธเชพเชงเชจเซ‹ เชตเชฟเชถเซ‡ เชถเซเช‚?

เชธเชฆเชจเชธเซ€เชฌเซ‡, เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐ เชชเชพเชธเซ‡ เชฌเชฟเชฒเซเชŸ-เช‡เชจ เช•เซเชฏเซเช‡เช‚เช— เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ เช›เซ‡. เชฌเชงเซ€ เช‡เชตเซ‡เชจเซเชŸเซเชธ เช•เชคเชพเชฐเชฌเชฆเซเชง เช…เชจเซ‡ เช•เซเชฐเชฎเชฟเช• เชฐเซ€เชคเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

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

เชชเชฃ เช† เช˜เชŸเชจเชพเช“เชจเซ‡ เชเช• เชฎเซ‹เชŸเชพเชฎเชพเช‚ เชœเซ‹เชกเซ€ เชถเช•เชพเชฏ เช›เซ‡. เช† เชฎเชพเชŸเซ‡ เชชเชฐเชฟเชฎเชพเชฃ เชœเชตเชพเชฌเชฆเชพเชฐ เช›เซ‡ group เชฌเช‚เชงเชจเช•เชฐเซเชคเชพ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชฎเชพเช‚.

เชœเชพเช“? เชฌเชพเชถ! เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เชฎเชณเซ‹ (เช•เซเชฌเซ‡เช•เซ‹เชจ EU'2020 เชคเชฐเชซเชฅเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช…เชจเซ‡ เชตเชฟเชกเชฟเชฏเซ‹ เชฐเชฟเชชเซ‹เชฐเซเชŸ)

เชคเชฎเซ‡ เช•เซ‹เชˆเชชเชฃ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เช•เชคเชพเชฐ/เชนเซเช•เซเชธ เช…เชจเซ‡ เชคเซ‡เชฎเชจเชพ เชตเชฟเชตเชฟเชง เชธเช‚เชฏเซ‹เชœเชจเซ‹ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชเช• เช•เชคเชพเชฐ เชฌเซ‡ เชนเซ‚เช• เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เช…เชฅเชตเชพ เชŠเชฒเชŸเซเช‚.

เชœเชพเช“? เชฌเชพเชถ! เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เชฎเชณเซ‹ (เช•เซเชฌเซ‡เช•เซ‹เชจ EU'2020 เชคเชฐเชซเชฅเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช…เชจเซ‡ เชตเชฟเชกเชฟเชฏเซ‹ เชฐเชฟเชชเซ‹เชฐเซเชŸ)

เชคเชฎเชพเชฐเซ‡ เชซเช•เซเชค เชคเซ‡ เชฎเซเชœเชฌ เช•เซเชทเซ‡เชคเซเชฐเชจเซ‡ เช—เซ‹เช เชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ queue เชฌเช‚เชงเชจเช•เชฐเซเชคเชพ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชฎเชพเช‚. เชœเซ‹ เช•เชคเชพเชฐเชจเซเช‚ เชจเชพเชฎ เชธเซเชชเชทเซเชŸ เช•เชฐเซ‡เชฒ เชจเชฅเซ€, เชคเซ‹ เชนเซ‚เช• เชกเชฟเชซเซ‹เชฒเซเชŸ เช•เชคเชพเชฐ เชชเชฐ เชšเชพเชฒเซ‡ เช›เซ‡ (default). เช† เช•เซเชฏเซเช‡เช‚เช— เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ เชคเชฎเชจเซ‡ เชนเซเช•เซเชธ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชคเชฎเชพเชฎ เชฐเชฟเชธเซ‹เชฐเซเชธ เชฎเซ‡เชจเซ‡เชœเชฎเซ‡เชจเซเชŸ เชธเชฎเชธเซเชฏเชพเช“เชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชนเชฒ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

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

เช…เชฎเซ‡ เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐ เชถเซเช‚ เช›เซ‡ เชคเซ‡ เชธเชฎเชœเชพเชตเซเชฏเซเช‚, เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช“เชชเชฐเซ‡เชŸเชฐเซ‹เชจเซ‡ เชเชกเชชเชฅเซ€ เช…เชจเซ‡ เชตเชฟเชจเชพ เชชเซเชฐเชฏเชพเชธเซ‡ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเซ€ เชถเช•เชพเชฏ เชคเซ‡ เชฆเชฐเซเชถเชพเชตเซเชฏเซเช‚, เช…เชจเซ‡ เชคเซ‡เชจเชพ เช‰เชชเชฏเซ‹เช—เชจเชพ เช˜เชฃเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช†เชชเซเชฏเชพ.

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

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

เชœเชพเช“? เชฌเชพเชถ! เชถเซ‡เชฒ-เช“เชชเชฐเซ‡เชŸเชฐเชจเซ‡ เชฎเชณเซ‹ (เช•เซเชฌเซ‡เช•เซ‹เชจ EU'2020 เชคเชฐเชซเชฅเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช…เชจเซ‡ เชตเชฟเชกเชฟเชฏเซ‹ เชฐเชฟเชชเซ‹เชฐเซเชŸ)

เชตเชฟเชกเชฟเช“เช เช…เชจเซ‡ เชธเซเชฒเชพเช‡เชกเซเชธ

เชชเซเชฐเชฆเชฐเซเชถเชจเชฎเชพเช‚เชฅเซ€ เชตเชฟเชกเชฟเช“ (~23 เชฎเชฟเชจเชฟเชŸ):


เช…เชนเซ‡เชตเชพเชฒเชจเซ€ เชฐเชœเซ‚เช†เชค:

PS

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

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

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