๐ CKA 13์ผ์ฐจ
๐ Udemy-Certified Kubernetes Administrator (CKA) with Practice Tests 153-162
kubectl ๋๊ตฌ๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก '$HOME/.kube/config' ํ์ผ์ ์ฐพ๋๋ค. ์ด๊ฒ์ด ์ง๊ธ๊น์ง kubectl ๋ช
๋ น์ ๋ํ ์ต์
์ ์ง์ ํ์ง ์์ ์ด์ ์ด๋ค.
kubeconfig ํ์ผ์๋ Clusters
, Contexts
, Users
์ด๋ ๊ฒ ์ธ ๊ฐ์ง ์์ญ์ด ์๋ค.
Clusters๋ ์ ๊ทผ์ด ํ์ํ ๋ค์ํ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ๋งํ๋ค. ์๋ฅผ ๋ค์ด, Development, Production, Google ๋ฑ์ด ์๋ค.
Users๋ ์ด๋ฐ ํด๋ฌ์คํฐ์ ์ ๊ทผ ๊ถํ์ด ์๋ ์ฌ์ฉ์ ๊ณ์ ์ด๋ค. ์๋ฅผ ๋ค์ด, Admin, Dev User, Prod User ๋ฑ์ด ์๋ค.
๋ง์ง๋ง์ผ๋ก Contexts๋ ์ด๋ค ์ฌ์ฉ์ ๊ณ์ ์ด ์ด๋ค ํด๋ฌ์คํฐ์ ์ ๊ทผํ๊ธฐ ์ํด ์ฌ์ฉ๋๋์ง๋ฅผ ์ ์ํ๋ค.
'--server', '--certificate-authority' ์ฌ์์ Clusters ์์ญ์ผ๋ก ๊ฐ๋ค.
'--client-key', '--client-certificate' ์ฌ์์ Users ์์ญ์ผ๋ก ๊ฐ๋ค.
๊ทธ๋ฐ ๋ค์ Context๋ฅผ ์์ฑํด User๋ฅผ ์ด์ฉํด Cluster์ ์ ๊ทผํ๋ ์ง์ ์ฌํญ์ ์ง์ ํ๋ค.
์ด์ kubeConfig ๋งค๋ํ์คํธ ํ์ผ์ ์ดํด๋ณด์.
clusters, contexts, users ์ธ ์์ญ์ด ์๊ณ ๊ฐ๊ฐ ๋ฐฐ์ด ํ์์ด๋ค. ๊ทธ๋์ ๋ค์ค์ผ๋ก ์ค์ ํ ์ ์๋ค.
๋ค์ค ์ปจํ
์คํธ๋ฅผ ์ง์ ํ๊ธฐ ์ํด ๋งค์ผ ์ ๊ทผํ๋ ํด๋ฌ์คํฐ์ ์ฌ์ฉ์๋ฅผ ์ฌ๋ฌ๊ฐ ์ง์ ํ ์ ์๋ค.
ํ์ผ์ด ์ค๋น๋๋ฉด ์ด๋ค ๊ฐ์ฒด๋ ์์ฑํ ํ์๊ฐ ์๋ค.
ํ์ผ์ ์ด๋๋ก ๋๊ณ kubectl ๋ช
๋ น์ ์ํด kubeconfig ํ์ผ ์ค์ ๊ฐ์ด ์ฝํ๋ค.
kubeconfig ํ์ผ์ current-context
ํ๋๋ฅผ ์ถ๊ฐํด ๊ธฐ๋ณธ ์ปจํ
์คํธ๋ฅผ ์ง์ ํ ์ ์๋ค.
์ฌ์ฉ ์ค์ธ ํ์ฌ ํ์ผ์ ๋ณด๋ ค๋ฉด kubectl config view
๋ช
๋ น์ ์คํํ๋ฉด ๋๋ค.
์์ ๋งํ๋ฏ์ด ์ด๋ค kubeconfig ํ์ผ์ ์ฌ์ฉํ ์ง ์ง์ ํ์ง ์์ผ๋ฉด ํด๋์ ์์นํ ํ ๋๋ ํ ๋ฆฌ์ ์๋ ๊ธฐ๋ณธ ํ์ผ์ ์ฌ์ฉํ๊ฒ ๋๋ค.
๋ค๋ฅธ kubeconfig ํ์ผ์ ๋ณด๊ณ ์ถ๋ค๋ฉด ์ต์
์ผ๋ก ํ์ผ์ ๋ช
์ํด์ผ ํ๋ค.
ํ์ฌ ์ปจํ
์คํธ๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด kubectl config use-context
๋ช
๋ น์ ์ฌ์ฉํ๋ฉด ๋๋ค.
kubectl config
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํด์ ํ์ผ์์ ๋ค๋ฅธ ์์ ์ ํ๊ฑฐ๋ ์์ดํ
์ ์ญ์ ํํ ์ ์๋ค.
kubeconfig ํ์ผ์ context ์์ญ์ namespace๋ผ๋ ์ถ๊ฐ ํ๋๋ฅผ ๊ฐ์ง ์ ์๋ค.
namespace ํ๋๋ฅผ ๋ช
์ํ๋ฉด, ํน์ ์ปจํ
์คํธ๋ก ์ ํํ๋ฉด ์๋์ผ๋ก ํน์ ๋ค์์คํ์ด์ค์ ๋ค์ด๊ฐ๊ฒ ๋๋ค.
kubeconfig ํ์ผ์์ ์ธ์ฆ์ ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ ๋ ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ๋ช
์ํ๋ ๊ฒ์ด ์ข๋ค.
์ธ์ฆ์ ํ์ผ ๊ฒฝ๋ก๋ฅผ ๋ช
์ํ๋ ๋์ ์ธ์ฆ์ ์์ฒด์ ์ปจํ
์ธ ๋ฅผ ์ธ์ฝ๋ฉํด์ ๋ช
์ํ ์๋ ์๋ค.
my-kube-config ํ์ผ์ default kubeconfig ํ์ผ๋ก ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
ํด๋ฌ์คํฐ์ ๊ด๋ จํด kubectl ๋ช ๋ น์ด๋ REST API๋ฅผ ํตํด ์ด๋ค ์์ ์ ํ๋ kube-api server์ ์ํธ์์ฉํด์๋ค.
์ฟ ๋ฒ๋คํฐ์ค API๋ ๋ชฉ์ ์ ๋ฐ๋ผ ์ฌ๋ฌ ๊ทธ๋ฃน์ผ๋ก ๊ทธ๋ฃนํ๋๋ค.
์๋ฅผ ๋ค์ด, /metrics
, /healthz
, /version
, /api
, /apis
, /logs
๋ฑ์ด ์๋ค.
/version
API๋ ํด๋ฌ์คํฐ์ ๋ฒ์ ์ ๋ณด๊ธฐ ์ํ ๊ฒ์ด๋ค.
/metrics
์ /healthz
API๋ ํด๋ฌ์คํฐ์ ์ํ๋ฅผ ๋ชจ๋ํฐํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
/logs
๋ ํ์ฌ ๋ก๊ทธ์ ํตํฉํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
์ด๋ฒ ๊ฐ์์์๋ ํด๋ฌ์คํฐ ๊ธฐ๋ฅ์ ์ฑ
์์ง๋ API์ ์ด์ ์ ๋ง์ถ๋ค.
์ด API๋ core
๊ทธ๋ฃน๊ณผ named
๊ทธ๋ฃน ์ด๋ ๊ฒ 2๊ฐ์ง๋ก ๋ถ๋ฆฌ๋๋ค.
ํต์ฌ ๊ธฐ๋ฅ์ ๋ชจ๋ core
๊ทธ๋ฃน์ ์๋ค.
named
๊ทธ๋ฃน API๋ ์ข ๋ ์กฐ์งํ๋์ด ์๊ณ ์๋ก์ด ๊ธฐ๋ฅ๋ค๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
๋งจ ์์ ์๋ ๊ฑด API Groups์ด๊ณ ๋งจ ๋ฐ์ ์๋ ๊ฑด ํด๋น ๊ทธ๋ฃน์ Resources์ด๋ค.
๊ฐ ๋ฆฌ์์ค๋ ๊ด๋ จ ๋์ ๋ชจ์(Verbs)์ ๊ฐ์ง๊ณ ์๋ค.
์ฟ ๋ฒ๋คํฐ์ค API ์ฐธ์กฐ ํ์ด์ง๋ ๊ฐ ๊ฐ์ฒด์ ๋ํ API ๊ทธ๋ฃน์ ์๋ ค์ค๋ค.
kube-api server์ ์๋ฌด ๊ฒฝ๋ก ํ
์คํธ์์ด ์ ๊ทผํ๋ฉด ์ฌ์ฉ ๊ฐ๋ฅํ API ๊ทธ๋ฃน ๋ฆฌ์คํธ๊ฐ ๋์จ๋ค.
/apis
API์ ์ ๊ทผํด์ named API ๊ทธ๋ฃน ๋ด์์ ์ง์๋๋ ๋ชจ๋ ๋ฆฌ์์ค ๊ทธ๋ฃน์ ํ์ธํ ์ ์๋ค.
curl ๋ช
๋ น์ด๋ฅผ ํตํด API์ ์ง์ ์ ๊ทผํ ๊ฒฝ์ฐ, apiVersion๊ณผ ๊ฐ์ ์ ๋ณด๋ฅผ ์ ์ธํ๊ณ ๋ ์ ๊ทผํ ์ ์๋ค.(Failure, forbidden)
๋ชจ๋ ์ ๋ณด๋ฅผ ํ์ธํ๊ธฐ ์ํด์๋ ํน์ ์ธ์ฆ ๋งค์ปค๋์ฆ(๊ฐ์ธํค, ์ธ์ฆ์, ca)์ ์ง์ ํด์ ์ธ์ฆ์ ํ์ผ์ ์ด์ฉํด API์ ์ธ์ฆํด์ผ ํ๋ค.
๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ kubectl proxy ํด๋ผ์ด์ธํธ๋ฅผ ์์ํ๋ ๊ฒ์ด๋ค.
kubectl proxy
๋ช
๋ น์ ์คํํด์ 127.0.0.1:8001์์ ๋์ํ๋ ํ๋ก์ ์๋น์ค๋ฅผ ์คํํ๋ค.
ํด๋ฌ์คํฐ ์ ๊ทผ์ ์ํด kubeconfig ํ์ผ์ ์๊ฒฉ ์ฆ๋ช
๊ณผ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ curl ๋ช
๋ น์ด์ ์ธ์ฆ ๋งค์ปค๋์ฆ์ ์ง์ ํ์ง ์์๋ ๋๋ค.
curl localhost:8001
๋ช
๋ น์ด๋ฅผ ํตํด kubectl proxy ์๋น์ค์ ์ ๊ทผํ ์ ์๋ค. kubectl proxy๋ kubeconfig ํ์ผ์ ์๊ฒฉ ์ฆ๋ช
์ ์ด์ฉํด kube-api server๋ก ์์ฒญ์ ์ ๋ฌํ๋ค. ๋ฃจํธ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ API๋ฅผ ๋์ดํ๋ค.
kube proxy
๋ kubectl proxy
๊ฐ ์๋๋ค.
kube-proxy
๋ ํด๋ฌ์คํฐ ๋ด ๋ค์ํ ๋
ธ๋์ ๊ฑธ์ณ ํ๋์ ์๋น์ค ๊ฐ์ ์ฐ๊ฒฐ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
๋ฐ๋ฉด์, kubectl proxy
๋ HTTPS ํ๋ก์ ์๋น์ค๋ก kubectl ์ ํธ๋ฆฌํฐ๊ฐ kube-api server์ ์ ๊ทผํ๊ธฐ ์ํด ๋ง๋ ๊ฒ์ด๋ค.
์์ฝํ์๋ฉด ์ฟ ๋ฒ๋คํฐ์ค์ ๋ชจ๋ ๋ฆฌ์์ค๋ ๋ค๋ฅธ API ๊ทธ๋ฃน์ผ๋ก ๊ทธ๋ฃนํ๋์ด ์๋ค.
์๋จ ๋ ๋ฒจ์๋ cored
API ๊ทธ๋ฃน๊ณผ named
API ๊ทธ๋ฃน์ด ์๋ค.
named
API ๊ทธ๋ฃน ์๋์๋ ๋ค์ํ ๋ฆฌ์์ค๊ฐ ์๊ณ ๊ฐ ๋ฆฌ์์ค์ verbs๋ผ๋ ๊ด๋ จ ์์
๋ชจ์์ด ์๋ค.
์ ์ํด์ ๋ฌด์์ ํ ์ ์๋์ง
๊ฐ Authorization์ ์ ์์ด๋ค.
์ฐ๋ฆฌ๋ ํ์ํ ์์
์ ์ํํ๊ธฐ ์ํ ์ต์ํ์ ์ ๊ทผ๋ง ์ ๊ณตํ๊ธฐ๋ฅผ ๋ฐ๋๋ค. ํด๋ฌ์คํฐ๋ฅผ ์๋ก ๋ค๋ฅธ ์กฐ์ง์ด๋ ํ์ผ๋ก ๊ณต์ ํ๊ธฐ ์ํด namespace๋ฅผ ์ด์ฉํด ๋
ผ๋ฆฌ์ ์ผ๋ก ๋ถํ ํ์ฌ ์ฌ์ฉ์์ ๋ํ ์ ๊ทผ์ ์ ํํ ์ ์๋ค. ํด๋ฌ์คํฐ ๋ด์์ Authorization(๊ถํ ๋ถ์ฌ)๋ ์ ๊ทผ์ ์ ํํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ง์ํ๋ Authorization ๋ฉ์ปค๋์ฆ์ ๋ค์ํ๋ค.
Node, ABAC(Attribute-Based Access Control), RBAC(Role-Based Access Control), Webhook์ด ์๋ค.
kube-api server๋ ๊ด๋ฆฌ ๋ชฉ์ ์ผ๋ก ์ฐ๋ฆฌ์ ๊ฐ์ ์ฌ์ฉ์, ํด๋ฌ์คํฐ ๋ด ๋
ธ๋์ kubelet์ ์ํด ์ ๊ทผ๋๋ค.
kubelet์ kube-api server์ ์ ๊ทผํ์ฌ Services, Endpoints, Nodes, Pods์ ๊ดํ ์ ๋ณด๋ฅผ ์ฝ๊ณ Node status, Pod status, events์ ๋ํ ์ ๋ณด๋ฅผ ๋ณด๊ณ ํ๋ค.
์ด๋ฌํ kubelet์ ์์ฒญ์ ํน๋ณํ ์น์ธ์(Node Authorizer)์ ์ํด ์ฒ๋ฆฌ๋๋ค.
์ด์ ๊ฐ์์์ ์ธ์ฆ์์ ๊ดํด ์ด์ผ๊ธฐ ํ ๋, kubelet์ system:node ๊ทธ๋ฃน์ ์ผ๋ถ์ด๋ฉฐ ์ด๋ฆ ์์ 'system:node'๋ฅผ ๋ถ์ฌ์ผ ํ๋ค. system:node ๊ทธ๋ฃน์ ์ผ๋ถ๋ก ์ฌ์ฉ์๊ฐ ์์ฒญํ๋ฉด Node Authorizer์ ์ํด ์น์ธ๋๊ณ kubelet์ ํน๊ถ์ ๋ถ์ฌ๋ฐ๋๋ค.
์ด ๊ฒ์ด ํด๋ฌ์คํฐ ๋ด์์ ์ ๊ทผํ ๊ฒฝ์ฐ ๊ถํ์ ๋ถ์ฌ๋ฐ๋ ๋ฐฉ๋ฒ์ด๋ค.
kube-api server์ ์ธ๋ถ ์ ๊ทผ์ ๋ํด ์ด์ผ๊ธฐํด๋ณด์.
ABAC(Attribute-Based Access Control, ํน์ฑ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด)๋ ์ฌ์ฉ์๋ ์ฌ์ฉ์ ๊ทธ๋ฃน์ ๊ถํ ๋ชจ์์ผ๋ก ์ฐ๊ฒฐํ๋ ๊ฒ์ด๋ค.
์๋ฅผ ๋ค์ด, ๊ฐ๋ฐ์(dev-user)๋ pod๋ฅผ ๋ณด๊ณ ์์ฑํ๊ณ ์ญ์ ํ ์ ์๋ค.
์ด๋ฐ ์์ผ๋ก ์ธ์ ํ์์ผ๋ก ์ ์๋ Policy ํ์ผ์ ์์ฑํ๊ณ kube-api server์ ์ด ํ์ผ์ ๋๊ฒจ์ผ ํ๋ค.
๊ฐ๊ฐ์ ์ฌ์ฉ์๋ ๊ทธ๋ฃน์ ๋ํ policy ์ ์ ํ์ผ์ ๋ง๋ค ์ ์๋ค.
๋ณด์์ ์ถ๊ฐํ๊ฑฐ๋ ๋ณ๊ฒฝํด์ผ ํ ๋๋ง๋ค policy ํ์ผ์ ์๋์ผ๋ก ์์ ํ๊ณ kube-api server๋ฅผ ๋ค์ ์์ํด์ผ ํ๋ค. ๊ทธ๋์ ABAC๋ ๊ด๋ฆฌํ๊ธฐ ์ด๋ ต๋ค.
๋ค์์ผ๋ก RBAC(Role-Based Access Control, ์ญํ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด)์ด๋ค.
RBAC๋ ์ฌ์ฉ์๋ ๊ทธ๋ฃน์ ๊ถํ ์งํฉ(policy)๋ก ์ง์ ์ฐ๊ฒฐํ๋ ๋์ ์ญํ ์ ์ ์ํ๋ค.
์๊ตฌ๋๋ ๊ถํ ์งํฉ์ผ๋ก ์ญํ ์ ์์ฑํ๊ณ ํด๋น ์ญํ ์ด ํ์ํ ์ฌ์ฉ์์๊ฒ ๊ทธ ์ญํ ์ ์ฐ๊ฒฐํ๋ค.
์์ผ๋ก๋ ์ฌ์ฉ์์ ์ ๊ทผ ๊ถํ์ ๋ณํ๊ฐ ํ์ํ ๋๋ง๋ค ์ญํ ์ ์์ ํ๊ธฐ๋ง ํ๋ฉด ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์ฆ์ ๋ฐ์๋๋ค.
RBAC๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๋ด์์ ์ ๊ทผ ๊ถํ ๊ด๋ฆฌ์ ์ข ๋ ํ์ค์ ์ธ ์ ๊ทผ๋ฒ์ ์ ๊ณตํ๋ค.
๋ด์ฅ ๋ฉ์ปค๋์ฆ์ด ์๋ ์ธ๋ถ์์ ์ ๊ทผ ๊ถํ์ ๊ด๋ฆฌํ๊ณ ์ถ์ ์ ์๋ค.
๊ฐ๋ น, Open Policy Agent๋ ์
์ฅ ํต์ ์ ์น์ธ์ ๋์ฐ๋ฉฐ ์ ๊ทผ ๊ถํ์ ๊ด๋ฆฌํ๋ค. ์ฟ ๋ฒ๋คํฐ์ค๋ ์ฌ์ฉ์์ ๊ดํ ์ ๋ณด์ ์๊ตฌ ์ฌํญ ์ ๊ทผ ์ ๋ณด์ ํจ๊ป Open Policy Agent์ API ํต์ ์ ํ ์ ์๋ค. Open Policy Agent๊ฐ ์ฌ์ฉ์์ ํ์ฉ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๊ฒ ํ๋ ๊ฒ์ด๋ค. Open Policy Agent์ ์๋ต์ ๊ทผ๊ฑฐํด ์ฌ์ฉ์๋ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌ๋ฐ๋๋ค.
๊ทธ ์ธ์๋ AlwaysAllow
์ AlwaysDeny
๋ชจ๋๊ฐ ์๋ค.
AlwaysAllow
๋ ์ด๋ค ์น์ธ ํ์ธ๋ ์์ด ๋ชจ๋ ์์ฒญ์ ํ์ฉํ๋ค.
AlwaysDeny
๋ ํญ์ ๋ชจ๋ ์์ฒญ์ ๊ฑฐ์ ํ๋ค.
kube-api ์๋ฒ์ '--authorization-mode' ์ต์
์ ํตํด Authorization mode๋ฅผ ์ค์ ํ ์ ์๋ค. ์ด ์ต์
์ ์ง์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ผ๋ก AlwaysAllow
๊ฐ ์ค์ ๋๋ค.
๋ค์ํ ๋ชจ๋ ๋ชฉ๋ก์ ์ผํ๋ก ํ์ํ ์ ์๋ค.
๋ค์ํ ๋ชจ๋๋ฅผ ์ค์ ํ ๊ฒฝ์ฐ, ์ง์ ๋ ์์๋๋ก ๊ฐ๊ฐ์ ์์ฒญ์ ์ฌ์ฉํ ๊ถํ์ด ๋ถ์ฌ๋๋ค.
๋ชจ๋์ ์์ฒญ์ด ๊ฑฐ๋ถ๋ ๋๋ง๋ค ์ฒด์ธ์ ๋ค์ ๋ชจ๋๋ก ์ ๋ฌ๋๋ค. ๋ชจ๋์ด ์์ฒญ์ ์น์ธํ๋ ์๊ฐ ๋๋ ํ์ธํ์ง ์๊ณ ์ฌ์ฉ์๊ฐ ์น์ธ์ ๋ฐ๋๋ค.
์ด๋ฒ ๊ฐ์์์๋ RBAC(Role-Based Access Control, ์ญํ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด)์ ์์ธํ ์ดํด๋ณด์.
Role ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํด Role ์ ์ ํ์ผ์ ์์ฑํด์ผ ํ๋ค.
Role ์ ์ ํ์ผ์๋ rules ์์ญ์ด ์๋ค. rules ์์ญ์ apiGroups, resources, verbs ์ด๋ ๊ฒ ์ธ ๊ฐ์ ์น์
์ผ๋ก ๋๋ ์ง๋ค.
์ด์ ๊ฐ์์์ ๋ฐฐ์ ๋ฏ์ด core ๊ทธ๋ฃน์ apiGroups ํ๋๋ฅผ ๋น์๋ ์ ์๋ค.
์ญํ ํ๋์ ์ฌ๋ฌ ๊ท์น์ ์ถ๊ฐํ ์ ์๋ค.
๋ค์ ๋จ๊ณ๋ ์ฌ์ฉ์๋ฅผ ๊ทธ ์ญํ ์ ๋งํฌํ๋ ๊ฒ์ด๋ค. Rolebinding ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฉ์ ๊ฐ์ฒด๋ฅผ Role์ ์ฐ๊ฒฐํ๋ค.
subjects ์์ญ์ ์ฌ์ฉ์์ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ง์ ํ๋ ์์ญ์ด๋ค.
roleRef ์์ญ์ ์ฐ๋ฆฌ๊ฐ ๋ง๋ Role์ ์ธ๋ถ์ฌํญ์ ์ ๊ณตํ๋ ์์ญ์ด๋ค.
kubectl create
๋ช
๋ น์ด๋ฅผ ํตํด RoleBinding ๊ฐ์ฒด๋ฅผ ์์ฑํด์ผ ํ๋ค.
Role๊ณผ RoleBinding์ ๋ค์์คํ์ด์ค์ ๋ฒ์ ์๋์ ์๋ค. ์๋ ์์์์๋ namespace๋ฅผ ์ง์ ํ์ง ์์๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ ๋ค์ ์คํ์ด์ค์์ dev-user๋ pod ๋ฐ configMap์ ์ ๊ทผํ ์ ์๋ค.
๋ง์ฝ ๋ค๋ฅธ ๋ค์์คํ์ด์ค์์ ์ญํ ์ ์ ํํ๊ณ ์ถ๋ค๋ฉด Role๊ณผ RoleBinding ์ ์ ํ์ผ์ metadata ์์ญ์ namespace ํ๋๋ฅผ ๋ค๋ฅธ ๋ค์์คํ์ด์ค๋ก ์ง์ ํด์ผ ํ๋ค.
์์ฑ๋ Role, RoleBinding์ ํ์ธํ๋ ๋ช
๋ น์ด๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ฌ์ฉ์๊ฐ ํน์ ๋ฆฌ์์ค์ ์ ๊ทผํ ์ ์๋ ์ง ํ์ธํ๋ ๋ช
๋ น์ด๋ ๋ค์๊ณผ ๊ฐ๋ค.
๋ง์ฝ ๊ด๋ฆฌ์๋ผ๋ฉด '--as' ์ต์
์ ์ง์ ํ์ฌ ๋ค๋ฅธ ์ ์ ๋ฅผ ์ฌ์นญํด ๋ค๋ฅธ ์ ์ ์ ๊ถํ์ ํ์ธํ ์๋ ์๋ค.
๋ช
๋ น์์ ๋ค์์คํ์ด์ค๋ฅผ ์ง์ ํ ์๋ ์๋ค.
ํ ๋จ๊ณ ๋ ๋ด๋ ค๊ฐ ํน์ ๋ฆฌ์์ค์๋ง ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ ์๋ ์๋ค.
Role ์ ์ ํ์ผ์ rules ์์ญ์ resourceName ํ๋๋ฅผ ์ถ๊ฐํ๊ณ ํน์ ๋ฆฌ์์ค์ ์ด๋ฆ์ ๋ช
์ํ๋ฉด ๋๋ค.
์๋ ์์์ ๊ฒฝ์ฐ, ์ฌ์ฉ์๋ rules์ resourceName ํ๋๋ฅผ ์ถ๊ฐํ์ฌ blue, orange ํ๋์๋ง ์ ๊ทผํ ์ ์๋๋ก ์ ํํ์๋ค.
ํด๋ฌ์คํฐ์ Authorization Mode๋ฅผ ํ์ธํ๊ธฐ ์ํด์๋ /etc/kubernetes/manifests/kube-apiserver.yaml
ํ์ผ์ ํ์ธํ๋ฉด ๋๋ค.
wc -l
๋ช
๋ น์ด๋ฅผ ํตํด ๊ฐ์๋ฅผ ์
์ ์๋ค. ์ด๋, ๋งจ ์์ ํค๋๋ ํฌํจํ์ฌ ์นด์ดํธ๋๊ธฐ ๋๋ฌธ์ 1์ ๋นผ์ค์ผ ํ๋ค.
๋๋ ํค๋๋ฅผ ์ ์ธํ๊ธฐ ์ํด '--no-headers' ์ต์
์ ์ฌ์ฉํ์.
ํน์ ์ ์ ๊ฐ ์์
๊ถํ์ ๊ฐ๊ณ ์๋์ง ํ์ธํ๊ธฐ ์ํด kubectl auth can-i
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง
์ด์ฒ๋ผ ์์
์ ์ํํ๋ ๋ช
๋ น์ด๋ฅผ '--as ํน์ ์ ์ ' ์ต์
์ผ๋ก ์คํํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
๋ช
๋ น์ ์ธ ๋ฐฉ๋ฒ์ ํตํด์๋ role์ ์์ฑํ ์ ์๋ค.
๋ช
๋ น์ ์ธ ๋ฐฉ๋ฒ์ ํตํด์๋ rolebinding์ ์์ฑํ ์ ์๋ค.
Role๊ณผ RoleBinding์ ๋ค์์คํ์ด์ค ๋ด์ ์์ฑ๋๋ค. ๋ค์์คํ์ด์ค๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด default ๋ค์์คํ์ด์ค์์ ์์ฑ๋๊ณ ๊ทธ ๋ค์์คํ์ด์ค ์์์๋ง ์ ๊ทผ์ ์ ์ดํ ์ ์๋ค.
๋
ธ๋๋ ๋ค์์คํ์ด์ค์ ์ํด ๊ทธ๋ฃนํ, ๊ฒฉ๋ฆฌ๋ ์ ์๋ค. ๋
ธ๋๋ ํด๋ฌ์คํฐ ์์ด๋ ๋ฒ์์ ํด๋นํ๋ ๋ฆฌ์์ค์ด๋ค.
๊ทธ๋์ ๋ฆฌ์์ค๋ Namespace
๋ Cluster Scope
์ ์ํด ๋ถ๋ฅ๋๋ค.
Cluster Scope์ ๋ฆฌ์์ค๋ ์์ฑ ์ ๋ค์์คํ์ด์ค๋ฅผ ์ง์ ํ์ง ์๋๋ค.(Cluster Scope๋ ๋ชจ๋ ๋ค์์คํ์ด์ค๋ฅผ ์์ฐ๋ฅด๋ ์์ญ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ ๋ฏ?๐ค)
๋ค์์คํ์ด์ค ๋ฆฌ์์ค ๋ชฉ๋ก์ ๋ณด๋ ค๋ฉด kubectl api-resources --namespaced=true
๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด ๋๋ค.
๋น๋ค์์คํ์ด์ค ๋ฆฌ์์ค ๋ชฉ๋ก์ ๋ณด๋ ค๋ฉด kubectl api-resources --namespaced=false
๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด ๋๋ค.
clusterrole์ resource์ ๋ฒ์๊ฐ cluster scope์ธ ๊ฒ๋ง ์ ์ธํ๋ฉด role๊ณผ ์ ์ฌํ๋ค.
clusterrole ์ ์ ํ์ผ์ ์์ฑํ๊ณ rules ์์ญ์ apiGroups, resources, verbs ํ๋๋ฅผ ์ง์ ํ๋ฉด ๋๋ค.
clusterrolebinding ๊ฐ์ฒด๋ ์ฌ์ฉ์์ cluster role์ ์ฐ๊ฒฐํ๋ค.
subjects ์์ญ์ ์ฌ์ฉ์ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ง์ ํ๋ค. roleRef ์์ญ์๋ cluster role์ ๋ํด ์ง์ ํ๋ค.
cluserrole๊ณผ clusterrolebinding์ cluster scope์ ๋ฆฌ์์ค์ ์ฌ์ฉ๋๋ค๊ณ ํ์ง๋ง namespace ๋ฆฌ์์ค์๋ ์ ์ฉํ ์ ์๋ค.
๊ทธ๋ ๊ฒ ํ๋ฉด ์ฌ์ฉ์๋ ๋ชจ๋ ๋ค์์คํ์ด์ค์ ๋ฆฌ์์ค์ ์ ๊ทผํ๊ฒ ๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ ํด๋ฌ์คํฐ๊ฐ ์ฒ์ ์ค์ ๋๋ฉด ๊ธฐ๋ณธ๊ฐ์ผ๋ก clusterrole์ ์ฌ๋ฌ ๊ฐ ๋ง๋ ๋ค.