CKAD

Admission Controller

백셀건전지 2022. 4. 26. 16:21

쿠버네티스의 접근 제어 3단계

  1. Authentication(인증)
    • 접속한 사람의 신분을 시스템이 인증하는 단계
  2. Authorization(권한허가)
    • 누가 어떤 권한을 가지고 어떤 행동을 할 수 있는지 확인하는 단계
  3. Admission Control
    • 인증과 권한 확인 후에 추가적으로 요청 내용에 대한 검증이나 요청 내용을 강제로 변경할 때 사용
    • 권한이 있는 사용자에 한해서 관리자가 추가로 특정 행동을 제한(Validate)하거나 변경(Mutate)하는 작업

Admission Controller

Dynamic Admission Controller

  1. MutatingWebhook
    • 사용자의 request에 대해 관리자가 임의로 값을 변경하는 작업
  2. 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
...