แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก ABC Kubernetes-แƒจแƒ˜: แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ, แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ, แƒแƒฃแƒ“แƒ˜แƒขแƒ˜

แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก ABC Kubernetes-แƒจแƒ˜: แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ, แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ, แƒแƒฃแƒ“แƒ˜แƒขแƒ˜

แƒแƒ“แƒ แƒ” แƒ—แƒฃ แƒ’แƒ•แƒ˜แƒแƒœ แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒแƒก แƒ“แƒ’แƒ”แƒ‘แƒ แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ˜: แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ, แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ˜แƒฏแƒ•แƒœแƒ, แƒแƒฃแƒ“แƒ˜แƒขแƒ˜ แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒแƒ›แƒแƒชแƒแƒœแƒ”แƒ‘แƒ˜. แƒฃแƒ™แƒ•แƒ” แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜แƒ Kubernetes-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ›แƒ˜แƒแƒฆแƒฌแƒ˜แƒแƒ— แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒ”แƒ‘แƒ—แƒแƒœ แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ‘แƒแƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒ›แƒ—แƒฎแƒแƒ•แƒœ แƒ’แƒแƒ แƒ”แƒ›แƒแƒจแƒ˜แƒช แƒ™แƒ˜... แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ›แƒแƒกแƒแƒšแƒ แƒ”แƒซแƒฆแƒ•แƒœแƒ”แƒ‘แƒ K8-แƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ”แƒ‘แƒจแƒ˜ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒฃแƒš แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“ แƒแƒกแƒžแƒ”แƒฅแƒขแƒ”แƒ‘แƒก. แƒฃแƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ”แƒก แƒงแƒแƒ•แƒšแƒ˜แƒกแƒ, แƒ”แƒก แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ—แƒ—แƒ•แƒ˜แƒก, แƒ•แƒ˜แƒœแƒช แƒ˜แƒฌแƒงแƒ”แƒ‘แƒก Kubernetes-แƒ˜แƒก แƒ’แƒแƒชแƒœแƒแƒ‘แƒแƒก - แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜ แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜ แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒแƒกแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒฌแƒแƒ•แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ

Kubernetes-แƒจแƒ˜ แƒแƒ แƒ˜ แƒขแƒ˜แƒžแƒ˜แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜แƒ:

  • แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ˜ โ€” แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ›แƒแƒ แƒ—แƒแƒ•แƒก Kubernetes API;
  • แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ โ€” โ€žแƒœแƒแƒ แƒ›แƒแƒšแƒฃแƒ แƒ˜โ€œ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒกแƒแƒช แƒ›แƒแƒ แƒ—แƒแƒ•แƒก แƒ’แƒแƒ แƒ”, แƒ“แƒแƒ›แƒแƒฃแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜.

แƒแƒ› แƒขแƒ˜แƒžแƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ แƒ˜แƒกแƒแƒ, แƒ แƒแƒ› แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒ แƒ˜แƒก แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜ Kubernetes API-แƒจแƒ˜ (แƒ›แƒแƒ— แƒแƒกแƒ” แƒ”แƒซแƒแƒฎแƒ˜แƒแƒœ - ServiceAccounts), แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒกแƒแƒฎแƒ”แƒšแƒ—แƒ แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒกแƒ—แƒแƒœ แƒ“แƒ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒแƒ‘แƒšแƒ˜แƒแƒ‘แƒแƒกแƒ—แƒแƒœ, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜ Secrets แƒขแƒ˜แƒžแƒ˜แƒก แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒจแƒ˜. แƒแƒกแƒ”แƒ—แƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜ (แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ˜) แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒแƒ“ แƒ’แƒแƒ›แƒ˜แƒ–แƒœแƒฃแƒšแƒ˜แƒ Kubernetes แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜แƒก Kubernetes API-แƒ–แƒ” แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒก แƒแƒ  แƒแƒฅแƒ•แƒ— แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜ Kubernetes API-แƒจแƒ˜: แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒฃแƒœแƒ“แƒ แƒ›แƒแƒ แƒ—แƒแƒœ แƒ’แƒแƒ แƒ” แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ”แƒ‘แƒ˜แƒ—. แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ’แƒแƒœแƒ™แƒฃแƒ—แƒ•แƒœแƒ˜แƒšแƒ˜แƒ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ— แƒ›แƒชแƒฎแƒแƒ•แƒ แƒ”แƒ‘แƒ˜ แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒœ แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ API แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒแƒœ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ—แƒแƒœ, แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ—แƒแƒœ, แƒแƒœ แƒ˜แƒ—แƒ•แƒšแƒ”แƒ‘แƒ แƒแƒœแƒแƒœแƒ˜แƒ›แƒฃแƒ แƒแƒ“.

แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ›แƒแƒ˜แƒชแƒแƒ•แƒก:

  • แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ โ€” แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ (แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒ— แƒ›แƒ’แƒ แƒซแƒœแƒแƒ‘แƒ˜แƒแƒ แƒ”!);
  • UID - แƒ›แƒแƒœแƒฅแƒแƒœแƒ˜แƒ— แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒ“แƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒแƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ แƒ˜แƒก โ€žแƒฃแƒคแƒ แƒ แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒฃแƒšแƒ˜ แƒ“แƒ แƒฃแƒœแƒ˜แƒ™แƒแƒšแƒฃแƒ แƒ˜, แƒ•แƒ˜แƒ“แƒ แƒ” แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜โ€œ;
  • แƒฏแƒ’แƒฃแƒคแƒ”แƒ‘แƒ˜ - แƒฏแƒ’แƒฃแƒคแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒกแƒแƒช แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ”แƒ™แƒฃแƒ—แƒ•แƒœแƒ˜แƒก;
  • แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ โ€” แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ—แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ˜แƒ—.

Kubernetes-แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒก แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ˜แƒ“แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ: X509 แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜, Bearer tokens, แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒžแƒ แƒแƒฅแƒกแƒ˜, HTTP Basic Auth. แƒแƒ› แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒœแƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒแƒ— แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒฅแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ“แƒ˜แƒ“แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒ—: แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒคแƒแƒ˜แƒšแƒ˜แƒ“แƒแƒœ แƒžแƒแƒ แƒแƒšแƒ”แƒ‘แƒ˜แƒ— OpenID OAuth2-แƒ›แƒ“แƒ”.

แƒฃแƒคแƒ แƒ แƒ›แƒ”แƒขแƒ˜แƒช, แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒฅแƒ”แƒ›แƒ˜แƒก แƒ”แƒ แƒ—แƒ“แƒ แƒแƒฃแƒšแƒแƒ“ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ. แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“, แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก:

  • แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜แƒก แƒœแƒ˜แƒจแƒœแƒ”แƒ‘แƒ˜ - แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก;
  • X509 - แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ˜ ServiceAccounts-แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒกแƒชแƒ˜แƒšแƒ“แƒ”แƒ‘แƒ แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒแƒ—แƒ—แƒ•แƒ˜แƒก, แƒ•แƒ˜แƒกแƒแƒช แƒกแƒฃแƒ แƒก แƒฃแƒคแƒ แƒ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒแƒ“ แƒ’แƒแƒ”แƒชแƒœแƒแƒก แƒแƒ› แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒก, แƒ’แƒ˜แƒ แƒฉแƒ”แƒ•แƒ— แƒ“แƒแƒ˜แƒฌแƒงแƒแƒ— แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ”แƒ‘แƒ˜. แƒฉแƒ•แƒ”แƒœ แƒฃแƒคแƒ แƒ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒแƒ“ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒก, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก 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

แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒจแƒ˜แƒคแƒ•แƒ แƒแƒ— แƒ›แƒแƒ—แƒจแƒ˜ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜ base64-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒ“แƒแƒแƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ˜แƒ แƒแƒ— แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒจแƒ˜, แƒ“แƒแƒแƒ›แƒแƒขแƒแƒ— แƒกแƒฃแƒคแƒ˜แƒฅแƒกแƒ˜ แƒ™แƒšแƒแƒ•แƒ˜แƒจแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒก. -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.

แƒ’แƒแƒ—แƒฎแƒแƒ แƒ” แƒฃแƒคแƒ แƒ แƒฆแƒ แƒ›แƒแƒ“

แƒ›แƒแƒ—แƒ—แƒ•แƒ˜แƒก, แƒ•แƒ˜แƒกแƒแƒช แƒกแƒฃแƒ แƒก แƒฃแƒคแƒ แƒ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒแƒ“ แƒ’แƒแƒ˜แƒ’แƒแƒก แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒ˜:

แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ

แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ• แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒ”แƒ‘แƒฃแƒš แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒก แƒแƒ  แƒแƒฅแƒ•แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ–แƒ” แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒฃแƒคแƒšแƒ”แƒ‘แƒ. แƒœแƒ”แƒ‘แƒแƒ แƒ—แƒ•แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒชแƒ”แƒ›แƒแƒ“, Kubernetes แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒก.

1.6 แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒ›แƒ“แƒ” Kubernetes แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ“แƒ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒขแƒ˜แƒžแƒก แƒ”.แƒฌ แƒแƒ‘แƒแƒ™แƒ˜ (แƒแƒขแƒ แƒ˜แƒ‘แƒฃแƒขแƒ”แƒ‘แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ˜). แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ. แƒ”แƒก แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ แƒแƒ›แƒŸแƒแƒ›แƒแƒ“ แƒ˜แƒ—แƒ•แƒšแƒ”แƒ‘แƒ แƒ›แƒ”แƒ›แƒ™แƒ•แƒ˜แƒ“แƒ แƒ”แƒแƒ‘แƒ˜แƒ—, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒ›แƒแƒ˜แƒœแƒช แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ˜แƒ’แƒ˜ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒฎแƒ•แƒ แƒขแƒ˜แƒžแƒ”แƒ‘แƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“.

แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ–แƒ” แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒงแƒแƒคแƒ˜แƒก แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” (แƒ“แƒ แƒฃแƒคแƒ แƒ แƒ›แƒแƒฅแƒœแƒ˜แƒšแƒ˜) แƒ’แƒ–แƒ แƒ”แƒฌแƒแƒ“แƒ”แƒ‘แƒ RBAC (แƒ แƒแƒšแƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ˜). แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒ“แƒแƒœ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒชแƒฎแƒแƒ“แƒ“แƒ แƒกแƒขแƒแƒ‘แƒ˜แƒšแƒฃแƒ แƒแƒ“ แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ˜ 1.8. RBAC แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ“แƒ”แƒšแƒก, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒแƒ™แƒ แƒซแƒแƒšแƒฃแƒšแƒ˜แƒ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜, แƒ แƒแƒช แƒแƒจแƒ™แƒแƒ แƒแƒ“ แƒแƒ  แƒแƒ แƒ˜แƒก แƒœแƒ”แƒ‘แƒแƒ“แƒแƒ แƒ—แƒฃแƒšแƒ˜.
RBAC-แƒ˜แƒก แƒ’แƒแƒกแƒแƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ”แƒ‘แƒšแƒแƒ“, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒฃแƒจแƒ•แƒแƒ— Kubernetes api-แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜แƒ— --authorization-mode=RBAC. แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ manifest-แƒจแƒ˜ api-แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“ แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒก แƒ‘แƒ˜แƒšแƒ˜แƒ™แƒ˜แƒก แƒ’แƒแƒกแƒฌแƒ•แƒ แƒ˜แƒ• /etc/kubernetes/manifests/kube-apiserver.yaml, แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜ command. แƒ—แƒฃแƒ›แƒชแƒ, RBAC แƒฃแƒ™แƒ•แƒ” แƒฉแƒแƒ แƒ—แƒฃแƒšแƒ˜แƒ แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“, แƒแƒกแƒ” แƒ แƒแƒ›, แƒกแƒแƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ“, แƒแƒ›แƒแƒ–แƒ” แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ˜แƒœแƒ”แƒ แƒ•แƒ˜แƒฃแƒšแƒแƒ—: แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ“แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒ— authorization-mode (แƒฃแƒ™แƒ•แƒ” แƒแƒฆแƒœแƒ˜แƒจแƒœแƒฃแƒšแƒจแƒ˜ kube-apiserver.yaml). แƒกแƒฎแƒ•แƒแƒ—แƒ แƒจแƒแƒ แƒ˜แƒก, แƒ›แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒกแƒฎแƒ•แƒ แƒกแƒแƒฎแƒ˜แƒก แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ (node, webhook, always allow), แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒแƒ— แƒ’แƒแƒœแƒฎแƒ˜แƒšแƒ•แƒแƒก แƒ›แƒแƒกแƒแƒšแƒ˜แƒก แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒก แƒ’แƒแƒ แƒ”แƒ— แƒ“แƒแƒ•แƒขแƒแƒ•แƒ”แƒ‘แƒ—.

แƒกแƒฎแƒ•แƒแƒ—แƒ แƒจแƒแƒ แƒ˜แƒก, แƒฉแƒ•แƒ”แƒœ แƒฃแƒ™แƒ•แƒ” แƒ’แƒแƒ›แƒแƒ•แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ— แƒ›แƒฃแƒฎแƒšแƒ˜ RBAC-แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒแƒฎแƒแƒกแƒ˜แƒแƒ—แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒ˜ แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒ—, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒจแƒ˜ แƒจแƒ”แƒ›แƒแƒ•แƒ˜แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒ˜ แƒกแƒแƒคแƒฃแƒซแƒ•แƒšแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ™แƒšแƒ” แƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒ˜แƒ—.

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ API แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ”แƒ‘แƒ˜ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ Kubernetes-แƒจแƒ˜ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒ’แƒแƒกแƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ‘แƒšแƒแƒ“ RBAC-แƒ˜แƒ—:

  • Role ะธ ClusterRole - แƒ แƒแƒšแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ”แƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒแƒฆแƒฌแƒ”แƒ แƒแƒก:
  • Role แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒแƒฆแƒฌแƒ”แƒ แƒแƒ— แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ—แƒ แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒจแƒ˜;
  • ClusterRole - แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜, แƒ›แƒแƒ— แƒจแƒแƒ แƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒกแƒžแƒ”แƒชแƒ˜แƒคแƒ˜แƒ™แƒฃแƒ  แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ–แƒ”, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜, แƒแƒ แƒแƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜แƒก urls (แƒแƒœแƒฃ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ Kubernetes แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ—แƒแƒœ - แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, /version, /logs, /api*);
  • RoleBinding ะธ ClusterRoleBinding - แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒแƒ™แƒ แƒแƒ•แƒแƒ“ Role ะธ ClusterRole แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก, แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ—แƒ แƒฏแƒ’แƒฃแƒคแƒ˜แƒก แƒแƒœ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ–แƒ”.

Role แƒ“แƒ RoleBinding แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒฃแƒšแƒ˜แƒ แƒกแƒแƒฎแƒ”แƒšแƒ—แƒ แƒกแƒ˜แƒ•แƒ แƒชแƒ˜แƒ—, แƒ”.แƒ˜. แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ˜แƒ›แƒแƒ•แƒ” แƒกแƒแƒฎแƒ”แƒšแƒ—แƒ แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒจแƒ˜. แƒ—แƒฃแƒ›แƒชแƒ, RoleBinding-แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ›แƒ˜แƒ›แƒแƒ แƒ—แƒแƒก ClusterRole-แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒ–แƒแƒ’แƒแƒ“แƒ˜ แƒœแƒ”แƒ‘แƒแƒ แƒ—แƒ•แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒแƒ— แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒ แƒแƒšแƒ”แƒ‘แƒ˜ แƒแƒฆแƒฌแƒ”แƒ แƒก แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒก แƒฌแƒ”แƒกแƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก:

  • API แƒฏแƒ’แƒฃแƒคแƒ”แƒ‘แƒ˜ - แƒ˜แƒฎ แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ apiGroups แƒ“แƒ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ kubectl api-resources;
  • แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜ (แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜: pod, namespace, deployment แƒ“แƒ แƒแƒกแƒ” แƒจแƒ”แƒ›แƒ“แƒ”แƒ’.);
  • แฒ–แƒ›แƒœแƒ”แƒ‘แƒ˜ (แƒ–แƒ›แƒœแƒ”แƒ‘แƒ˜: set, update แƒ“แƒ แƒ.แƒจ.).
  • แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜ (resourceNames) - แƒ˜แƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒš แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ–แƒ” แƒ“แƒ แƒแƒ แƒ แƒแƒ› แƒขแƒ˜แƒžแƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ–แƒ”.

แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒฃแƒคแƒ แƒ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒ˜ แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜ Kubernetes-แƒจแƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒ’แƒ•แƒ”แƒ แƒ“แƒ–แƒ” แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ. แƒแƒ›แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“ (แƒฃแƒคแƒ แƒ แƒกแƒฌแƒแƒ แƒแƒ“, แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ แƒ“แƒ), แƒ›แƒ” แƒ›แƒ˜แƒ•แƒชแƒ”แƒ› แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒกแƒแƒฎแƒแƒ•แƒก แƒ›แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒก.

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 "แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ" pods in namespace 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

แƒฆแƒแƒœแƒ˜แƒกแƒซแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒแƒฃแƒ“แƒ˜แƒขแƒ˜

แƒกแƒฅแƒ”แƒ›แƒแƒขแƒฃแƒ แƒแƒ“, Kubernetes แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜ แƒ˜แƒงแƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒœแƒแƒ˜แƒ แƒแƒ“:

แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก ABC Kubernetes-แƒจแƒ˜: แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ, แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ, แƒแƒฃแƒ“แƒ˜แƒขแƒ˜

แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ˜แƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒแƒ–แƒ” api-แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜. แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ–แƒ” แƒงแƒ•แƒ”แƒšแƒ แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ แƒ’แƒแƒ“แƒ˜แƒก แƒ›แƒแƒกแƒ–แƒ”. แƒแƒ› แƒจแƒ˜แƒ“แƒ แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ›แƒ”แƒขแƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒ— แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ โ€แƒ แƒ แƒฎแƒ“แƒ”แƒ‘แƒ Kubernetes-แƒจแƒ˜, แƒ แƒแƒชแƒ แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— kubectl run?".

แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒแƒฃแƒ“แƒ˜แƒขแƒ˜ แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒ 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 แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ.

แƒ แƒแƒ’แƒแƒ แƒช แƒฃแƒ™แƒ•แƒ” แƒแƒฆแƒ•แƒœแƒ˜แƒจแƒœแƒ”แƒ—, แƒงแƒ•แƒ”แƒšแƒ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜ แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ manifest-แƒจแƒ˜ api-แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒ— (แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“ /etc/kubernetes/manifests/kube-apiserver.yaml), แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜ command. แƒ“แƒแƒ•แƒฃแƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ— 3 แƒกแƒแƒญแƒ˜แƒ แƒ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒก แƒ“แƒ แƒ’แƒแƒ•แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒ— แƒ˜แƒกแƒ˜แƒœแƒ˜:

  1. audit-policy-file โ€” แƒ’แƒ–แƒ YAML แƒคแƒแƒ˜แƒšแƒแƒ›แƒ“แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฆแƒฌแƒ”แƒ แƒก แƒแƒฃแƒ“แƒ˜แƒขแƒ˜แƒก แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒแƒก. แƒ›แƒ˜แƒก แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒก แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒแƒ•แƒฃแƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ‘แƒ˜แƒ—, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒฎแƒšแƒ แƒแƒฆแƒ•แƒœแƒ˜แƒจแƒœแƒแƒ•, แƒ แƒแƒ› แƒคแƒแƒ˜แƒšแƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒแƒ“แƒ”แƒก api-server แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒ—. แƒแƒฅแƒ”แƒ“แƒแƒœ แƒ’แƒแƒ›แƒแƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”, แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ›แƒ˜แƒกแƒ˜ แƒ“แƒแƒ›แƒแƒœแƒขแƒแƒŸแƒ”แƒ‘แƒ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ—, แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒกแƒแƒช แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒแƒ›แƒแƒขแƒแƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ™แƒแƒ“แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒก แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒจแƒ˜:
      volumeMounts:
        - mountPath: /etc/kubernetes/policies
          name: policies
          readOnly: true
      volumes:
      - hostPath:
          path: /etc/kubernetes/policies
          type: DirectoryOrCreate
        name: policies
  2. audit-log-path โ€” แƒ’แƒ–แƒ แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜แƒก แƒคแƒแƒ˜แƒšแƒแƒ›แƒ“แƒ”. แƒ‘แƒ˜แƒšแƒ˜แƒ™แƒ˜ แƒแƒกแƒ”แƒ•แƒ” แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก api-แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒแƒฆแƒ•แƒฌแƒ”แƒ แƒ— แƒ›แƒ˜แƒก แƒ›แƒแƒœแƒขแƒแƒŸแƒก แƒแƒœแƒแƒšแƒแƒ’แƒ˜แƒฃแƒ แƒแƒ“:
      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.

แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒจแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒแƒฆแƒ•แƒฌแƒ”แƒ แƒแƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ“แƒแƒœแƒ˜แƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ˜แƒ—. แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒจแƒ”แƒกแƒแƒขแƒงแƒ•แƒ˜แƒกแƒ˜ แƒฌแƒ”แƒกแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒœแƒแƒžแƒแƒ•แƒœแƒ˜แƒ แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ˜แƒก แƒแƒฆแƒฌแƒ”แƒ แƒแƒจแƒ˜.

kubelet daemon แƒแƒ™แƒ•แƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒœแƒ˜แƒคแƒ”แƒกแƒขแƒ˜แƒก แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒก api-แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒ— แƒ“แƒ, แƒ—แƒฃ แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒ›แƒ” แƒแƒฆแƒ›แƒแƒฉแƒ”แƒœแƒ˜แƒšแƒ˜แƒ, แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ•แƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒก api-แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒ—. แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒ“แƒ”แƒขแƒแƒšแƒ˜: แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒจแƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ˜แƒ’แƒœแƒแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ. แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒจแƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒขแƒแƒœแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ— api-แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒฎแƒ”แƒšแƒ˜แƒ—. แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ api-แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒžแƒแƒ“แƒ˜แƒฃแƒ›แƒ˜, แƒ’แƒฃแƒœแƒ“แƒ˜ kubectl delete แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒฌแƒ•แƒ”แƒ•แƒก แƒ›แƒ˜แƒก แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒแƒก. แƒฎแƒ”แƒšแƒ˜แƒ— แƒ›แƒแƒ’แƒ˜แƒฌแƒ”แƒ•แƒ— แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ docker stop kube-masters-แƒ–แƒ”, แƒกแƒแƒ“แƒแƒช แƒจแƒ”แƒ˜แƒชแƒ•แƒแƒšแƒ แƒแƒฃแƒ“แƒ˜แƒขแƒ˜แƒก แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ:

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

แƒแƒฃแƒ“แƒ˜แƒขแƒ˜แƒก แƒฉแƒแƒ แƒ—แƒ•แƒ˜แƒกแƒแƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜แƒ แƒ’แƒแƒฎแƒกแƒแƒ•แƒ“แƒ”แƒ— แƒ”แƒก แƒ™แƒฃแƒ‘แƒ”-แƒแƒžแƒ˜แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ แƒ˜แƒ–แƒ แƒ“แƒ”แƒ‘แƒ. แƒ™แƒ”แƒ แƒซแƒแƒ“, แƒ˜แƒ–แƒ แƒ“แƒ”แƒ‘แƒ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒ™แƒแƒœแƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“. แƒจแƒ”แƒกแƒ•แƒšแƒ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒก แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’. แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ แƒแƒกแƒ”แƒ•แƒ” แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒแƒฃแƒ“แƒ˜แƒขแƒ˜แƒก แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒ–แƒ”.

แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ”แƒ‘แƒ˜

แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒแƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒแƒฅ แƒแƒ แƒ˜แƒก แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒคแƒแƒ˜แƒšแƒ˜ 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

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒแƒฃแƒ“แƒ˜แƒขแƒ˜แƒก แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ แƒ›แƒแƒฌแƒแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒแƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒ˜แƒก แƒ“แƒ”แƒ›แƒแƒœแƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒ Alibaba Cloud แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ:

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-แƒจแƒ˜.

แƒแƒฃแƒ“แƒ˜แƒขแƒ˜แƒก แƒ›แƒแƒ•แƒšแƒ”แƒœแƒ”แƒ‘แƒ–แƒ” แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ แƒ”แƒแƒ’แƒ˜แƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒแƒฆแƒฌแƒ”แƒ แƒ”แƒ— แƒ•แƒ”แƒ‘แƒฐแƒฃแƒ™แƒ˜. แƒ”แƒก แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ˜ แƒ“แƒแƒคแƒแƒ แƒฃแƒšแƒ˜แƒ แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ, แƒ›แƒ” แƒ›แƒแƒก แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒก แƒ’แƒแƒ แƒ”แƒ— แƒ“แƒแƒ•แƒขแƒแƒ•แƒ”แƒ‘.

แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜

แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒฎแƒ˜แƒšแƒ•แƒ Kubernetes แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ”แƒ‘แƒจแƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒžแƒ”แƒ แƒกแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ˜, แƒ’แƒแƒ›แƒแƒงแƒแƒ— แƒ›แƒแƒ—แƒ˜ แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒฉแƒแƒฌแƒ”แƒ แƒแƒ— แƒ›แƒแƒ—แƒ˜ แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ”แƒ‘แƒ˜. แƒ•แƒ˜แƒ›แƒ”แƒ“แƒแƒ•แƒœแƒ”แƒ‘, แƒ แƒแƒ› แƒ”แƒก แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ—แƒ—แƒ•แƒ˜แƒก, แƒ•แƒ˜แƒœแƒช แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒ˜แƒก แƒฌแƒ˜แƒœแƒแƒจแƒ” แƒ“แƒ’แƒแƒก แƒ—แƒ”แƒแƒ แƒ˜แƒฃแƒšแƒแƒ“ แƒ—แƒฃ แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒแƒจแƒ˜. แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒ˜แƒ แƒฉแƒ”แƒ•แƒ—, แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒ— Kubernetes-แƒจแƒ˜ แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก แƒ—แƒ”แƒ›แƒแƒ–แƒ” แƒกแƒฎแƒ•แƒ แƒ›แƒแƒกแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ "PS" -แƒจแƒ˜ - แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒ›แƒแƒ— แƒจแƒแƒ แƒ˜แƒก แƒ˜แƒžแƒแƒ•แƒแƒ— แƒกแƒแƒญแƒ˜แƒ แƒ แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒแƒฅแƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘.

PS

แƒแƒกแƒ”แƒ•แƒ” แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ”แƒ— แƒฉแƒ•แƒ”แƒœแƒก แƒ‘แƒšแƒแƒ’แƒ–แƒ”:

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ