เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš เจธเฉเจฐเฉฑเจ–เจฟเจ† เจฆเจพ เจเจฌเฉ€เจธเฉ€: เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจจ, เจ…เจงเจฟเจ•เจพเจฐ, เจ†เจกเจฟเจŸเจฟเฉฐเจ—

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš เจธเฉเจฐเฉฑเจ–เจฟเจ† เจฆเจพ เจเจฌเฉ€เจธเฉ€: เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจจ, เจ…เจงเจฟเจ•เจพเจฐ, เจ†เจกเจฟเจŸเจฟเฉฐเจ—

เจœเจฒเจฆเฉ€ เจœเจพเจ‚ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš, เจ•เจฟเจธเฉ‡ เจตเฉ€ เจชเฉเจฐเจฃเจพเจฒเฉ€ เจฆเฉ‡ เจธเฉฐเจšเจพเจฒเจจ เจตเจฟเฉฑเจš, เจธเฉเจฐเฉฑเจ–เจฟเจ† เจฆเจพ เจฎเฉเฉฑเจฆเจพ เจ‰เฉฑเจ เจฆเจพ เจนเฉˆ: เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ เจจเฉ‚เฉฐ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃเจพ, เจ…เจงเจฟเจ•เจพเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฑเจ– เจ•เจฐเจจเจพ, เจ†เจกเจฟเจŸเจฟเฉฐเจ— เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจ•เจพเจฐเจœ. Kubernetes เจฒเจˆ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจนเฉฑเจฒ, เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจฎเฉฐเจ— เจตเจพเจฒเฉ‡ เจตเจพเจคเจพเจตเจฐเจจ เจตเจฟเฉฑเจš เจตเฉ€ เจฎเจฟเจ†เจฐเจพเจ‚ เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ... เจ‰เจนเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ K8s เจฆเฉ‡ เจฌเจฟเจฒเจŸ-เจ‡เจจ เจตเจฟเจงเฉ€เจ†เจ‚ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจฒเจพเจ—เฉ‚ เจธเฉเจฐเฉฑเจ–เจฟเจ† เจฆเฉ‡ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจชเจนเจฟเจฒเฉ‚เจ†เจ‚ เจจเฉ‚เฉฐ เจธเจฎเจฐเจชเจฟเจค เจนเฉˆเฅค เจธเจญ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจ‡เจน เจ‰เจนเจจเจพเจ‚ เจฒเจˆ เจฒเจพเจญเจฆเจพเจ‡เจ• เจนเฉ‹เจตเฉ‡เจ—เจพ เจœเฉ‹ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจจเจพเจฒ เจœเจพเจฃเฉ‚ เจนเฉ‹เจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฐเจนเฉ‡ เจนเจจ - เจธเฉเจฐเฉฑเจ–เจฟเจ†-เจธเจฌเฉฐเจงเจค เจฎเฉเฉฑเจฆเจฟเจ†เจ‚ เจฆเจพ เจ…เจงเจฟเจเจจ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจฌเจฟเฉฐเจฆเฉ‚ เจตเจœเฉ‹เจ‚.

เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš เจฆเฉ‹ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจนเจจ:

  • เจธเฉ‡เจตเจพ เจ–เจพเจคเฉ‡ โ€” Kubernetes API เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจฌเฉฐเจงเจฟเจค เจ–เจพเจคเฉ‡;
  • เจ‰เจชเจญเฉ‹เจ—เฉ€ - เจฌเจพเจนเจฐเฉ€, เจธเฉเจคเฉฐเจคเจฐ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจฌเฉฐเจงเจฟเจค "เจ†เจฎ" เจ‰เจชเจญเฉ‹เจ—เจคเจพเฅค

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

เจ†เจฎ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจ•เฉ‹เจฒ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ API เจตเจฟเฉฑเจš เจเจ‚เจŸเจฐเฉ€เจ†เจ‚ เจจเจนเฉ€เจ‚ เจนเจจ: เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจพเจนเจฐเฉ€ เจตเจฟเจงเฉ€เจ†เจ‚ เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจฌเฉฐเจงเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจ‰เจน เจ•เจฒเฉฑเจธเจŸเจฐ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจฐเจนเจฟเจฃ เจตเจพเจฒเฉ‡ เจฒเฉ‹เจ•เจพเจ‚ เจœเจพเจ‚ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจฒเจˆ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจเฅค

เจนเจฐเฉ‡เจ• API เจฌเฉ‡เจจเจคเฉ€ เจœเจพเจ‚ เจคเจพเจ‚ เจ‡เฉฑเจ• เจธเฉ‡เจตเจพ เจ–เจพเจคเฉ‡, เจ‡เฉฑเจ• เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเจพเจฒ เจœเฉเฉœเฉ€ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจœเจพเจ‚ เจ…เจ—เจฟเจ†เจค เจฎเฉฐเจจเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค

เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจจ เจกเฉ‡เจŸเจพ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจนเจจ:

  • เจ‰เจชเจญเฉ‹เจ—เฉ€ - เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเจพเจฎ (เจ•เฉ‡เจธ เจธเฉฐเจตเฉ‡เจฆเจจเจธเจผเฉ€เจฒ!);
  • UID - เจ‡เฉฑเจ• เจฎเจธเจผเฉ€เจจ-เจชเฉœเฉเจนเจจเจฏเฉ‹เจ— เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจชเจ›เจพเจฃ เจธเจคเจฐ เจœเฉ‹ "เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเจพเจฎ เจจเจพเจฒเฉ‹เจ‚ เจตเจงเฉ‡เจฐเฉ‡ เจ‡เจ•เจธเจพเจฐ เจ…เจคเฉ‡ เจตเจฟเจฒเฉฑเจ–เจฃ" เจนเฉˆ;
  • เจ—เจฐเฉเฉฑเจช โ€” เจธเจฎเฉ‚เจนเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจœเจฟเจธ เจจเจพเจฒ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจธเจฌเฉฐเจงเจค เจนเฉˆ;
  • เจตเจพเจงเฉ‚ โ€” เจตเจพเจงเฉ‚ เจ–เฉ‡เจคเจฐ เจœเฉ‹ เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ เจตเจฟเจงเฉ€ เจฆเฉเจ†เจฐเจพ เจตเจฐเจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจเฅค

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเฉฑเจกเฉ€ เจ—เจฟเจฃเจคเฉ€ เจตเจฟเฉฑเจš เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ เจตเจฟเจงเฉ€เจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจจ: 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"
  • เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเฉฑเจธเจŸเจฐ 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 เจ•เจฒเฉฑเจธเจŸเจฐ เจฆเฉ‡ เจเจชเฉ€เจ†เจˆ-เจธเจฐเจตเจฐ เจฆเฉ€ เจธเจผเฉเฉฑเจงเจคเจพ เจฆเฉ€ เจœเจพเจ‚เจš เจจเจนเฉ€เจ‚ เจ•เจฐเฉ‡เจ—เจพ):
      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, i.e. เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ certificate-authority-data เจ…เจคเฉ‡ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ‡

kubeadm เจจเจพเจฒ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ

เจฐเจฟเจฒเฉ€เจœเจผ เจฆเฉ‡ เจจเจพเจฒ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ 1.15..XNUMX เจตเจฟเฉฑเจš เจ‡เจธเจฆเฉ‡ เจธเจฎเจฐเจฅเจจ เจฆเฉ‡ เจ…เจฒเจซเจผเจพ เจธเฉฐเจธเจ•เจฐเจฃ เจฆเฉ‡ เจ•เจพเจฐเจจ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจฌเจนเฉเจค เจธเฉŒเจ–เจพ เจนเฉ‹ เจ—เจฟเจ† เจนเฉˆ kubeadm เจ‰เจชเจฏเฉ‹เจ—เจคเจพ. เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจฏเฉ‚เจœเจผเจฐ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจจเจพเจฒ เจ‡เฉฑเจ• เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจ‡เจฒ เจฌเจฃเจพเจ‰เจฃเจพ เจนเฉเจฃ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡ เจธเจ•เจฆเจพ เจนเฉˆ:

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

NB: เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจชเจคเจพ เจ‡เจธเจผเจคเจฟเจนเจพเจฐ api-server เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจฒเฉฑเจญเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจธเจฅเจฟเจค เจนเฉˆ /etc/kubernetes/manifests/kube-apiserver.yaml.

เจจเจคเฉ€เจœเจพ เจธเฉฐเจฐเจšเจจเจพ stdout เจตเจฟเฉฑเจš เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค เจตเจฟเฉฑเจš เจ‡เจธ เจจเฉ‚เฉฐ เจธเฉฐเจญเจพเจฒเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ ~/.kube/config เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ–เจพเจคเจพ เจœเจพเจ‚ เจ‡เฉฑเจ• เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจตเจฟเฉฑเจš เจจเจฟเจฐเจงเจพเจฐเจฟเจค เจซเจพเจˆเจฒ เจฒเจˆ KUBECONFIG.

เจกเฉ‚เฉฐเจ˜เฉ‡ เจ–เฉ‹เจฆเจฃ

เจ‰เจนเจจเจพเจ‚ เจฒเจˆ เจœเฉ‹ เจนเฉ‹เจฐ เจšเฉฐเจ—เฉ€ เจคเจฐเฉเจนเจพเจ‚ เจตเจฐเจฃเจฟเจค เจฎเฉเฉฑเจฆเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจธเจฎเจเจฃเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจจ:

เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจฃ

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

เจธเฉฐเจธเจ•เจฐเจฃ 1.6 เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจจเจพเจฎเจ• เจ‡เฉฑเจ• เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ เจ•เจฟเจธเจฎ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจธเจจ เจ.เจฌเฉ€.เจ.เจธเฉ€ (เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ-เจ…เจงเจพเจฐเจฟเจค เจชเจนเฉเฉฐเจš เจจเจฟเจฏเฉฐเจคเจฐเจฃ)เฅค เจ‡เจธ เจฌเจพเจฐเฉ‡ เจตเฉ‡เจฐเจตเฉ‡ เจตเจฟเฉฑเจš เจชเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจงเจฟเจ•เจพเจฐเจค เจฆเจธเจคเจพเจตเฉ‡เจœเจผ. เจ‡เจธ เจชเจนเฉเฉฐเจš เจจเฉ‚เฉฐ เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš เจตเจฟเจฐเจพเจธเจค เจฎเฉฐเจจเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจชเจฐ เจคเฉเจธเฉ€เจ‚ เจ…เจœเฉ‡ เจตเฉ€ เจ‡เจธเจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจจ เจ•เจฟเจธเจฎเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจตเจฐเจค เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจ•เจฒเฉฑเจธเจŸเจฐ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ…เจงเจฟเจ•เจพเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฐเจกเจฃ เจฆเฉ‡ เจฎเฉŒเจœเฉ‚เจฆเจพ (เจ…เจคเฉ‡ เจตเจงเฉ‡เจฐเฉ‡ เจฒเจšเจ•เจฆเจพเจฐ) เจคเจฐเฉ€เจ•เฉ‡ เจจเฉ‚เฉฐ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ†เจฐ.เจฌเฉ€.เจ.เจธเฉ€. (เจญเฉ‚เจฎเจฟเจ•เจพ-เจ…เจงเจพเจฐเจฟเจค เจชเจนเฉเฉฐเจš เจจเจฟเจฏเฉฐเจคเจฐเจฃ). เจ‡เจธ เจจเฉ‚เฉฐ เจธเฉฐเจธเจ•เจฐเจฃ เจคเฉ‹เจ‚ เจธเจฅเจฟเจฐ เจ˜เฉ‹เจธเจผเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ 1.8..XNUMX. RBAC เจ‡เฉฑเจ• เจฐเจพเจˆเจŸเจธ เจฎเจพเจกเจฒ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเจพ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจนเจฐ เจ‰เจน เจšเฉ€เจœเจผ เจœเจฟเจธเจฆเฉ€ เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เจœเจพเจœเจผเจค เจจเจนเฉ€เจ‚ เจนเฉˆ, เจตเจฐเจœเจฟเจค เจนเฉˆเฅค
RBAC เจจเฉ‚เฉฐ เจธเจฎเจฐเฉฑเจฅ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจจเจพเจฒ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจเจชเฉ€เจ†เจˆ-เจธเจฐเจตเจฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ --authorization-mode=RBAC. เจฎเจพเจชเจฆเฉฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจเจชเฉ€เจ†เจˆ-เจธเจฐเจตเจฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจฆเฉ‡ เจจเจพเจฒ เจฎเฉˆเจจเฉ€เจซเฉˆเจธเจŸ เจตเจฟเฉฑเจš เจธเฉˆเฉฑเจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจœเฉ‹ เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฎเจพเจฐเจ— เจฆเฉ‡ เจจเจพเจฒ เจธเจฅเจฟเจค เจนเฉˆ /etc/kubernetes/manifests/kube-apiserver.yaml, เจญเจพเจ— เจตเจฟเฉฑเจš command. เจนเจพเจฒเจพเจ‚เจ•เจฟ, RBAC เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจกเจฟเจซเฉŒเจฒเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจฎเจฐเฉฑเจฅ เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจธเฉฐเจญเจพเจตเจจเจพ เจนเฉˆ เจ•เจฟ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจšเจฟเฉฐเจคเจพ เจจเจนเฉ€เจ‚ เจ•เจฐเจจเฉ€ เจšเจพเจนเฉ€เจฆเฉ€: เจคเฉเจธเฉ€เจ‚ เจฎเฉเฉฑเจฒ เจฆเฉเจ†เจฐเจพ เจ‡เจธเจฆเฉ€ เจชเฉเจธเจผเจŸเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ authorization-mode (เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจœเจผเจฟเจ•เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ kube-apiserver.yaml). เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ, เจ‡เจธเจฆเฉ‡ เจ…เจฐเจฅเจพเจ‚ เจตเจฟเฉฑเจš เจนเฉ‹เจฐ เจ•เจฟเจธเจฎ เจฆเฉ‡ เจ…เจงเจฟเจ•เจพเจฐ เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจ (node, webhook, always allow), เจชเจฐ เจ…เจธเฉ€เจ‚ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจตเจฟเจšเจพเจฐ เจจเฉ‚เฉฐ เจธเจฎเฉฑเจ—เจฐเฉ€ เจฆเฉ‡ เจฆเจพเจ‡เจฐเฉ‡ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจ›เฉฑเจก เจฆเฉ‡เจตเจพเจ‚เจ—เฉ‡เฅค

เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ, เจ…เจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจชเฉเจฐเจ•เจพเจธเจผเจค เจ•เจฐ เจšเฉเฉฑเจ•เฉ‡ เจนเจพเจ‚ เจฒเฉ‡เจ– RBAC เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ‡ เจธเจฟเจงเจพเจ‚เจคเจพเจ‚ เจ…เจคเฉ‡ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจฆเฉ‡ เจ•เจพเจซเจผเฉ€ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจตเจฐเจฃเจจ เจฆเฉ‡ เจจเจพเจฒ, เจ‡เจธ เจฒเจˆ เจ…เฉฑเจ—เฉ‡ เจฎเฉˆเจ‚ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจฎเฉ‚เจฒ เจ—เฉฑเจฒเจพเจ‚ เจ…เจคเฉ‡ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจธเฉฐเจ–เฉ‡เจช เจธเฉ‚เจšเฉ€ เจคเฉฑเจ• เจธเฉ€เจฎเจฟเจค เจ•เจฐเจพเจ‚เจ—เจพเฅค

เจนเฉ‡เจ  เจฒเจฟเจ–เฉ€เจ†เจ‚ API เจ‡เจ•เจพเจˆเจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ RBAC เจฐเจพเจนเฉ€เจ‚ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš เจชเจนเฉเฉฐเจš เจจเฉ‚เฉฐ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ:

  • Role ะธ ClusterRole - เจญเฉ‚เจฎเจฟเจ•เจพเจตเจพเจ‚ เจœเฉ‹ เจชเจนเฉเฉฐเจš เจ…เจงเจฟเจ•เจพเจฐเจพเจ‚ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจฆเฉ€เจ†เจ‚ เจนเจจ:
  • Role เจคเฉเจนเจพเจจเฉ‚เฉฐ เจจเฉ‡เจฎเจธเจชเฉ‡เจธ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ…เจงเจฟเจ•เจพเจฐเจพเจ‚ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ;
  • ClusterRole - เจ•เจฒเฉฑเจธเจŸเจฐ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ, เจ•เจฒเฉฑเจธเจŸเจฐ-เจตเจฟเจธเจผเฉ‡เจธเจผ เจตเจธเจคเฉ‚เจ†เจ‚ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจจเฉ‹เจกเจธ, เจ—เฉˆเจฐ-เจธเจฐเฉ‹เจค url (เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจธเจฐเฉ‹เจคเจพเจ‚ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจจเจนเฉ€เจ‚ - เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, /version, /logs, /api*);
  • RoleBinding ะธ ClusterRoleBinding - เจฌเจพเจˆเจกเจฟเฉฐเจ— เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ Role ะธ 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 API 'เจคเฉ‡ เจฒเฉŒเจ— เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจ…เฉฐเจฆเจพเจœเจผเจพ เจฒเจ—เจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ•เจฒเฉฑเจธเจŸเจฐ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ…เจคเฉ‡ เจฌเจฆเจฒเจฃ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจ‡เจธ API เจฆเฉเจ†เจฐเจพ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจ‡เจธ เจฆเฉ€เจ†เจ‚ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจšเฉฐเจ—เจพ เจตเจฐเจฃเจจ (เจ†เจฎ เจตเจพเจ‚เจ—) เจตเจฟเฉฑเจš เจชเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจงเจฟเจ•เจพเจฐเจค เจฆเจธเจคเจพเจตเฉ‡เจœเจผ K8s. เจ…เฉฑเจ—เฉ‡, เจฎเฉˆเจ‚ เจตเจฟเจธเจผเฉ‡ เจจเฉ‚เฉฐ เจธเจฐเจฒ เจญเจพเจธเจผเจพ เจตเจฟเฉฑเจš เจชเฉ‡เจธเจผ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจพเจ‚เจ—เจพเฅค

เจ…เจคเฉ‡ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจ†เจกเจฟเจŸเจฟเฉฐเจ— เจจเฉ‚เฉฐ เจฏเฉ‹เจ— เจ•เจฐเจจ เจฒเจˆ, เจธเจพเจจเฉ‚เฉฐ เจเจชเฉ€เจ†เจˆ-เจธเจฐเจตเจฐ เจตเจฟเฉฑเจš เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš เจคเจฟเฉฐเจจ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจฎเจพเจชเจฆเฉฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจชเจพเจธ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจœเฉ‹ เจนเฉ‡เจ เจพเจ‚ เจตเจงเฉ‡เจฐเฉ‡ เจตเฉ‡เจฐเจตเฉ‡ เจตเจฟเฉฑเจš เจฆเฉฑเจธเฉ‡ เจ—เจ เจนเจจ:

  • --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 เจซเจพเจˆเจฒ เจฆเจพ เจฎเจพเจฐเจ—เฅค เจ…เจธเฉ€เจ‚ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจ‡เจธเจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ 'เจคเฉ‡ เจตเจพเจชเจธ เจ†เจตเจพเจ‚เจ—เฉ‡, เจชเจฐ เจนเฉเจฃ เจฒเจˆ เจฎเฉˆเจ‚ เจจเฉ‹เจŸ เจ•เจฐเจพเจ‚เจ—เจพ เจ•เจฟ เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจเจชเฉ€เจ†เจˆ-เจธเจฐเจตเจฐ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉเจ†เจฐเจพ เจชเฉœเฉเจนเจจเจฏเฉ‹เจ— เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ. เจ‡เจธ เจฒเจˆ, เจ‡เจธเจจเฉ‚เฉฐ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจฎเจพเจŠเจ‚เจŸ เจ•เจฐเจจเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ, เจœเจฟเจธ เจฒเจˆ เจคเฉเจธเฉ€เจ‚ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจ‰เจšเจฟเจค เจญเจพเจ—เจพเจ‚ เจตเจฟเฉฑเจš เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจœเฉ‹เฉœ เจธเจ•เจฆเฉ‡ เจนเฉ‹:
      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-เจธเจฐเจตเจฐ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจจเจพเจฒ เจฎเฉˆเจจเฉ€เจซเฉˆเจธเจŸ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡, เจœเฉ‡เจ•เจฐ เจ•เฉ‹เจˆ เจ–เฉ‹เจœเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ 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

เจ†เจกเจฟเจŸ เจจเฉ€เจคเฉ€ เจฆเจพ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจตเจงเฉ€เจ† เจ‰เจฆเจพเจนเจฐเจฃ เจนเฉˆ เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒ GCE เจตเจฟเฉฑเจš เจตเจฐเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ.

เจ†เจกเจฟเจŸ เจ‡เจตเฉˆเจ‚เจŸเจพเจ‚ เจฆเจพ เจคเฉเจฐเฉฐเจค เจœเจตเจพเจฌ เจฆเฉ‡เจฃ เจฒเจˆ, เจ‡เจน เจธเฉฐเจญเจต เจนเฉˆ เจตเฉˆเจฌเจนเฉเฉฑเจ• เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเฉ‹. เจ‡เจธ เจฎเฉเฉฑเจฆเฉ‡ เจจเฉ‚เฉฐ เจ•เจตเจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ…เจงเจฟเจ•เจพเจฐเจค เจฆเจธเจคเจพเจตเฉ‡เจœเจผ, เจฎเฉˆเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ‡เจธ เจฒเฉ‡เจ– เจฆเฉ‡ เจฆเจพเจ‡เจฐเฉ‡ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจ›เฉฑเจกเจพเจ‚เจ—เจพเฅค

เจจเจคเฉ€เจœเฉ‡

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

PS

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

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

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