Como excluir namespaces do webhook de admissão do Policy Controller

Nesta página, descrevemos como configurar namespaces isentos. 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 nenhum namespace, apenas o namespace gatekeeper-system estará isento da aplicação.

Antes de começar

Para seguir os comandos desta página, instale o Policy Controller no cluster. No entanto, também é possível ativar namespaces isentos ao instalar o Policy Controller pela primeira vez.

Como configurar namespaces isentos

A configuração de um namespace dispensável permite aplicar o rótulo admission.gatekeeper.sh/ignore. Se mais tarde você remover um namespace isento, o Policy Controller não removerá a aplicação desse rótulo para esse namespace.

Como isentar namespaces da aplicação

Antes de aplicar o rótulo admission.gatekeeper.sh/ignore, você precisa adicionar o nome do namespace ao configurar o Policy Controller.

Console - Anthos

  1. No Console do Cloud, acesse a página Anthos Config Management.

    Acessar o Anthos Config Management

  2. Selecione os clusters registrados em que você quer ativar esse recurso e clique em Configurar.

  3. Clique em Configurações do ACM para os clusters.

  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 não precisam existir atualmente.

  5. Clique em Concluído.

Console: GKE

  1. No Console do Cloud, acesse a página Config Management.

    Acessar o Config Management

  2. Ao lado do cluster em que você quer ativar o recurso, clique em Editar.

  3. No menu à esquerda, clique em 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 não precisam existir atualmente.

  5. Clique em Concluir.

gcloud

  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"]
    ...
    

    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 hub 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.

Rotular o namespace

Depois de ativar o recurso, rotule seus namespaces para que o webhook de admissão do Policy Controller não aplique o conteúdo:

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