정책 컨트롤러에서 네임스페이스 제외

이 페이지에서는 정책 컨트롤러에서 예외 네임스페이스를 구성하는 방법을 설명합니다.

예외 네임스페이스는 정책 컨트롤러를 사용하여 허용 웹훅 시행에서 네임스페이스를 삭제하지만 모든 위반은 여전히 감사에서 계속 보고됩니다. 네임스페이스를 구성하지 않으면 gatekeeper-system 네임스페이스만 정책 컨트롤러 허용 웹훅 시행을 예외로 처리하도록 구성됩니다.

예외 네임스페이스 구성

예외 가능한 네임스페이스를 구성하면 정책 컨트롤러 허용 웹훅 시행에서 네임스페이스를 예외로 처리하도록 admission.gatekeeper.sh/ignore 라벨을 적용할 수 있습니다. 예외 가능한 네임스페이스를 나중에 삭제하면 정책 컨트롤러가 네임스페이스에서 admission.gatekeeper.sh/ignore 라벨을 삭제하지 않습니다.

시행 시 네임스페이스 예외

정책 컨트롤러 설치 중 또는 설치 후 네임스페이스를 예외로 처리할 수 있습니다. 다음 프로세스는 설치 후 네임스페이스를 예외로 처리하는 방법을 보여줍니다.

Console

  1. Google Cloud 콘솔의 상황 관리 섹션에서 GKE Enterprise 정책 페이지로 이동합니다.

    정책으로 이동

  2. 설정 탭의 클러스터 테이블에서 구성 수정 열의 수정 을 선택합니다.
  3. 정책 컨트롤러 구성 수정 메뉴를 확장합니다.
  4. 네임스페이스 면제 필드에 유효한 네임스페이스 목록을 입력합니다. 이 네임스페이스의 객체는 모든 정책에서 무시됩니다. 네임스페이스는 아직 없어도 됩니다.
  5. 변경사항 저장을 선택합니다.

gcloud 정책 컨트롤러

허용 웹훅으로 시행에서 제외할 수 있는 네임스페이스 목록에 네임스페이스를 추가하려면 다음 명령어를 실행합니다.

  gcloud container fleet policycontroller update \
    --memberships=MEMBERSHIP_NAME \
    --exemptable-namespaces=[NAMESPACE_LIST]

다음을 바꿉니다.

  • MEMBERSHIP_NAME: 네임스페이스를 제외할 등록된 클러스터의 멤버십 이름. 여러 멤버십을 쉼표로 구분하여 지정할 수 있습니다.
  • NAMESPACE_LIST: 정책 컨트롤러에서 시행에서 제외할 쉼표로 구분된 네임스페이스 목록

이 명령어는 허용 웹훅에서만 리소스를 제외합니다. 리소스는 여전히 감사 대상입니다. 대신 네임스페이스를 감사에서 제외하려면 정책 번들 수준에서 예외를 설정합니다.

  gcloud container fleet policycontroller content bundles set BUNDLE_NAME \
    --memberships=MEMBERSHIP_NAME \
    --exempted-namespaces=[NAMESPACE_LIST]

다음을 바꿉니다.

  • BUNDLE_NAME: 제외된 네임스페이스로 업데이트할 정책 번들의 이름
  • MEMBERSHIP_NAME: 네임스페이스를 제외할 등록된 클러스터의 멤버십 이름. 여러 멤버십을 쉼표로 구분하여 지정할 수 있습니다.
  • NAMESPACE_LIST: 정책 컨트롤러에서 시행에서 제외할 쉼표로 구분된 네임스페이스 목록

gcloud ConfigManagement

  1. 네임스페이스를 시행에서 면제하려면 spec.policyController.exemptableNamespaces에 네임스페이스 이름을 추가합니다.

    # apply-spec.yaml
    
    applySpecVersion: 1
    spec:
      # Set to true to install and enable Policy Controller
      policyController:
        enabled: true
        exemptableNamespaces: ["NAMESPACE_NAME"]
    ...
    

    NAMESPACE_NAME을 시행 예외로 처리할 네임스페이스 이름으로 바꿉니다.

    여러 네임스페이스를 제외할 수도 있습니다. 예를 들어 not-applicablealso-not-applicable 네임스페이스를 추가하려면 다음 매니페스트를 적용합니다.

    # apply-spec.yaml
    
    applySpecVersion: 1
    spec:
      # Set to true to install and enable Policy Controller
      policyController:
        enabled: true
        exemptableNamespaces: ["not-applicable","also-not-applicable"]
    ...
    
  2. 변경사항을 apply-spec.yaml 파일에 적용합니다.

     gcloud beta container fleet config-management apply \
         --membership=MEMBERSHIP_NAME \
         --config=CONFIG_YAML \
         --project=PROJECT_ID
    

    다음을 바꿉니다.

    • MEMBERSHIP_NAME: 이 구성을 적용할 등록된 클러스터를 추가합니다. Google Cloud 콘솔에 클러스터를 등록한 경우 멤버십 이름은 클러스터 이름과 동일합니다.
    • CONFIG_YAML: apply-spec.yaml 파일의 경로를 추가합니다.
    • PROJECT_ID: 프로젝트 ID를 추가합니다.
  3. 정책 컨트롤러 허용 웹훅이 해당 콘텐츠를 적용하지 않도록 예외 가능한 네임스페이스에 라벨을 지정합니다.

    kubectl label namespace NAMESPACE_NAME "admission.gatekeeper.sh/ignore=true"
    

    NAMESPACE_NAME을 시행 예외로 처리할 네임스페이스 이름으로 바꿉니다.

시행 시 제외할 네임스페이스

다음은 Google Kubernetes Engine(GKE) 및 관련 제품으로 생성될 수 있는 일부 네임스페이스입니다. 원치 않는 영향을 피하기 위해 시행 시 이를 제외할 수 있습니다.

- anthos-creds
- anthos-identity-service
- apigee
- apigee-system
- asm-system
- capi-kubeadm-bootstrap-system
- capi-system
- cert-manager
- cnrm-system
- config-management-monitoring
- config-management-system
- gke-connect
- gke-gmp-system
- gke-managed-cim
- gke-managed-filestorecsi
- gke-managed-metrics-server
- gke-managed-system
- gke-system
- gmp-public
- gmp-system
- hnc-system
- istio-system
- kube-node-lease
- kube-public
- kube-system
- poco-trial
- resource-group-system
- vm-system