CKAD
Admission Controller
백셀건전지
2022. 4. 26. 16:21
쿠버네티스의 접근 제어 3단계
- Authentication(인증)
- 접속한 사람의 신분을 시스템이 인증하는 단계
- Authorization(권한허가)
- 누가 어떤 권한을 가지고 어떤 행동을 할 수 있는지 확인하는 단계
- Admission Control
- 인증과 권한 확인 후에 추가적으로 요청 내용에 대한 검증이나 요청 내용을 강제로 변경할 때 사용
- 권한이 있는 사용자에 한해서 관리자가 추가로 특정 행동을 제한(Validate)하거나 변경(Mutate)하는 작업
Admission Controller
- Admission control을 수행하는 주체
- https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/
Dynamic Admission Controller
- MutatingWebhook
- 사용자의 request에 대해 관리자가 임의로 값을 변경하는 작업
- ValidatingWebhook
- 사용자의 request에 대해 관리자가 불허하는 작업
Dynamic Admission Controller의 순서
AuthN & AuthZ - MutatingWebhook - Object schema validation - ValidatingWebhook - etcd - kube-controller
Admission Controller default plugin 확인 방법
kubectl exec -it kube-apiserver-controlplane -n kube-system -- kube-apiserver -h | grep 'enable-admission-plugins'
Enabled/Disabled된 Admission controller plugin 확인 방법
grep enable-admission-plugins /etc/kubernetes/manifests/kube-apiserver.yaml
ps -ef | grep kube-apiserver | grep admission-plugins
Admission controller plugin enable/disable하는 방법
vi /etc/kubernetes/manifests/kube-apiserver.yaml
---
...
spec:
containers:
- command:
- kube-apiserver
- --advertise-address=10.6.9.3
- --allow-privileged=true
- --authorization-mode=Node,RBAC
- --client-ca-file=/etc/kubernetes/pki/ca.crt
- --disable-admission-plugins=DefaultStorageClass
- --enable-admission-plugins=NodeRestriction,NamespaceAutoProvision
- --enable-bootstrap-token-auth=true
...