Excluir namespaces do Policy Controller

Esta página descreve como configurar namespaces isentos no Policy Controller.

Namespaces isentos removem um namespace da aplicação do webhook de admissão com o Policy Controller, mas qualquer violação ainda é informada na auditoria. Se você não configurar namespaces, apenas o namespace gatekeeper-system estará, como pré-configuração, isento da aplicação do webhook de admissão do Policy Controller.

Configurar namespaces isentos

A configuração de um namespace isento permite que você aplique a identificação admission.gatekeeper.sh/ignore para isentar o namespace da aplicação do webhook de admissão do Controlador de política. Se você remover um namespace isento posteriormente, o Controlador de políticas não removerá o identificador admission.gatekeeper.sh/ignore do namespace.

Como isentar namespaces da aplicação

É possível isentar namespaces durante a instalação do Policy Controller ou após a instalação. O processo a seguir mostra como isentar namespaces após a instalação.

Console

  1. No console do Google Cloud, acesse a página Política do GKE Enterprise na seção Gerenciamento de postura.

    Acessar a política

  2. Na guia Configurações, na tabela de clusters, selecione Editar na coluna Editar configuração.
  3. Expanda o menu Editar configuração do Policy Controller.
  4. No campo Namespaces isentos, forneça uma lista de namespaces válidos. Os objetos nesses namespaces são ignorados por todas as políticas. Os namespaces ainda não precisam existir.
  5. Selecione Salvar alterações.

Policy Controller da gcloud

Para adicionar namespaces à lista de namespaces que podem ser isentos da aplicação pelo webhook de admissão, execute o seguinte comando:

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

Substitua:

  • MEMBERSHIP_NAME: o nome de assinatura do cluster registrado para isentar namespaces. Você pode especificar várias associações separadas por uma vírgula.
  • NAMESPACE_LIST: uma lista separada por vírgulas de namespaces que você quer que o Policy Controller isente da aplicação.

Este comando isenta recursos somente do webhook de admissão. Os recursos ainda são auditados. Para isentar namespaces da auditoria, defina a isenção no nível do pacote de políticas:

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

Substitua:

  • BUNDLE_NAME pelo nome do bundle que você quer atualizar com namespaces isentos.
  • MEMBERSHIP_NAME: o nome de assinatura do cluster registrado para isentar namespaces. Você pode especificar várias associações separadas por uma vírgula.
  • NAMESPACE_LIST: uma lista separada por vírgulas de namespaces que você quer que o Policy Controller isente da aplicação.

gcloud ConfigManagement

  1. Para isentar um namespace da aplicação, adicione o nome do namespace em spec.policyController.exemptableNamespaces:

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

    Substitua NAMESPACE_NAME pelo nome do namespace que você quer isentar da aplicação.

    Também é possível isentar vários namespaces. Por exemplo, para isentar os namespaces not-applicable e also-not-applicable, você aplicaria o seguinte manifesto:

    # 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. Aplique as alterações ao arquivo apply-spec.yaml:

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

    Substitua:

    • MEMBERSHIP_NAME: adicione o cluster registrado ao qual você quer aplicar essa configuração. Se você registrou o cluster no Console do Google Cloud, o nome da assinatura é igual ao nome do cluster.
    • CONFIG_YAML: adicione o caminho para seu arquivo apply-spec.yaml.
    • PROJECT_ID: adicione o ID do projeto.
  3. Identifique seu namespace isento para que o webhook de admissão do Controlador de política não aplique o conteúdo dele:

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

    Substitua NAMESPACE_NAME pelo nome do namespace que você quer isentar da aplicação.

Namespaces que serão isentos da aplicação

Estes são alguns namespaces que podem ser criados pelo Google Kubernetes Engine (GKE) e produtos relacionados. É recomendável isentá-los da aplicação para evitar um impacto indesejado:

- 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