허용 컨트롤러 유효성 검사
이 문서는 시리즈의 일부입니다. 개요부터 시작합니다.
허용 컨트롤러는 거의 문제를 일으키지 않지만 적절한 기능을 보장하는 것이 중요합니다. 이 문서에서는 허용 컨트롤러가 제대로 작동하지 않을 때 다른 구성 요소에 영향을 줄 수 있는 방법을 설명합니다. 또한 허용 컨트롤러 성능의 유효성을 검사하는 데 사용할 수 있는 명령에 대해서도 설명합니다.
허용 컨트롤러
허용 컨트롤러는 요청이 인증되고 권한이 부여된 후 개체가 지속되기 전에 Kubernetes API 서버에 대한 요청을 가로채는 코드 조각입니다.
허용 컨트롤러는 유효성 검사, 변경 또는 둘 다의 조합일 수 있습니다. 컨트롤러를 변경하면 요청을 인정하기 전에 관련 개체를 수정할 수 있습니다. 컨트롤러의 유효성을 검사하는 것은 요청이 미리 정의된 특정 조건을 충족하는지만 확인합니다.
허용 컨트롤러의 주요 기능 중 하나는 개체 만들기, 삭제 및 수정에 대한 요청을 규제하는 것입니다. 또한 허용 컨트롤러는 API 서버 프록시를 통해 Pod에 대한 연결을 요청하는 등 사용자 지정 동사를 제한할 수 있습니다. 그러나 허용 컨트롤러는 같은 get
watch
list
작업을 포함하여 개체를 읽는 요청을 차단할 수 없습니다.
일부 구성 요소는 웹후크 변경 및 유효성 검사와 같은 허용 컨트롤러에 영향을 줄 수 있습니다. Kubernetes 클러스터에서 변경 및 유효성 검사 웹후크를 통합하는 경우 고가용성을 보장해야 합니다. 비정상 노드는 API 서버 요청을 차단해서는 안 됩니다. API 서버에 대한 요청이 차단되지 않도록 허용 제어 파이프라인을 모니터링하는 것이 중요합니다. 비정상 허용 컨트롤러는 웹후크 변경 및 유효성 검사에 영향을 줄 수 있습니다. 모니터링해야 하는 웹후크 기반 허용 컨트롤러는 다음과 같습니다.
Gatekeeper를 확장하는 AKS(Azure Kubernetes Service) 클러스터에 대한 Azure Policy 추가 기능입니다. Gatekeeper는 Open Policy 에이전트에 대한 허용 컨트롤러 웹후크입니다.
Kubernetes 클러스터에서 동적 허용 컨트롤러로 실행되는 Kyverno입니다. Kyverno는 Kubernetes API 서버에서 허용 웹후크 HTTP 콜백의 유효성 검사 및 변경 내용을 수신하고 일치 정책을 적용하여 허용 정책을 적용하거나 요청을 거부하는 결과를 반환합니다. 문제 해결 참조(예: APIServer 실패 웹후크 호출)는 Kyverno 문제 해결 설명서를 참조 하세요.
또는 제대로 작동하지 않는 허용 컨트롤러는 서비스 메시와 같은 다양한 구성 요소에 영향을 줄 수 있습니다. Istio 및 Linkerd와 같은 서비스 메시는 허용 컨트롤러를 사용하여 Pod 내부의 사이드카 컨테이너 삽입을 자동화합니다. 서비스 메시의 원활한 작동을 보장하기 위해 허용 컨트롤러가 제대로 작동하는지 평가하고 확인하는 것이 중요합니다.
AKS 클러스터에 대한 Azure Policy 추가 기능의 상태 확인
AKS용 Azure Policy 추가 기능을 설치하는 경우 다음 kubectl 명령을 사용하여 클러스터에서 Azure Policy 허용 컨트롤러의 설치 및 기능의 유효성을 검사할 수 있습니다.
# Verify that Azure Policy pods are running.
kubectl get pod -n gatekeeper-system
# Sample output
...
NAME READY STATUS RESTARTS AGE
gatekeeper-audit-65844778cb-rkflg 1/1 Running 0 163m
gatekeeper-controller-78797d4687-4pf6w 1/1 Running 0 163m
gatekeeper-controller-78797d4687-splzh 1/1 Running 0 163m
...
이전 명령을 실행하여 gatekeeper-system 네임스페이스에서 Azure Policy 에이전트 Pod의 가용성을 확인합니다. 출력이 예상과 다른 경우 허용 컨트롤러, API 서비스 또는 CRD(사용자 지정 리소스 정의)에 문제가 있음을 나타낼 수 있습니다.
# Check that all API resources are working correctly. Use the following command to list all API resources.
kubectl api-resources
# Sample output
...
NAME SHORTNAMES APIGROUP NAMESPACED KIND
bindings true Binding
componentstatuses cs false ComponentStatus
configmaps cm true ConfigMap
...
이전 명령은 모든 API 리소스가 올바르게 작동하는지 확인하는 데 도움이 됩니다. 출력에 오류 또는 누락된 구성 요소 없이 예상 리소스가 포함되어 있는지 확인합니다. kubectl get pod
명령을 kubectl api-resources
사용하여 AKS용 Azure Policy 추가 기능의 상태 검사 Kubernetes 클러스터의 허용 컨트롤러 기능의 유효성을 검사합니다. 허용 컨트롤러를 정기적으로 모니터링하여 클러스터의 전반적인 상태 및 안정성을 기본 수 있도록 제대로 작동하는지 확인합니다.
다음 kubectl get
명령을 사용하여 정책 할당이 클러스터에 적용되는지 확인합니다.
kubectl get constrainttemplates
참고 항목
정책 할당은 각 클러스터와 동기화하는 데 최대 20분이 걸릴 수 있습니다.
출력은 다음 예와 유사해야 합니다.
NAME AGE
k8sazureallowedcapabilities 23m
k8sazureallowedusersgroups 23m
k8sazureblockhostnamespace 23m
k8sazurecontainerallowedimages 23m
k8sazurecontainerallowedports 23m
k8sazurecontainerlimits 23m
k8sazurecontainernoprivilege 23m
k8sazurecontainernoprivilegeescalation 23m
k8sazureenforceapparmor 23m
k8sazurehostfilesystem 23m
k8sazurehostnetworkingports 23m
k8sazurereadonlyrootfilesystem 23m
k8sazureserviceallowedports 23m
자세한 내용은 다음 리소스를 참조하세요.
웹후크 유효성 검사
Kubernetes 클러스터에서 웹후크의 유효성 검사 및 변경이 예상대로 작동하는지 확인하려면 다음 단계를 수행합니다.
다음 명령을 실행하여 클러스터의 유효성 검사 웹후크를 나열합니다.
kubectl get ValidatingWebhookConfiguration -o wide
출력은 다음 예와 유사해야 합니다.
NAME WEBHOOKS AGE aks-node-validating-webhook 1 249d azure-policy-validating-webhook-configuration 1 249d gatekeeper-validating-webhook-configuration 1 249d
출력을 검토하여 유효성 검사 웹후크가 있고 해당 구성이 예상대로 표시되는지 확인합니다. 출력에는 각 유효성 검사 웹후크의 이름, 웹후크 수 및 각 웹후크의 기간이 포함됩니다.
다음 명령을 실행하여 클러스터의 변경 웹후크를 나열합니다.
kubectl get MutatingWebhookConfiguration -o wide
출력은 다음 예와 유사해야 합니다.
NAME WEBHOOKS AGE aks-node-mutating-webhook 1 249d azure-policy-mutating-webhook-configuration 1 249d gatekeeper-mutating-webhook-configuration 1 249d
출력을 확인하여 변경 웹후크가 올바르게 나열되고 해당 구성이 원하는 대로 표시되는지 확인합니다. 출력에는 각 변경 웹후크의 이름, 웹후크 수 및 각 웹후크의 기간이 포함됩니다.
다음 명령을 실행하여 특정 허용 컨트롤러에 대한 특정 세부 정보를 검색합니다.
kubectl get MutatingWebhookConfiguration <mutating-webhook-name> -o yaml
세부 정보를 검색할 변경 웹후크의 이름으로 바꿉
<mutating-webhook-name>
있습니다. 이 명령의 출력은 지정된 변경 웹후크 구성의 YAML 표현을 표시합니다.
이 섹션의 명령을 실행하고 출력을 검토하여 Kubernetes 클러스터의 유효성 검사 및 변경 웹후크가 예상대로 존재하고 구성되어 있는지 확인할 수 있습니다. 이 유효성 검사는 적절한 작동을 보장하는 데 필수적입니다. 또한 웹후크가 클러스터에서 리소스의 유효성을 검사하고 수정하기 위한 정책을 준수하는지 확인하는 것도 중요합니다.
참가자
Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.
주요 작성자:
- 파올로 살바토리 | 수석 고객 엔지니어
기타 기여자:
- Francis Simy Nazareth | 선임 기술 전문가
비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.