
NamespaceAutoProvision 플러그인이 대표적인 예시NamespaceExists 플러그인이 대표적인 예시이 두가지 유형의 컨트롤러 권한을 모두 사용가능한 컨트롤러가 있을 수 있다.
AdmissionReview 객체를 전달하여 AdmissionWebHookServer 호출Go 언어로 작성된 웹훅 서버 예제코드 : https://github.com/kubernetes/kubernetes/blob/v1.13.0/test/images/webhook/main.go
Webhook-service라는 서비스도 존재 # 웹훅 서버를 클러스터 내부가 아니라 외부에 자체적으로 배포한 경우 config
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration // MutatingWebHookConfiguration으로 변경 사용 가능
metadata:
name: “pod-policy-example.com”
webhooks:
- name: “pod-policy-example.com”
clientConfig:
url: “https://external-server.example.com”
rules:
# 웹훅 서버를 K8S 클러스터 내부에 배포한 경우 config
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration // MutatingWebHookConfiguration으로 변경 사용 가능
metadata:
name: “pod-policy-example.com”
webhooks:
- name: “pod-policy-example.com”
clientConfig:
service:
namespace: “webhook-namespace”
name: “webhook-service”
caBundle: “Ci0tLS0tQk…….tLS0K”
rules:
- apiGroups: [“”]
apiVersions: [“v1”]
operations: [“CREATE”]
resources: [“pods”]
scope: “Namespaced”
clientConfig : AdmissionWebHookServer의 위치를 구성하는 곳caBundle을 생성하여 이 클라이언트 구성에 전달pod를 생성하거나 삭제, deployment를 생성하는 등의 경우에만 호출되도록 할 수 있다.apiGroups, apiVersions, operations, resources, scope 필드에서 이를 지정pod를 생성하기 위해 호출할 때만 이 웹훅 구성을 호출한다!💡 이 객체가 생성되면, 파드를 생성할 때마다 웹훅 서비스에 대한 호출이 이루어지고 응답에 따라 허용되거나 거부된다!