정책 관리자 설치

이 주제에서는 클러스터가 보안, 규정 또는 비즈니스 규칙과 관련된 정책을 준수하는지 확인, 감사 및 시행하는 Kubernetes 승인 컨트롤러인 Policy Controller를 설치하는 방법을 설명합니다.

시작하기 전에

  • Anthos Config Management를 사용하여 Policy Controller를 설치하려면 Anthos 권한이 있어야 합니다.

  • Anthos Config Management가 이미 설치된 GKE v1.14.x 이상을 실행하는 클러스터가 필요합니다.

Anthos Config Management를 사용하여 Policy Controller 설치

다음 단계에 따라 Policy Controller 동적 승인 컨트롤러를 클러스터에 설치하도록 Anthos Config Management를 구성합니다.

기본적으로 Policy Controller는 일반적인 정책 유형에 대한 제약조건 템플릿 라이브러리를 설치합니다. 제약조건 템플릿 설치를 건너뛰려면 매니페스트에서 templateLibraryInstalled로 시작하는 행의 주석 처리를 삭제합니다.

  1. Operator에 대한 구성 파일에서 spec.policyController 객체 내의 enabled 값을 true로 설정합니다.

    # config-management.yaml
    
    apiVersion: configmanagement.gke.io/v1
    kind: ConfigManagement
    metadata:
      name: config-management
    spec:
      # Set to true to install and enable Policy Controller
      policyController:
        enabled: true
        # Uncomment to prevent the template library from being installed
        # templateLibraryInstalled: false
        # Uncomment to disable audit, adjust value to set audit interval
        # auditIntervalSeconds: 0
    
      # ...other fields...
    

    참조 제약조건 지원은 기본적으로 사용되지 않습니다. 사용하기 전에 eventual consistency에 대한 주의사항을 이해해야 합니다.

  2. kubectl apply를 사용하여 구성을 적용합니다.

    kubectl apply -f config-management.yaml
    

pod가 생성되고 Policy Controller가 제약조건을 확인하고 적용하기 시작합니다.

설치 확인

Policy Controller가 올바르게 설치되면 해당 pod가 실행 중입니다. pod를 사용하기 전에 여러 번 다시 시작할 수 있습니다.

kubectl get pods -n gatekeeper-system

결과 예:

NAME                              READY   STATUS    RESTARTS   AGE
gatekeeper-controller-manager-0   1/1     Running   1          53s

제약조건 템플릿 라이브러리가 기본적으로 설치됩니다. 완료되는 데 몇 분 정도 걸릴 수 있습니다. 템플릿 라이브러리가 설치되었는지 확인하려면 모든 ConstraintTemplate 객체를 나열합니다.

kubectl get constrainttemplates

결과 예:

NAME                                      AGE
k8sallowedrepos                           84s
k8scontainerlimits                        84s
k8spspallowprivilegeescalationcontainer   84s
...[OUTPUT TRUNCATED]...

개별 제약조건 템플릿이 올바르게 설치되면 status.created 필드는 true입니다.

Policy Controller 및 Anthos Config Management

Policy Controller를 실행하는 데 필요한 리소스는 Config Management Operator가 관리합니다. Operator와 Policy Controller 사이의 경합을 피하려면 Anthos Config Management 저장소에 무엇이 들어가는지 알고 있어야 합니다.

다음은 문제가 되는 부분입니다.

  • 제약조건 템플릿 라이브러리가 비활성화되어 있지 않으면 템플릿 라이브러리의 일부인 제약조건 템플릿을 동기화할 수 없습니다.

  • gatekeeper-system 네임스페이스에 저장된 구성 리소스를 동기화하려면 네임스페이스가 저장소에 정의되어 있지 않거나 Operator가 설치하려는 구성과 일치해야 합니다.

  • 정보 출처 저장소에서 gatekeeper-system 네임스페이스가 제거되면 Operator가 복구하지 못할 수 있습니다. 복구하려면 Policy Controller에 대한 유효성 검증 웹훅 구성을 삭제합니다.

제약조건 템플릿 라이브러리 관리

제약조건 템플릿, 연관된 제약조건 또는 제약조건 템플릿 라이브러리의 설치 제거 또는 재설치에 대한 정보는 제약조건 작성을 참조하세요.

시행에서 네임스페이스 면제

네임스페이스 내의 객체를 무시하도록 Policy Controller를 구성할 수 있습니다. 자세한 정보는 Policy Controller에서 네임스페이스 제외를 참조하세요.

Policy Controller 버전 보기

Policy Controller는 Gatekeeper 오픈소스 프로젝트에서 빌드됩니다. Gatekeeper Policy Controller 버전을 보려면 이미지 태그를 봅니다.

kubectl get deployments -n gatekeeper-system gatekeeper-controller-manager \
  -o="jsonpath={.spec.template.spec.containers[0].image}"

Anthos Config Management 버전 1.3.2 이상에서는 Gatekeeper를 빌드하는 데 사용되는 Git 태그(또는 해시)와 Anthos Config Management 버전 번호가 다음과 같이 이미지 태그에 포함됩니다.

.../gatekeeper:version-number-git-tag.gbuild-number

다음 이미지를 예로 들어보겠습니다.

gcr.io/config-management-release/gatekeeper:anthos1.3.2-480baac.g0
  • anthos1.3.2는 버전 번호입니다.
  • 480baac는 Git 태그입니다.
  • 0은 빌드 번호입니다.

또한 출시 버전 매트릭스에서 모든 Anthos Config Management 버전 목록을 해당 매니페스트, 설치, nomos 바이너리 버전과 함께 볼 수 있습니다.

Policy Controller 제거

Policy Controller를 설치 제거하려면 config-management.yaml에서 Operator 구성을 편집하고 policyController.enabledfalse로 설정합니다. Operator가 policycontroller.configmanagement.gke.io 종료자를 제거하면 설치 제거가 완료됩니다.

Anthos Config Management를 완전히 제거하려면 클러스터에서 연산자 제거를 참조하세요.

다음 단계