허용 컨트롤러 유효성 검사

이 문서는 시리즈의 일부입니다. 개요부터 시작합니다.

허용 컨트롤러는 거의 문제를 일으키지 않지만 적절한 기능을 보장하는 것이 중요합니다. 이 문서에서는 허용 컨트롤러가 제대로 작동하지 않을 때 다른 구성 요소에 영향을 줄 수 있는 방법을 설명합니다. 또한 허용 컨트롤러 성능의 유효성을 검사하는 데 사용할 수 있는 명령에 대해서도 설명합니다.

허용 컨트롤러

허용 컨트롤러는 요청이 인증되고 권한이 부여된 후 개체가 지속되기 전에 Kubernetes API 서버에 대한 요청을 가로채는 코드 조각입니다.

허용 컨트롤러는 유효성 검사, 변경 또는 둘 다의 조합일 수 있습니다. 컨트롤러를 변경하면 요청을 인정하기 전에 관련 개체를 수정할 수 있습니다. 컨트롤러의 유효성을 검사하는 것은 요청이 미리 정의된 특정 조건을 충족하는지만 확인합니다.

허용 컨트롤러의 주요 기능 중 하나는 개체 만들기, 삭제 및 수정에 대한 요청을 규제하는 것입니다. 또한 허용 컨트롤러는 API 서버 프록시를 통해 Pod에 대한 연결을 요청하는 등 사용자 지정 동사를 제한할 수 있습니다. 그러나 허용 컨트롤러는 같은 getwatchlist작업을 포함하여 개체를 읽는 요청을 차단할 수 없습니다.

일부 구성 요소는 웹후크 변경 및 유효성 검사와 같은 허용 컨트롤러에 영향을 줄 수 있습니다. Kubernetes 클러스터에서 변경 및 유효성 검사 웹후크를 통합하는 경우 고가용성을 보장해야 합니다. 비정상 노드는 API 서버 요청을 차단해서는 안 됩니다. API 서버에 대한 요청이 차단되지 않도록 허용 제어 파이프라인을 모니터링하는 것이 중요합니다. 비정상 허용 컨트롤러는 웹후크 변경 및 유효성 검사에 영향을 줄 수 있습니다. 모니터링해야 하는 웹후크 기반 허용 컨트롤러는 다음과 같습니다.

또는 제대로 작동하지 않는 허용 컨트롤러는 서비스 메시와 같은 다양한 구성 요소에 영향을 줄 수 있습니다. 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 클러스터에서 웹후크의 유효성 검사 및 변경이 예상대로 작동하는지 확인하려면 다음 단계를 수행합니다.

  1. 다음 명령을 실행하여 클러스터의 유효성 검사 웹후크를 나열합니다.

    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
    

    출력을 검토하여 유효성 검사 웹후크가 있고 해당 구성이 예상대로 표시되는지 확인합니다. 출력에는 각 유효성 검사 웹후크의 이름, 웹후크 수 및 각 웹후크의 기간이 포함됩니다.

  2. 다음 명령을 실행하여 클러스터의 변경 웹후크를 나열합니다.

    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
    

    출력을 확인하여 변경 웹후크가 올바르게 나열되고 해당 구성이 원하는 대로 표시되는지 확인합니다. 출력에는 각 변경 웹후크의 이름, 웹후크 수 및 각 웹후크의 기간이 포함됩니다.

  3. 다음 명령을 실행하여 특정 허용 컨트롤러에 대한 특정 세부 정보를 검색합니다.

    kubectl get MutatingWebhookConfiguration <mutating-webhook-name> -o yaml
    

    세부 정보를 검색할 변경 웹후크의 이름으로 바꿉 <mutating-webhook-name> 있습니다. 이 명령의 출력은 지정된 변경 웹후크 구성의 YAML 표현을 표시합니다.

이 섹션의 명령을 실행하고 출력을 검토하여 Kubernetes 클러스터의 유효성 검사 및 변경 웹후크가 예상대로 존재하고 구성되어 있는지 확인할 수 있습니다. 이 유효성 검사는 적절한 작동을 보장하는 데 필수적입니다. 또한 웹후크가 클러스터에서 리소스의 유효성을 검사하고 수정하기 위한 정책을 준수하는지 확인하는 것도 중요합니다.

참가자

Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.

주요 작성자:

기타 기여자:

비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.