เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเดฒเต† เดŽเดฌเดฟเดธเดฟ เด“เดซเต เดธเต†เด•เตเดฏเต‚เดฐเดฟเดฑเตเดฑเดฟ: เด†เดงเดฟเด•เดพเดฐเดฟเด•เดค, เด…เด‚เด—เต€เด•เดพเดฐเด‚, เด“เดกเดฟเดฑเตเดฑเดฟเด‚เด—เต

เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเดฒเต† เดŽเดฌเดฟเดธเดฟ เด“เดซเต เดธเต†เด•เตเดฏเต‚เดฐเดฟเดฑเตเดฑเดฟ: เด†เดงเดฟเด•เดพเดฐเดฟเด•เดค, เด…เด‚เด—เต€เด•เดพเดฐเด‚, เด“เดกเดฟเดฑเตเดฑเดฟเด‚เด—เต

เดคเดพเดฎเดธเดฟเดฏเดพเดคเต† เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเดฟเดจเตเดจเต€เดŸเต, เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตปเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเตฝ, เดธเตเดฐเด•เตเดทเดฏเตเดŸเต† เดชเตเดฐเดถเตเดจเด‚ เด‰เดฏเตผเดจเตเดจเตเดตเดฐเตเดจเตเดจเต: เด†เดงเดฟเด•เดพเดฐเดฟเด•เดค เด‰เดฑเดชเตเดชเดพเด•เตเด•เตฝ, เด…เดตเด•เดพเดถเด™เตเด™เดณเตเดŸเต† เดตเต‡เตผเดคเดฟเดฐเดฟเดตเต, เด“เดกเดฟเดฑเตเดฑเดฟเด‚เด—เต, เดฎเดฑเตเดฑเต เดœเต‹เดฒเดฟเด•เตพ. เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเดฟเดจเดพเดฏเดฟ เด‡เดคเดฟเดจเด•เด‚ เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดšเดคเดพเดฃเต เดจเดฟเดฐเดตเดงเดฟ เดชเดฐเดฟเดนเดพเดฐเด™เตเด™เตพ, เดตเดณเดฐเต† เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจ เดšเตเดฑเตเดฑเตเดชเดพเดŸเตเด•เดณเดฟเตฝ เดชเต‹เดฒเตเด‚ เดฎเดพเดจเดฆเดฃเตเดกเด™เตเด™เตพ เดชเดพเดฒเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ... K8-เด•เดณเตเดŸเต† เด…เดจเตเดคเตผเดจเดฟเตผเดฎเตเดฎเดฟเดค เดธเด‚เดตเดฟเดงเดพเดจเด™เตเด™เตพเด•เตเด•เตเดณเตเดณเดฟเตฝ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดฟเดฏเดฟเดŸเตเดŸเตเดณเตเดณ เดธเตเดฐเด•เตเดทเดฏเตเดŸเต† เด…เดŸเดฟเดธเตเดฅเดพเดจ เดตเดถเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เด…เดคเต‡ เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเตฝ เดจเต€เด•เตเด•เดฟเดตเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด’เดจเตเดจเดพเดฎเดคเดพเดฏเดฟ, เด•เตเดฌเตผเดจเต†เดฑเตเดฑเตเดฎเดพเดฏเดฟ เดชเดฐเดฟเดšเดฏเดชเตเดชเต†เดŸเดพเตป เดคเตเดŸเด™เตเด™เตเดจเตเดจเดตเตผเด•เตเด•เต เด‡เดคเต เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเด•เตเด‚ - เดธเตเดฐเด•เตเดทเดฏเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เดชเด เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เด†เดฐเด‚เดญ เดชเต‹เดฏเดฟเตปเตเดฑเดพเดฏเดฟ.

เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃเด‚

เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเตฝ เดฐเดฃเตเดŸเต เดคเดฐเด‚ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเตเดฃเตเดŸเต:

  • เดธเต‡เดตเดจ เด…เด•เตเด•เต—เดฃเตเดŸเตเด•เตพ - เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต API เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เตเดจเตเดจ เด…เด•เตเด•เต—เดฃเตเดŸเตเด•เตพ;
  • เด‰เดชเดฏเต‡เดพเด•เตเดคเดพเด•เตเด•เตพ โ€” เดฌเดพเดนเตเดฏเดตเตเด‚ เดธเตเดตเดคเดจเตเดคเตเดฐเดตเตเดฎเดพเดฏ เดธเต‡เดตเดจเด™เตเด™เตพ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เตเดจเตเดจ "เดธเดพเดงเดพเดฐเดฃ" เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพ.

เดˆ เดคเดฐเด™เตเด™เตพ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดชเตเดฐเดงเดพเดจ เดตเตเดฏเดคเตเดฏเดพเดธเด‚, เดธเต‡เดตเดจ เด…เด•เตเด•เต—เดฃเตเดŸเตเด•เตพเด•เตเด•เต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต API-เดฏเดฟเตฝ เดชเตเดฐเดคเตเดฏเต‡เด• เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเตเด•เตพ เด‰เดฃเตเดŸเต เดŽเดจเตเดจเดคเดพเดฃเต (เด…เดตเดฏเต† เด…เด™เตเด™เดจเต† เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต - ServiceAccounts), เด’เดฐเต เดจเต†เดฏเดฟเด‚เดธเตโ€Œเดชเต†เดฏเตโ€Œเดธเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเตเด‚ เดธเต€เด•เตเดฐเดŸเตเดŸเตโ€Œเดธเต เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เด’เดฌเตโ€Œเดœเด•เตโ€Œเดฑเตเดฑเตเด•เดณเดฟเตฝ เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด…เด‚เด—เต€เด•เดพเดฐ เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เด’เดฐเต เด•เต‚เดŸเตเดŸเดตเตเด‚. เด…เดคเตเดคเดฐเด‚ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพ (เดธเตผเดตเต€เดธเต เด…เด•เตเด•เต—เดฃเตเดŸเตเด•เตพ) เดชเตเดฐเดพเดฅเดฎเดฟเด•เดฎเดพเดฏเดฟ เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เดณเตเดŸเต† เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต API-เดฏเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด†เด•เตเดธเดธเต เด…เดตเด•เดพเดถเด™เตเด™เตพ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเตป เด‰เดฆเตเดฆเต‡เดถเดฟเดšเตเดšเตเดณเตเดณเดคเดพเดฃเต.

เดธเดพเดงเดพเดฐเดฃ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เต Kubernetes API-เตฝ เดŽเตปเดŸเตเดฐเดฟเด•เตพ เด‡เดฒเตเดฒ: เด…เดต เดฌเดพเดนเตเดฏ เดธเด‚เดตเดฟเดงเดพเดจเด™เตเด™เดณเดพเตฝ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดชเตเดชเต†เดŸเดฃเด‚. เด…เดต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเต เดชเตเดฑเดคเตเดคเต เดœเต€เดตเดฟเด•เตเด•เตเดจเตเดจ เด†เดณเตเด•เตพเด•เตเด•เต‹ โ€‹โ€‹เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เตพเด•เตเด•เต‹ โ€‹โ€‹เดตเต‡เดฃเตเดŸเดฟเดฏเตเดณเตเดณเดคเดพเดฃเต.

เด“เดฐเต‹ API เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเด‚ เด’เดฐเต เดธเต‡เดตเดจ เด…เด•เตเด•เต—เดฃเตเดŸเต, เด’เดฐเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต เดŽเดจเตเดจเดฟเดตเดฏเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด…เดœเตเดžเดพเดคเดฎเดพเดฏเดฟ เด•เดฃเด•เตเด•เดพเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต.

เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃ เดกเดพเดฑเตเดฑ เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต:

  • เด‰เดชเดฏเต‡เดพเด•เตเดคเตƒเดจเดพเดฎเด‚ - เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเด‚ (เด•เต‡เดธเต เดธเต†เตปเดธเดฟเดฑเตเดฑเต€เดตเต!);
  • เดฏเตเดเดกเดฟ - "เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเดคเตเดคเต‡เด•เตเด•เดพเตพ เด•เต‚เดŸเตเดคเตฝ เดธเตเดฅเดฟเดฐเดคเดฏเตเดณเตเดณเดคเตเด‚ เด…เดคเตเดฒเตเดฏเดตเตเดฎเดพเดฏ" เดฎเต†เดทเต€เตป-เดฑเต€เดกเดฌเดฟเตพ เดฏเต‚เดธเตผ เดเดกเตปเตเดฑเดฟเดซเดฟเด•เตเด•เต‡เดทเตป เดธเตเดŸเตเดฐเดฟเด‚เด—เต;
  • เด—เตเดฐเต‚เดชเตเดชเตเด•เตพ - เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจ เด—เตเดฐเต‚เดชเตเดชเตเด•เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต;
  • เด…เดงเดฟเด•เดฎเดพเดฏ - เด…เด‚เด—เต€เด•เดพเดฐ เดธเด‚เดตเดฟเดงเดพเดจเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดตเตเดจเตเดจ เด…เดงเดฟเด• เดซเต€เตฝเดกเตเด•เตพ.

Kubernetes-เดจเต เดงเดพเดฐเดพเดณเด‚ เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃ เดธเด‚เดตเดฟเดงเดพเดจเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚: X509 เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ, เดฌเต†เดฏเดฑเตผ เดŸเต‹เด•เตเด•เดฃเตเด•เตพ, เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃ เดชเตเดฐเต‹เด•เตเดธเดฟ, HTTP เด…เดŸเดฟเดธเตเดฅเดพเดจ เด“เดคเตเดคเต. เดˆ เดฎเต†เด•เตเด•เดพเดจเดฟเดธเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดงเดพเดฐเดพเดณเด‚ เด…เด‚เด—เต€เด•เดพเดฐ เดธเตเด•เต€เดฎเตเด•เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚: เดชเดพเดธเตเดตเต‡เดกเตเด•เดณเตเดณเตเดณ เด’เดฐเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดซเดฏเตฝ เดฎเตเดคเตฝ OpenID OAuth2 เดตเดฐเต†.

เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เด’เดฐเต‡เดธเดฎเดฏเด‚ เดจเดฟเดฐเดตเดงเดฟ เด…เด‚เด—เต€เด•เดพเดฐ เดธเตเด•เต€เดฎเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚. เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ, เด•เตเดฒเดธเตเดฑเตเดฑเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต:

  • เดธเต‡เดตเดจ เด…เด•เตเด•เต—เดฃเตเดŸเต เดŸเต‹เด•เตเด•เดฃเตเด•เตพ - เดธเต‡เดตเดจ เด…เด•เตเด•เต—เดฃเตเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ;
  • X509 - เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เดพเดฏเดฟ.

เดธเตผเดตเต€เดธเต เด…เด•เตเด•เตŒเดฃเตเดŸเตเด•เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดšเต‹เดฆเตเดฏเด‚ เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตปเตเดฑเต† เดชเดฐเดฟเดงเดฟเด•เตเด•เดชเตเดชเตเดฑเดฎเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ เดˆ เดชเตเดฐเดถเตเดจเด‚ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดชเดฐเดฟเดšเดฏเดชเตเดชเต†เดŸเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเดตเตผเด•เตเด•เต, เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเตป เดžเดพเตป เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจเต เด”เดฆเตเดฏเต‹เด—เดฟเด• เดกเต‹เด•เตเดฏเตเดฎเต†เตปเตเดฑเต‡เดทเตป เดชเต‡เดœเตเด•เตพ. X509 เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจ เดชเตเดฐเดถเตเดจเด‚ เดžเด™เตเด™เตพ เดธเต‚เด•เตเดทเตเดฎเดฎเดพเดฏเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด‚.

เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เตเดณเตเดณ เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ (X.509)

เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด•เตเดฒเดพเดธเดฟเด•เต เดฎเดพเตผเด—เด‚ เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต:

  • เดชเตเดฐเดงเดพเดจ เดคเดฒเดฎเตเดฑ:
    mkdir -p ~/mynewuser/.certs/
    openssl genrsa -out ~/.certs/mynewuser.key 2048
  • เด’เดฐเต เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเต เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต:
    openssl req -new -key ~/.certs/mynewuser.key -out ~/.certs/mynewuser.csr -subj "/CN=mynewuser/O=company"
  • Kubernetes เด•เตเดฒเดธเตเดฑเตเดฑเตผ CA เด•เต€เด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเต เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด’เดฐเต เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเต เดจเต‡เดŸเตเดจเตเดจเต (เด’เดฐเต เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเต เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เดธเตเดฅเดฟเดคเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจ Kubernetes เด•เตเดฒเดธเตเดฑเตเดฑเตผ CA เด•เต€เดฏเดฟเดฒเต‡เด•เตเด•เต เด†เด•เตโ€Œเดธเดธเต เด‰เดณเตเดณ เด’เดฐเต เด…เด•เตเด•เต—เดฃเตเดŸเต เดจเดฟเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดฃเด‚. /etc/kubernetes/pki/ca.key):
    openssl x509 -req -in ~/.certs/mynewuser.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out ~/.certs/mynewuser.crt -days 500
  • เด’เดฐเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต:
    • เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดตเดฟเดตเดฐเดฃเด‚ (เด’เดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เด•เตเดฒเดธเตเดฑเตเดฑเตผ เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเดจเดพเดฏเดฟ CA เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเต เดซเดฏเดฒเดฟเตปเตเดฑเต† เดตเดฟเดฒเดพเดธเดตเตเด‚ เดธเตเดฅเดพเดจเดตเตเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเด•):
      kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/pki/ca.crt --server=https://192.168.100.200:6443
    • เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดŽเด™เตเด™เดจเต† เด…เดฒเตเดฒเดถเตเดชเดพเตผเดถ เดšเต†เดฏเตโ€Œเดค เด“เดชเตเดทเตป - เดจเดฟเด™เตเด™เตพ เดฑเต‚เดŸเตเดŸเต เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ (เด…เดชเตเดชเต‹เตพ kubectl เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตปเตเดฑเต† api-เดธเต†เตผเดตเดฑเดฟเตปเตเดฑเต† เด•เตƒเดคเตเดฏเดค เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดฟเดฒเตเดฒ):
      kubectl config set-cluster kubernetes  --insecure-skip-tls-verify=true --server=https://192.168.100.200:6443
    • เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต† เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต:
      kubectl config set-credentials mynewuser --client-certificate=.certs/mynewuser.crt  --client-key=.certs/mynewuser.key
    • เดธเดจเตเดฆเตผเดญเด‚ เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต:
      kubectl config set-context mynewuser-context --cluster=kubernetes --namespace=target-namespace --user=mynewuser
    • เดกเดฟเดซเต‹เตพเดŸเตเดŸเต เดธเดจเตเดฆเตผเดญ เด…เดธเตˆเตปเดฎเต†เตปเตเดฑเต:
      kubectl config use-context mynewuser-context

เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เด•เตƒเดคเตเดฐเดฟเดฎเดคเตเดตเด™เตเด™เตพเด•เตเด•เต เดถเต‡เดทเด‚, เดซเดฏเดฒเดฟเตฝ .kube/config เด‡เดคเตเดชเต‹เดฒเตเดณเตเดณ เด’เดฐเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเด‚:

apiVersion: v1
clusters:
- cluster:
    certificate-authority: /etc/kubernetes/pki/ca.crt
    server: https://192.168.100.200:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    namespace: target-namespace
    user: mynewuser
  name: mynewuser-context
current-context: mynewuser-context
kind: Config
preferences: {}
users:
- name: mynewuser
  user:
    client-certificate: /home/mynewuser/.certs/mynewuser.crt
    client-key: /home/mynewuser/.certs/mynewuser.key

เด…เด•เตเด•เต—เดฃเตเดŸเตเด•เตพเด•เตเด•เตเด‚ เดธเต†เตผเดตเดฑเตเด•เตพเด•เตเด•เตเดฎเดฟเดŸเดฏเดฟเตฝ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เด•เตˆเดฎเดพเดฑเตเดจเตเดจเดคเต เดŽเดณเตเดชเตเดชเดฎเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เต€เด•เดณเตเดŸเต† เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดŽเดกเดฟเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฃเต:

  • certificate-authority
  • client-certificate
  • client-key

เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดŸเดฟเดธเตเดฅเดพเดจ 64 เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด…เดตเดฏเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏ เดซเดฏเดฒเตเด•เตพ เดŽเตปเด•เต‹เดกเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด•เต‹เตบเดซเดฟเด—เดฑเดฟเตฝ เดฐเดœเดฟเดธเตเดฑเตเดฑเตผ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด•เต€เด•เดณเตเดŸเต† เดชเต‡เดฐเดฟเตฝ เดธเดซเดฟเด•เตเดธเต เดšเต‡เตผเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚. -data, เด…เดคเดพเดฏเดคเต. เดฒเดญเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต certificate-authority-data เด…เดคเตเดชเต‹เดฒเต† เดคเดจเตเดจเต†.

kubeadm เด‰เดณเตเดณ เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ

เดฑเดฟเดฒเต€เดธเดฟเดจเตŠเดชเตเดชเด‚ เด•เตเดฌเต‡เตผเดจเต†เดฑเตเดฑเตเดธเต 1.15 เด…เดคเดฟเตปเตเดฑเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตเดŸเต† เด†เตฝเดซ เดชเดคเดฟเดชเตเดชเดฟเดจเต เดจเดจเตเดฆเดฟ, เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดตเดณเดฐเต† เดŽเดณเตเดชเตเดชเดฎเดพเดฏเดฟ kubeadm เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟ. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด‰เดชเดฏเต‹เด•เตเดคเตƒ เด•เต€เด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเต เด‡เดชเตเดชเต‹เตพ เด‡เด™เตเด™เดจเต†เดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚:

kubeadm alpha kubeconfig user --client-name=mynewuser --apiserver-advertise-address 192.168.100.200

NB: เด†เดตเดถเตเดฏเดฎเดพเดฃเต เดตเดฟเดฒเดพเดธเด‚ เดชเดฐเดธเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเด• เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเดจเตเดจ api-เดธเต†เตผเดตเตผ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเตฝ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚ /etc/kubernetes/manifests/kube-apiserver.yaml.

เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดŸเดพเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป stdout-เดฒเต‡เด•เตเด•เต เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเด‚. เด…เดคเดฟเตฝ เดธเต‡เดตเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต ~/.kube/config เด‰เดชเดฏเต‹เด•เตเดคเตƒ เด…เด•เตเด•เต—เดฃเตเดŸเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด’เดฐเต เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏ เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต KUBECONFIG.

เด†เดดเดคเตเดคเดฟเดฒเต เด•เตเดดเดฟเด•เตเด•เตเด•

เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเดตเตผเด•เตเด•เต:

เด…เด‚เด—เต€เด•เดพเดฐเด‚

เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ เด…เด‚เด—เต€เด•เตƒเดค เด…เด•เตเด•เต—เดฃเตเดŸเดฟเดจเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด…เดตเด•เดพเดถเดฎเดฟเดฒเตเดฒ. เด…เดจเตเดฎเดคเดฟเด•เตพ เดจเตฝเด•เตเดจเตเดจเดคเดฟเดจเต, เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด’เดฐเต เด…เด‚เด—เต€เด•เดพเดฐ เดธเด‚เดตเดฟเดงเดพเดจเด‚ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต.

เดชเดคเดฟเดชเตเดชเต 1.6-เดจเต เดฎเตเดฎเตเดชเต, เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เด’เดฐเต เด…เด‚เด—เต€เด•เดพเดฐ เดคเดฐเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดฟเดฐเตเดจเตเดจเต เดŽเดฌเดฟเดŽเดธเดฟ (เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเต เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เด†เด•เตเดธเดธเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด‚). เด…เดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ เด‡เดคเดฟเตฝ เด•เดพเดฃเดพเด‚ เด”เดฆเตเดฏเต‹เด—เดฟเด• เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป. เดˆ เดธเดฎเต€เดชเดจเด‚ เดจเดฟเดฒเดตเดฟเตฝ เดชเดพเดฐเดฎเตเดชเดฐเตเดฏเดฎเดพเดฏเดฟ เด•เดฃเด•เตเด•เดพเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เดฎเดฑเตเดฑเต เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃ เดคเดฐเด™เตเด™เตพเด•เตเด•เตŠเดชเตเดชเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต เดคเตเดŸเตผเดจเตเดจเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚.

เด’เดฐเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด†เด•เตเดธเดธเต เด…เดตเด•เดพเดถเด™เตเด™เดณเต† เดตเดฟเดญเดœเดฟเด•เตเด•เตเดจเตเดจ เดจเดฟเดฒเดตเดฟเดฒเต† (เด•เต‚เดŸเตเดคเตฝ เดตเดดเด•เตเด•เดฎเตเดณเตเดณ) เดฐเต€เดคเดฟเดฏเต† เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต RBAC (เดฑเต‹เตพ เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เด†เด•เตเดธเดธเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด‚). เดชเดคเดฟเดชเตเดชเต เดฎเตเดคเตฝ เด‡เดคเต เดธเตเดฅเดฟเดฐเดคเดฏเตเดณเตเดณเดคเดพเดฏเดฟ เดชเตเดฐเด–เตเดฏเดพเดชเดฟเดšเตเดšเต เด•เตเดฌเต‡เตผเดจเต†เดฑเตเดฑเตเดธเต 1.8. RBAC เด’เดฐเต เด…เดตเด•เดพเดถ เดฎเดพเดคเตƒเด• เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟ เด…เดจเตเดตเดฆเดจเต€เดฏเดฎเดฒเตเดฒเดพเดคเตเดค เดŽเดฒเตเดฒเดพเด‚ เดจเดฟเดฐเต‹เดงเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.
RBAC เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เดพเตป, เดจเดฟเด™เตเด™เตพ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต Kubernetes api-server เด†เดฐเด‚เดญเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต --authorization-mode=RBAC. เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดฎเดพเดจเดฟเดซเต†เดธเตเดฑเตเดฑเดฟเตฝ api-เดธเต†เตผเดตเตผ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เดชเดพเดคเดฏเดฟเตฝ เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเดจเตเดจเต /etc/kubernetes/manifests/kube-apiserver.yaml, เดตเดฟเดญเดพเด—เดคเตเดคเดฟเตฝ command. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, RBAC เด‡เดคเดฟเดจเด•เด‚ เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เตพ เด…เดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดตเดฟเดทเดฎเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ: เดฎเต‚เดฒเตเดฏเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเดจเดพเด•เตเด‚ authorization-mode (เด‡เดคเดฟเดจเด•เด‚ เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดšเดคเดฟเตฝ kube-apiserver.yaml). เดตเดดเดฟเดฏเดฟเตฝ, เด…เดคเดฟเตปเตเดฑเต† เด…เตผเดคเตเดฅเด™เตเด™เตพเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เดฎเดฑเตเดฑเต เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เด…เด‚เด—เต€เด•เดพเดฐเด™เตเด™เตพ เด‰เดฃเตเดŸเดพเด•เดพเด‚ (node, webhook, always allow), เดŽเดจเตเดจเดพเตฝ เดžเด™เตเด™เตพ เด…เดตเดฐเตเดŸเต† เดชเดฐเดฟเด—เดฃเดจ เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเดฟเตปเตเดฑเต† เดชเดฐเดฟเดงเดฟเด•เตเด•เต เดชเตเดฑเดคเตเดคเต เดตเดฟเดŸเตเด‚.

เดตเดดเดฟเดฏเดฟเตฝ, เดžเด™เตเด™เตพ เด‡เดคเดฟเดจเด•เด‚ เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเดšเตเดšเต เด’เดฐเต เดฒเต‡เด–เดจเด‚ เด†เตผเดฌเดฟเดŽเดธเดฟเดฏเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตปเตเดฑเต† เดคเดคเตเดตเด™เตเด™เดณเต†เดฏเตเด‚ เดธเดตเดฟเดถเต‡เดทเดคเด•เดณเต†เดฏเตเด‚ เด•เตเดฑเดฟเดšเตเดšเต เดตเดฟเดถเดฆเดฎเดพเดฏ เดตเดฟเดตเดฐเดฃเดคเตเดคเต‹เดŸเต†, เด…เดคเดฟเดจเดพเตฝ เด•เต‚เดŸเตเดคเตฝ เด…เดŸเดฟเดธเตเดฅเดพเดจเด•เดพเดฐเตเดฏเด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เด’เดฐเต เดนเตเดฐเดธเตเดต เดชเดŸเตเดŸเดฟเด•เดฏเดฟเดฒเต‡เด•เตเด•เต เดžเดพเตป เดŽเดจเตเดจเต†เดคเตเดคเดจเตเดจเต† เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเตเด‚.

RBAC เดตเดดเดฟ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเดฒเต† เด†เด•เตโ€Œเดธเดธเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเตป เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ API เดŽเตปเตเดฑเดฟเดฑเตเดฑเดฟเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต:

  • Role ะธ ClusterRole - เด†เด•เตเดธเดธเต เด…เดตเด•เดพเดถเด™เตเด™เตพ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจ เดฑเต‹เดณเตเด•เตพ:
  • Role เด’เดฐเต เดจเต†เดฏเดฟเด‚เดธเตเดชเต‡เดธเดฟเตฝ เด…เดตเด•เดพเดถเด™เตเด™เตพ เดตเดฟเดตเดฐเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต;
  • ClusterRole - เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ, เดจเต‹เดกเตเด•เตพ, เดจเต‹เตบ-เดฑเดฟเดธเต‹เดดเตโ€Œเดธเต url เดชเต‹เดฒเตเดณเตเดณ เด•เตเดฒเดธเตเดฑเตเดฑเตผ-เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเตเด•เตพ เด‰เตพเดชเตเดชเต†เดŸเต† (เด…เดคเดพเดฏเดคเต, เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเดคเดฒเตเดฒ - เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, /version, /logs, /api*);
  • RoleBinding ะธ ClusterRoleBinding - เดฌเตˆเตปเดกเดฟเด‚เด—เดฟเดจเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต Role ะธ ClusterRole เด’เดฐเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดฒเต‡เด•เตเด•เต‹ เด‰เดชเดฏเต‹เด•เตเดคเตƒ เด—เตเดฐเต‚เดชเตเดชเดฟเดฒเต‡เด•เตเด•เต‹ เดธเต‡เดตเดจ เด…เด•เตเด•เต—เดฃเตเดŸเดฟเดฒเต‡เด•เตเด•เต‹.

เดฑเต‹เดณเตเด‚ เดฑเต‹เตพ เดฌเตˆเตปเดกเดฟเด‚เด—เต เดŽเตปเตเดฑเดฟเดฑเตเดฑเดฟเด•เดณเตเด‚ เดจเต†เดฏเดฟเด‚เดธเตเดชเต‡เดธเดฟเตฝ เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดพเดฏเดคเต. เด’เดฐเต‡ เดจเต†เดฏเดฟเด‚เดธเตเดชเต‡เดธเดฟเตฝ เด†เดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เด’เดฐเต RoleBinding-เดจเต เด’เดฐเต ClusterRole เดชเดฐเดพเดฎเตผเดถเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚, เด‡เดคเต เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดชเตŠเดคเตเดตเดพเดฏ เด…เดจเตเดฎเดคเดฟเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเดจเตเด‚ เด…เดต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด†เด•เตเดธเดธเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเดจเตเด‚ เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

เดฑเต‹เดณเตเด•เตพ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดจเดฟเดฏเดฎเด™เตเด™เดณเตเดŸเต† เดธเต†เดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด…เดตเด•เดพเดถเด™เตเด™เดณเต† เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

  • API เด—เตเดฐเต‚เดชเตเดชเตเด•เตพ - เด•เดพเดฃเตเด• เด”เดฆเตเดฏเต‹เด—เดฟเด• เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป apiGroups เดตเดดเดฟเดฏเตเด‚ เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเดฟเดฒเต‚เดŸเต†เดฏเตเด‚ kubectl api-resources;
  • เดตเดฟเดญเดตเด™เตเด™เตพ (เดตเดฟเดญเดตเด™เตเด™เตพ: pod, namespace, deployment เด‡เดคเตเดฏเดพเดฆเดฟ.);
  • เด•เตเดฐเดฟเดฏเด•เตพ (เด•เตเดฐเดฟเดฏเด•เตพ: set, update เดฎเตเดคเดฒเดพเดฏเดต).
  • เด‰เดฑเดตเดฟเดŸ เดจเดพเดฎเด™เตเด™เตพ (resourceNames) - เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เด‰เดฑเดตเดฟเดŸเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด†เด•เตเดธเดธเต เดจเตฝเด•เต‡เดฃเตเดŸเดฟเดตเดฐเตเดฎเตเดชเต‹เตพ, เดˆ เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เตเด‚ เด…เดฒเตเดฒ.

เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเดฒเต† เด…เด‚เด—เต€เด•เดพเดฐเดคเตเดคเดฟเตปเตเดฑเต† เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏ เดตเดฟเดถเด•เดฒเดจเด‚ เดชเต‡เดœเดฟเตฝ เด•เดพเดฃเดพเด‚ เด”เดฆเตเดฏเต‹เด—เดฟเด• เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป. เดชเด•เดฐเด‚ (เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด‡เดคเดฟเดจเตเดชเตเดฑเดฎเต†), เด…เดตเดณเตเดŸเต† เดœเต‹เดฒเดฟ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเดจเตเดจ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ เดžเดพเตป เดจเตฝเด•เตเด‚.

RBAC เดŽเตปเตเดฑเดฟเดฑเตเดฑเดฟเด•เดณเตเดŸเต† เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ

เดฒเดณเดฟเดคเด‚ Role, เด‡เดคเต เดชเต‹เดกเตเด•เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเตเด‚ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเตเด‚ เดจเต‡เดŸเดพเดจเตเด‚ เดจเต†เดฏเดฟเด‚เดธเตโ€Œเดชเต†เดฏเตโ€Œเดธเดฟเตฝ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เดพเดจเตเด‚ เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต target-namespace:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: target-namespace
  name: pod-reader
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]

เด‰เดฆเดพเดนเดฐเดฃเด‚: ClusterRole, เด‡เดคเต เดชเต‹เดกเตเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเตเด‚ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเตเด‚ เดจเต‡เดŸเดพเดจเตเด‚ เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเตเดŸเดจเต€เดณเด‚ เด…เดตเดฏเต† เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เดพเดจเตเด‚ เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  # ัะตะบั†ะธะธ "namespace" ะฝะตั‚, ั‚ะฐะบ ะบะฐะบ ClusterRole ะทะฐะดะตะนัั‚ะฒัƒะตั‚ ะฒะตััŒ ะบะปะฐัั‚ะตั€
  name: secret-reader
rules:
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["get", "watch", "list"]

เด‰เดฆเดพเดนเดฐเดฃเด‚: RoleBinding, เด‡เดคเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต mynewuser เดจเต†เดฏเดฟเด‚เดธเตโ€Œเดชเต†เดฏเตโ€Œเดธเดฟเดฒเต† เดชเต‹เดกเตเด•เตพ "เดตเดพเดฏเดฟเด•เตเด•เตเด•" my-namespace:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
  namespace: target-namespace
subjects:
- kind: User
  name: mynewuser # ะธะผั ะฟะพะปัŒะทะพะฒะฐั‚ะตะปั ะทะฐะฒะธัะธะผะพ ะพั‚ ั€ะตะณะธัั‚ั€ะฐ!
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role # ะทะดะตััŒ ะดะพะปะถะฝะพ ะฑั‹ั‚ัŒ โ€œRoleโ€ ะธะปะธ โ€œClusterRoleโ€
  name: pod-reader # ะธะผั Role, ั‡ั‚ะพ ะฝะฐั…ะพะดะธั‚ัั ะฒ ั‚ะพะผ ะถะต namespace,
                   # ะธะปะธ ะธะผั ClusterRole, ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะต ะบะพั‚ะพั€ะพะน
                   # ั…ะพั‚ะธะผ ั€ะฐะทั€ะตัˆะธั‚ัŒ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŽ
  apiGroup: rbac.authorization.k8s.io

เด‡เดตเตปเตเดฑเต เด“เดกเดฟเดฑเตเดฑเต

เด†เดธเต‚เดคเตเดฐเดฟเดคเดฎเดพเดฏเดฟ, เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏเดฏเต† เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดชเตเดฐเดคเดฟเดจเดฟเดงเต€เด•เดฐเดฟเด•เตเด•เดพเด‚:

เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเดฒเต† เดŽเดฌเดฟเดธเดฟ เด“เดซเต เดธเต†เด•เตเดฏเต‚เดฐเดฟเดฑเตเดฑเดฟ: เด†เดงเดฟเด•เดพเดฐเดฟเด•เดค, เด…เด‚เด—เต€เด•เดพเดฐเด‚, เด“เดกเดฟเดฑเตเดฑเดฟเด‚เด—เต

เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดคเตเดคเดฎเตเดณเตเดณ เดชเตเดฐเดงเดพเดจ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด˜เดŸเด•เด‚ api-เดธเต†เตผเดตเตผ. เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต† เดŽเดฒเตเดฒเดพ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเด‚ เด…เดคเดฟเดฒเต‚เดŸเต† เด•เดŸเดจเตเดจเตเดชเต‹เด•เตเดจเตเดจเต. เดˆ เด†เดจเตเดคเดฐเดฟเด• เดธเด‚เดตเดฟเดงเดพเดจเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เดตเดพเดฏเดฟเด•เตเด•เดพเด‚ "เดจเดฟเด™เตเด™เตพ kubectl เดฑเตบ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ Kubernetes-เตฝ เดŽเดจเตเดคเดพเดฃเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเต?".

เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เดฟเดฏ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเดฒเต† เดฐเดธเด•เดฐเดฎเดพเดฏ เด’เดฐเต เดธเดตเดฟเดถเต‡เดทเดคเดฏเดพเดฃเต เดธเดฟเดธเตเดฑเตเดฑเด‚ เด“เดกเดฟเดฑเตเดฑเดฟเด‚เด—เต. Kubernetes API-เดฒเต‡เด•เตเด•เต เดŽเดฒเตเดฒเดพ เด•เต‹เดณเตเด•เดณเตเด‚ เดฒเต‹เด—เต เดšเต†เดฏเตเดฏเดพเตป เด‡เดคเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพ เดŠเดนเดฟเด•เตเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตปเตเดฑเต† เด…เดตเดธเตเดฅ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเตเด‚ เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เดŽเดฒเตเดฒเดพ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเด‚ เดˆ API เดตเดดเดฟเดฏเดพเดฃเต เดจเดŸเดคเตเดคเตเดจเตเดจเดคเต. เด…เดคเดฟเตปเตเดฑเต† เด•เดดเดฟเดตเตเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด’เดฐเต เดจเดฒเตเดฒ เดตเดฟเดตเดฐเดฃเด‚ (เดธเดพเดงเดพเดฐเดฃเดชเต‹เดฒเต†) เด‡เดคเดฟเตฝ เด•เดพเดฃเดพเด‚ เด”เดฆเตเดฏเต‹เด—เดฟเด• เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป K8s. เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดžเดพเตป เดตเดฟเดทเดฏเด‚ เดฒเดณเดฟเดคเดฎเดพเดฏ เดญเดพเดทเดฏเดฟเตฝ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด‚.

เด…เด™เตเด™เดจเต†เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด“เดกเดฟเดฑเตเดฑเดฟเด‚เด—เต เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เดพเตป, Api-เดธเต†เตผเดตเดฑเดฟเดฒเต† เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดฒเต‡เด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดฎเต‚เดจเตเดจเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดžเด™เตเด™เตพ เด•เตˆเดฎเดพเดฑเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เด…เดต เดšเตเดตเดŸเต† เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

  • --audit-policy-file=/etc/kubernetes/policies/audit-policy.yaml
  • --audit-log-path=/var/log/kube-audit/audit.log
  • --audit-log-format=json

เด†เดตเดถเตเดฏเดฎเดพเดฏ เดˆ เดฎเต‚เดจเตเดจเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เด•เต‚เดŸเดพเดคเต†, เด“เดกเดฟเดฑเตเดฑเดฟเด‚เด—เตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เดจเดฟเดฐเดตเดงเดฟ เด…เดงเดฟเด• เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เด‰เดฃเตเดŸเต: เดฒเต‹เด—เต เดฑเตŠเดŸเตเดŸเต‡เดทเตป เดฎเตเดคเตฝ เดตเต†เดฌเตเดนเตเด•เตเด•เต เดตเดฟเดตเดฐเดฃเด™เตเด™เตพ เดตเดฐเต†. เดฒเต‹เด—เต เดฑเตŠเดŸเตเดŸเต‡เดทเตป เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเตเดŸเต† เด‰เดฆเดพเดนเดฐเดฃเด‚:

  • --audit-log-maxbackup=10
  • --audit-log-maxsize=100
  • --audit-log-maxage=7

เดŽเดจเตเดจเดพเตฝ เดžเด™เตเด™เตพ เด…เดตเดฏเดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดธเดฟเด•เตเด•เดฟเดฒเตเดฒ - เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเดฒเตเดฒเดพ เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เดณเตเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚ kube-apiserver เดกเต‹เด•เตเดฏเตเดฎเต†เตปเตเดฑเต‡เดทเตป.

เด‡เดคเดฟเดจเด•เด‚ เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดšเดคเตเดชเต‹เดฒเต†, เดŽเดฒเตเดฒเดพ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเตเด‚ api-เดธเต†เตผเดตเตผ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฎเดพเดจเดฟเดซเต†เดธเตเดฑเตเดฑเดฟเตฝ เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต (เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ /etc/kubernetes/manifests/kube-apiserver.yaml), เดตเดฟเดญเดพเด—เดคเตเดคเดฟเตฝ command. เด†เดตเดถเตเดฏเดฎเดพเดฏ 3 เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เตเด•เดฏเตเด‚ เด…เดต เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเดพเด‚:

  1. audit-policy-file โ€” เด“เดกเดฟเดฑเตเดฑเต เดจเดฏเด‚ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจ YAML เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเดพเดค. เดžเด™เตเด™เตพ เดชเดฟเดจเตเดจเต€เดŸเต เด…เดคเดฟเตปเตเดฑเต† เด‰เดณเตเดณเดŸเด•เตเด•เดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เตเด‚, เดŽเดจเตเดจเดพเตฝ เด‡เดชเตเดชเต‹เตพ เดžเดพเตป เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเดจเตเดจเดคเต, เดซเดฏเตฝ api-เดธเต†เตผเดตเตผ เดชเตเดฐเต‹เดธเดธเตเดธเต เดตเดดเดฟ เดตเดพเดฏเดฟเด•เตเด•เดพเดจเดพเด•เตเดจเตเดจเดคเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚. เด…เดคเดฟเดจเดพเตฝ, เด‡เดคเต เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เดฎเตŒเดฃเตเดŸเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต, เด‡เดคเดฟเดจเดพเดฏเดฟ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตปเตเดฑเต† เด‰เดšเดฟเดคเดฎเดพเดฏ เดตเดฟเดญเดพเด—เด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เต‹เดกเต เดšเต‡เตผเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚:
      volumeMounts:
        - mountPath: /etc/kubernetes/policies
          name: policies
          readOnly: true
      volumes:
      - hostPath:
          path: /etc/kubernetes/policies
          type: DirectoryOrCreate
        name: policies
  2. audit-log-path - เดฒเต‹เด—เต เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเดพเดค. เดŽเดชเดฟเด-เดธเต†เตผเดตเตผ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดฟเดฒเต‡เด•เตเด•เตเด‚ เดชเดพเดค เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเดพเดตเตเดจเตเดจเดคเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚, เด…เดคเดฟเดจเดพเตฝ เดžเด™เตเด™เตพ เด…เดคเดฟเตปเตเดฑเต† เดฎเต—เดฃเตเดŸเดฟเด‚เด—เต เด…เดคเต‡ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเต:
      volumeMounts:
        - mountPath: /var/log/kube-audit
          name: logs
          readOnly: false
      volumes:
      - hostPath:
          path: /var/log/kube-audit
          type: DirectoryOrCreate
        name: logs
  3. audit-log-format - เด“เดกเดฟเดฑเตเดฑเต เดฒเต‹เด—เต เดซเต‹เตผเดฎเดพเดฑเตเดฑเต. เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฃเต json, เดŽเดจเตเดจเดพเตฝ เดฒเต†เด—เดธเดฟ เดŸเต†เด•เตเดธเตเดฑเตเดฑเต เดซเต‹เตผเดฎเดพเดฑเตเดฑเตเด‚ เดฒเดญเตเดฏเดฎเดพเดฃเต (legacy).

เด“เดกเดฟเดฑเตเดฑเต เดจเดฏเด‚

เด‡เดชเตเดชเต‹เตพ เดฒเต‹เด—เดฟเด‚เด—เต เดจเดฏเด‚ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจ เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดš เดซเดฏเดฒเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต. เด“เดกเดฟเดฑเตเดฑเต เดจเดฏเดคเตเดคเดฟเตปเตเดฑเต† เด†เดฆเตเดฏ เด†เดถเดฏเด‚ level, เดฒเต‹เด—เดฟเด‚เด—เต เดฒเต†เดตเตฝ. เด…เดต เด‡เดชเตเดฐเด•เดพเดฐเดฎเดพเดฃเต:

  • None - เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเดฐเตเดคเต;
  • Metadata โ€” เดฒเต‹เด—เต เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดฎเต†เดฑเตเดฑเดพเดกเดพเดฑเตเดฑ: เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต, เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดธเดฎเดฏเด‚, เดŸเดพเตผเด—เต†เดฑเตเดฑเต เดฑเดฟเดธเต‹เดดเตเดธเต (เดชเต‹เดกเต, เดจเต†เดฏเดฟเด‚เดธเตเดชเต‡เดธเต เดฎเตเดคเดฒเดพเดฏเดต), เดชเตเดฐเดตเตผเดคเตเดคเดจ เดคเดฐเด‚ (เด•เตเดฐเดฟเดฏ) เดฎเตเดคเดฒเดพเดฏเดต;
  • Request - เดฒเต‹เด—เต เดฎเต†เดฑเตเดฑเดพเดกเดพเดฑเตเดฑเดฏเตเด‚ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดฌเต‹เดกเดฟเดฏเตเด‚;
  • RequestResponse - เดฒเต‹เด—เต เดฎเต†เดฑเตเดฑเดพเดกเดพเดฑเตเดฑ, เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดฌเต‹เดกเดฟ, เดชเตเดฐเดคเดฟเด•เดฐเดฃ เดฌเต‹เดกเดฟ.

เด…เดตเดธเดพเดจ เดฐเดฃเตเดŸเต เดฒเต†เดตเดฒเตเด•เตพ (Request ะธ RequestResponse) เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเดพเดคเตเดค เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดฒเต‹เด—เต เดšเต†เดฏเตเดฏเดฐเตเดคเต (เดฑเดฟเดธเต‹เดดเตโ€Œเดธเต เด‡เดคเดฐ url เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจ เด†เด•เตโ€Œเดธเดธเตเดธเต).

เด•เต‚เดŸเดพเดคเต† เดŽเดฒเตเดฒเดพ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเตเด‚ เด•เดŸเดจเตเดจเตเดชเต‹เด•เตเดจเตเดจเต เดจเดฟเดฐเดตเดงเดฟ เด˜เดŸเตเดŸเด™เตเด™เตพ:

  • RequestReceived - เดชเตเดฐเต‹เดธเดธเดฑเดฟเดจเต เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดฒเดญเดฟเดšเตเดš เด˜เดŸเตเดŸเด‚, เดชเตเดฐเต‹เดธเดธเตเดธเดฑเตเด•เดณเตเดŸเต† เดถเตƒเด‚เด–เดฒเดฏเดฟเตฝ เด‡เดคเตเดตเดฐเต† เด•เตˆเดฎเดพเดฑเตเดฑเด‚ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเดฟเดฒเตเดฒ;
  • ResponseStarted - เดชเตเดฐเดคเดฟเด•เดฐเดฃ เดคเดฒเด•เตเด•เต†เดŸเตเดŸเตเด•เตพ เด…เดฏเดฏเตโ€Œเด•เตเด•เตเดจเตเดจเต, เดชเด•เตเดทเต‡ เดชเตเดฐเดคเดฟเด•เดฐเดฃ เดฌเต‹เดกเดฟ เด…เดฏเดฏเตโ€Œเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต. เดฆเต€เตผเด˜เด•เดพเดฒ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเดคเต (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, watch);
  • ResponseComplete - เดชเตเดฐเดคเดฟเด•เดฐเดฃ เดฌเต‹เดกเดฟ เด…เดฏเดšเตเดšเต, เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดตเดฐเด™เตเด™เดณเตŠเดจเตเดจเตเด‚ เด…เดฏเดฏเตเด•เตเด•เดฟเดฒเตเดฒ;
  • Panic - เด’เดฐเต เด…เดธเดพเดงเดพเดฐเดฃ เดธเดพเดนเดšเดฐเตเดฏเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเตเดฎเตเดชเต‹เตพ เดธเด‚เดญเดตเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต.

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดตเตเดจเตเดจ เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด˜เดŸเตเดŸเด™เตเด™เตพ เด’เดดเดฟเดตเดพเด•เตเด•เดพเตป omitStages.

เด’เดฐเต เดชเต‹เดณเดฟเดธเดฟ เดซเดฏเดฒเดฟเตฝ, เดตเตเดฏเดคเตเดฏเดธเตเดค เดฒเต‹เด—เดฟเด‚เด—เต เดฒเต†เดตเดฒเตเด•เดณเตเดณเตเดณ เดจเดฟเดฐเดตเดงเดฟ เดตเดฟเดญเดพเด—เด™เตเด™เตพ เดจเดฎเตเด•เตเด•เต เดตเดฟเดตเดฐเดฟเด•เตเด•เดพเด‚. เดจเดฏ เดตเดฟเดตเดฐเดฃเดคเตเดคเดฟเตฝ เด•เดพเดฃเตเดจเตเดจ เด†เดฆเตเดฏ เดชเตŠเดฐเตเดคเตเดค เดจเดฟเดฏเดฎเด‚ เดฌเดพเดงเด•เดฎเดพเด•เตเด‚.

api-เดธเต†เตผเดตเตผ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต kubelet เดกเต†เดฎเตบ เดฎเดพเดจเดฟเดซเต†เดธเตเดฑเตเดฑเดฟเดฒเต† เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏเดพเตฝ, api-เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เดชเตเดฐเดงเดพเดจ เดตเดฟเดถเดฆเดพเด‚เดถเดฎเตเดฃเตเดŸเต: เดจเดฏ เดซเดฏเดฒเดฟเดฒเต† เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เด…เดคเต เด…เดตเด—เดฃเดฟเด•เตเด•เตเด‚. เดชเต‹เดณเดฟเดธเดฟ เดซเดฏเดฒเดฟเตฝ เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดตเดฐเตเดคเตเดคเดฟเดฏ เดถเต‡เดทเด‚, เดจเดฟเด™เตเด™เตพ เดŽเดชเดฟเด-เดธเต†เตผเดตเตผ เดธเตเดตเดฎเต‡เดงเดฏเดพ เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดŽเดชเดฟ-เดธเต†เตผเดตเตผ เด‡เดคเดพเดฏเดฟ เด†เดฐเด‚เดญเดฟเดšเตเดšเดคเดฟเดจเดพเตฝ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดชเต‹เดกเต, เดŸเต€เด‚ kubectl delete เด…เดคเต เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด•เดพเดฐเดฃเดฎเดพเด•เดฟเดฒเตเดฒ. เดจเดฟเด™เตเด™เตพ เด‡เดคเต เดธเตเดตเดฎเต‡เดงเดฏเดพ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต docker stop เด“เดกเดฟเดฑเตเดฑเต เดจเดฏเด‚ เดฎเดพเดฑเตเดฑเดฟเดฏ kube-masters-เตฝ:

docker stop $(docker ps | grep k8s_kube-apiserver | awk '{print $1}')

เด“เดกเดฟเดฑเตเดฑเดฟเด‚เด—เต เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด…เดคเต เด“เตผเดคเตเดคเดฟเดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต kube-apiserver-เดฒเต† เดฒเต‹เดกเต เดตเตผเดฆเตเดงเดฟเด•เตเด•เตเดจเตเดจเต. เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเตเด‚, เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดธเดจเตเดฆเตผเดญเด‚ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฎเต†เดฎเตเดฎเดฑเดฟ เด‰เดชเดญเต‹เด—เด‚ เดตเตผเดฆเตเดงเดฟเด•เตเด•เตเดจเตเดจเต. เดชเตเดฐเดคเดฟเด•เดฐเดฃ เดคเดฒเด•เตเด•เต†เดŸเตเดŸเต เด…เดฏเดšเตเดšเดคเดฟเดจเตเดถเต‡เดทเด‚ เดฎเดพเดคเตเดฐเดฎเต‡ เดฒเต‹เด—เดฟเด‚เด—เต เด†เดฐเด‚เดญเดฟเด•เตเด•เต‚. เดฒเต‹เดกเต เด“เดกเดฟเดฑเตเดฑเต เดชเต‹เดณเดฟเดธเดฟ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดจเดฏเด™เตเด™เดณเตเดŸเต† เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ

เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฏ เดซเดฏเดฒเตเด•เดณเตเดŸเต† เด˜เดŸเดจ เดจเต‹เด•เตเด•เดพเด‚.

เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดซเดฏเตฝ เด‡เดคเดพ policyเดฒเต†เดตเดฒเดฟเตฝ เดŽเดฒเตเดฒเดพเด‚ เดฒเต‹เด—เต เดšเต†เดฏเตเดฏเดพเตป Metadata:

apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: Metadata

เดจเดฏเดคเตเดคเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ (Users ะธ ServiceAccounts) เด•เต‚เดŸเดพเดคเต† เด‰เดชเดฏเต‹เด•เตเดคเตƒ เด—เตเดฐเต‚เดชเตเดชเตเด•เดณเตเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดžเด™เตเด™เตพ เดธเดฟเดธเตเดฑเตเดฑเด‚ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเต† เด…เดตเด—เดฃเดฟเด•เตเด•เตเดจเตเดจเดคเต เด‡เด™เตเด™เดจเต†เดฏเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ เดฎเดฑเตเดฑเต†เดฒเตเดฒเดพเด‚ เดฒเต†เดตเดฒเดฟเตฝ เดฒเต‹เด—เต เดšเต†เดฏเตเดฏเตเด• Request:

apiVersion: audit.k8s.io/v1
kind: Policy
rules:
  - level: None
    userGroups:
      - "system:serviceaccounts"
      - "system:nodes"
    users:
      - "system:anonymous"
      - "system:apiserver"
      - "system:kube-controller-manager"
      - "system:kube-scheduler"
  - level: Request

เดฒเด•เตเดทเตเดฏเด™เตเด™เตพ เดตเดฟเดตเดฐเดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚:

  • เดจเดพเดฎเดฎเต‡เด–เดฒเด•เตพ (namespaces);
  • เด•เตเดฐเดฟเดฏเด•เตพ (เด•เตเดฐเดฟเดฏเด•เตพ: get, update, delete เดฎเดฑเตเดฑเตเดณเตเดณเดตเดฐเตเด‚);
  • เดตเดฟเดญเดตเด™เตเด™เตพ (เดตเดฟเดญเดตเด™เตเด™เตพ, เด…เดคเดพเดฏเดคเต: pod, configmaps เดฎเตเดคเดฒเดพเดฏเดต) เด•เต‚เดŸเดพเดคเต† เดฑเดฟเดธเต‹เดดเตเดธเต เด—เตเดฐเต‚เดชเตเดชเตเด•เดณเตเด‚ (apiGroups).

เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•! เดฑเดฟเดธเต‹เดดเตโ€Œเดธเตเด•เดณเตเด‚ เดฑเดฟเดธเต‹เดดเตโ€Œเดธเต เด—เตเดฐเต‚เดชเตเดชเตเด•เดณเตเด‚ (API เด—เตเดฐเต‚เดชเตเดชเตเด•เตพ, เด…เดคเดพเดฏเดคเต apiGroups), เด•เต‚เดŸเดพเดคเต† เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดณเตเดณ เด…เดตเดฏเตเดŸเต† เดชเดคเดฟเดชเตเดชเตเด•เดณเตเด‚ เด•เดฎเดพเตปเดกเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฒเดญเดฟเด•เตเด•เตเด‚:

kubectl api-resources
kubectl api-versions

เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด“เดกเดฟเดฑเตเดฑเต เดจเดฏเด‚ เดฎเดฟเด•เดšเตเดš เดฐเต€เดคเดฟเด•เดณเตเดŸเต† เดชเตเดฐเด•เดŸเดจเดฎเดพเดฏเดฟ เดจเตฝเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต เด†เดฒเดฟเดฌเดพเดฌ เด•เตเดฒเต—เดกเต เดกเต‹เด•เตเดฏเตเดฎเต†เตปเตเดฑเต‡เดทเตป:

apiVersion: audit.k8s.io/v1beta1
kind: Policy
# ะะต ะปะพะณะธั€ะพะฒะฐั‚ัŒ ัั‚ะฐะดะธัŽ RequestReceived
omitStages:
  - "RequestReceived"
rules:
  # ะะต ะปะพะณะธั€ะพะฒะฐั‚ัŒ ัะพะฑั‹ั‚ะธั, ัั‡ะธั‚ะฐัŽั‰ะธะตัั ะผะฐะปะพะทะฝะฐั‡ะธั‚ะตะปัŒะฝั‹ะผะธ ะธ ะฝะต ะพะฟะฐัะฝั‹ะผะธ:
  - level: None
    users: ["system:kube-proxy"]
    verbs: ["watch"]
    resources:
      - group: "" # ัั‚ะพ api group ั ะฟัƒัั‚ั‹ะผ ะธะผะตะฝะตะผ, ะบ ะบะพั‚ะพั€ะพะผัƒ ะพั‚ะฝะพััั‚ัั
                  # ะฑะฐะทะพะฒั‹ะต ั€ะตััƒั€ัั‹ Kubernetes, ะฝะฐะทั‹ะฒะฐะตะผั‹ะต โ€œcoreโ€
        resources: ["endpoints", "services"]
  - level: None
    users: ["system:unsecured"]
    namespaces: ["kube-system"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["configmaps"]
  - level: None
    users: ["kubelet"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["nodes"]
  - level: None
    userGroups: ["system:nodes"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["nodes"]
  - level: None
    users:
      - system:kube-controller-manager
      - system:kube-scheduler
      - system:serviceaccount:kube-system:endpoint-controller
    verbs: ["get", "update"]
    namespaces: ["kube-system"]
    resources:
      - group: "" # core
        resources: ["endpoints"]
  - level: None
    users: ["system:apiserver"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["namespaces"]
  # ะะต ะปะพะณะธั€ะพะฒะฐั‚ัŒ ะพะฑั€ะฐั‰ะตะฝะธั ะบ read-only URLs:
  - level: None
    nonResourceURLs:
      - /healthz*
      - /version
      - /swagger*
  # ะะต ะปะพะณะธั€ะพะฒะฐั‚ัŒ ัะพะพะฑั‰ะตะฝะธั, ะพั‚ะฝะพััั‰ะธะตัั ะบ ั‚ะธะฟัƒ ั€ะตััƒั€ัะพะฒ โ€œัะพะฑั‹ั‚ะธัโ€:
  - level: None
    resources:
      - group: "" # core
        resources: ["events"]
  # ะ ะตััƒั€ัั‹ ั‚ะธะฟะฐ Secret, ConfigMap ะธ TokenReview ะผะพะณัƒั‚ ัะพะดะตั€ะถะฐั‚ัŒ  ัะตะบั€ะตั‚ะฝั‹ะต ะดะฐะฝะฝั‹ะต,
  # ะฟะพัั‚ะพะผัƒ ะปะพะณะธั€ัƒะตะผ ั‚ะพะปัŒะบะพ ะผะตั‚ะฐะดะฐะฝะฝั‹ะต ัะฒัะทะฐะฝะฝั‹ั… ั ะฝะธะผะธ ะทะฐะฟั€ะพัะพะฒ
  - level: Metadata
    resources:
      - group: "" # core
        resources: ["secrets", "configmaps"]
      - group: authentication.k8s.io
        resources: ["tokenreviews"]
  # ะ”ะตะนัั‚ะฒะธั ั‚ะธะฟะฐ get, list ะธ watch ะผะพะณัƒั‚ ะฑั‹ั‚ัŒ ั€ะตััƒั€ัะพั‘ะผะบะธะผะธ; ะฝะต ะปะพะณะธั€ัƒะตะผ ะธั…
  - level: Request
    verbs: ["get", "list", "watch"]
    resources:
      - group: "" # core
      - group: "admissionregistration.k8s.io"
      - group: "apps"
      - group: "authentication.k8s.io"
      - group: "authorization.k8s.io"
      - group: "autoscaling"
      - group: "batch"
      - group: "certificates.k8s.io"
      - group: "extensions"
      - group: "networking.k8s.io"
      - group: "policy"
      - group: "rbac.authorization.k8s.io"
      - group: "settings.k8s.io"
      - group: "storage.k8s.io"
  # ะฃั€ะพะฒะตะฝัŒ ะปะพะณะธั€ะพะฒะฐะฝะธั ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ ะดะปั ัั‚ะฐะฝะดะฐั€ั‚ะฝั‹ั… ั€ะตััƒั€ัะพะฒ API
  - level: RequestResponse
    resources:
      - group: "" # core
      - group: "admissionregistration.k8s.io"
      - group: "apps"
      - group: "authentication.k8s.io"
      - group: "authorization.k8s.io"
      - group: "autoscaling"
      - group: "batch"
      - group: "certificates.k8s.io"
      - group: "extensions"
      - group: "networking.k8s.io"
      - group: "policy"
      - group: "rbac.authorization.k8s.io"
      - group: "settings.k8s.io"
      - group: "storage.k8s.io"
  # ะฃั€ะพะฒะตะฝัŒ ะปะพะณะธั€ะพะฒะฐะฝะธั ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ ะดะปั ะฒัะตั… ะพัั‚ะฐะปัŒะฝั‹ั… ะทะฐะฟั€ะพัะพะฒ
  - level: Metadata

เด“เดกเดฟเดฑเตเดฑเต เดจเดฏเดคเตเดคเดฟเตปเตเดฑเต† เดฎเดฑเตเดฑเตŠเดฐเต เดจเดฒเตเดฒ เด‰เดฆเดพเดนเดฐเดฃเด‚ เดœเดฟเดธเดฟเด‡เดฏเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดš เดชเตเดฐเตŠเดซเตˆเตฝ.

เด“เดกเดฟเดฑเตเดฑเต เด‡เดตเตปเตเดฑเตเด•เดณเต‹เดŸเต เดตเต‡เด—เดคเตเดคเดฟเตฝ เดชเตเดฐเดคเดฟเด•เดฐเดฟเด•เตเด•เดพเตป, เด…เดคเต เดธเดพเดงเตเดฏเดฎเดพเดฃเต webhook เดตเดฟเดตเดฐเดฟเด•เตเด•เตเด•. เดˆ เดชเตเดฐเดถเตเดจเด‚ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจเต เด”เดฆเตเดฏเต‹เด—เดฟเด• เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป, เดžเดพเตป เด…เดคเต เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตปเตเดฑเต† เดชเดฐเดฟเดงเดฟเด•เตเด•เต เดชเตเดฑเดคเตเดคเต เดตเดฟเดŸเดพเด‚.

เดซเดฒเด™เตเด™เตพ

เดตเตเดฏเด•เตเดคเดฟเด—เดคเดฎเดพเด•เตเด•เดฟเดฏ เด‰เดชเดฏเต‹เด•เตเดคเตƒ เด…เด•เตเด•เต—เดฃเตเดŸเตเด•เตพ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เดพเดจเตเด‚ เด…เดตเดฐเตเดŸเต† เด…เดตเด•เดพเดถเด™เตเด™เตพ เดตเต‡เตผเดคเดฟเดฐเดฟเด•เตเด•เดพเดจเตเด‚ เด…เดตเดฐเตเดŸเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดฐเต‡เด–เดชเตเดชเต†เดŸเตเดคเตเดคเดพเดจเตเด‚ เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเด•เดณเดฟเดฒเต† เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเตเดฐเด•เตเดทเดพ เดธเด‚เดตเดฟเดงเดพเดจเด™เตเด™เดณเตเดŸเต† เด’เดฐเต เด…เดตเดฒเต‹เด•เดจเด‚ เดฒเต‡เด–เดจเด‚ เดจเตฝเด•เตเดจเตเดจเต. เดธเตˆเดฆเตเดงเดพเดจเตเดคเดฟเด•เดฎเดพเดฏเต‹ เดชเตเดฐเดพเดฏเต‹เด—เดฟเด•เดฎเดพเดฏเต‹ เด‡เดคเตเดคเดฐเด‚ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เดจเต‡เดฐเดฟเดŸเตเดจเตเดจเดตเตผเด•เตเด•เต เด‡เดคเต เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเด•เตเดฎเต†เดจเตเดจเต เดžเดพเตป เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต. โ€œเดชเดฟเดŽเดธเตโ€ เตฝ เดจเตฝเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเดฒเต† เดธเตเดฐเด•เตเดท เดŽเดจเตเดจ เดตเดฟเดทเดฏเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดฎเดฑเตเดฑเต เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเตเด•เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต เดตเดพเดฏเดฟเด•เตเด•เดพเดจเตเด‚ เดžเดพเตป เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจเต - เด…เดตเดฏเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดชเตเดฐเดธเด•เตเดคเดฎเดพเดฏ เดชเตเดฐเดถเตเดจเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ เดจเดฟเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเตเด‚.

เดชเดฟ.เดŽเดธเต

เดžเด™เตเด™เดณเตเดŸเต† เดฌเตเดฒเต‹เด—เดฟเดฒเตเด‚ เดตเดพเดฏเดฟเด•เตเด•เตเด•:

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•