Como instalar o Policy Controller

Nesta página, mostramos como instalar o Policy Controller, um controlador de admissão do Kubernetes que verifica, faz auditoria e aplica a conformidade dos clusters com políticas relacionadas a segurança, regulamentos ou regras de negócios.

Antes de começar

Antes de começar, veja se você realizou as seguintes tarefas:

  • Instale e inicialize o SDK do Cloud, que fornece os comandos gcloud, gsutil, kubectl e nomos usados nessas instruções. Se você usa o Cloud Shell, o SDK do Cloud vem pré-instalado.

  • Você precisa ter um direito do Anthos para instalar o Policy Controller usando o Anthos Config Management. Para mais informações, consulte Como configurar o Anthos.

  • Ter um cluster executando uma versão do Kubernetes de 1.14.x ou posterior com o Config Sync já instalado.

Como instalar o Policy Controller

Siga estas etapas para configurar o Anthos Config Management para instalar o controlador de admissão dinâmica Policy Controller no cluster.

Console

Para configurar o Policy Controller no Console do Cloud, siga estas etapas:

  1. Acesse o menu do Anthos Config Management no Console do Google Cloud.

    Acessar o menu do Anthos Config Management

  2. Selecione os clusters em que você quer ativar o Policy Controller e clique em Configurar.

  3. Clique no título Configurações do ACM dos clusters.

  4. No cabeçalho Policy Controller, marque a caixa de seleção Enable Controller Controller.

    1. Deixe a caixa de seleção Instalar biblioteca de modelos padrão marcada para instalar uma biblioteca de modelos de restrição para tipos de política comuns.
    2. No campo Intervalo de auditoria, selecione o período em segundos entre sincronizações consecutivas. O padrão é 60 segundos. Se você definir o intervalo de auditoria como 0, a auditoria será desativada.
    3. 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.
    4. Marque a caixa de seleção Ativa a capacidade de usar modelos de restrição que fazem referência a objetos diferentes do objeto que está sendo avaliado no momento para ativar restrições referenciais. Para saber mais sobre restrições de referência, consulte Como ativar restrições de referência.
  5. Clique em Concluído. Você será redirecionado ao menu do Anthos Config Management.

gcloud

Siga estas etapas para configurar o Anthos Config Management para instalar o controlador de admissão dinâmica Policy Controller no cluster.

Por padrão, o Policy Controller instala uma biblioteca de modelos de restrição para tipos de política comuns. Para pular a instalação dos modelos de restrição, remova a marca de comentário da linha que começa com templateLibraryInstalled no manifesto.

  1. Defina o valor de enabled no objeto spec.policyController como true no arquivo de configuração do Anthos Config Management:

    # 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 enable support for referential constraints
        # referentialRulesEnabled: true
        # Uncomment to disable audit, adjust value to set audit interval
        # auditIntervalSeconds: 0
        # Uncomment to log all denies and dryrun failures
        # logDeniesEnabled: true
        # Uncomment to exempt namespaces
        # exemptableNamespaces: ["namespace-name"]
      # ...other fields...
    

    O suporte para restrições referenciais está desativado por padrão. Antes de ativá-lo, confirme se você entendeu as advertências sobre consistência posterior.

  2. Aplique o arquivo config-management.yaml:

     gcloud alpha container hub config-management apply \
         --membership=CLUSTER_NAME \
         --config=CONFIG_YAML \
         --project=PROJECT_ID
    

    Substitua:

    • CLUSTER_NAME: adicione o cluster registrado ao qual você quer aplicar essa configuração.
    • CONFIG_YAML: adicione o caminho para seu arquivo config-management.yaml.
    • PROJECT_ID: adicione o ID do projeto.

O pod é criado e o Policy Controller começa a verificar e aplicar as restrições.

kubectl

Por padrão, o Policy Controller instala uma biblioteca de modelos de restrição para tipos de política comuns. Para pular a instalação dos modelos de restrição, remova a marca de comentário da linha que começa com templateLibraryInstalled no manifesto.

  1. Defina o valor de enabled no objeto spec.policyController como true no arquivo de configuração do Anthos Config Management:

    # 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 enable support for referential constraints
        # referentialRulesEnabled: true
        # Uncomment to disable audit, adjust value to set audit interval
        # auditIntervalSeconds: 0
        # Uncomment to log all denies and dryrun failures
        # logDeniesEnabled: true
        # Uncomment to exempt namespaces
        # exemptableNamespaces: ["namespace-name"]
      # ...other fields...
    

    O suporte para restrições referenciais está desativado por padrão. Antes de ativá-lo, confirme se você entendeu as advertências sobre consistência posterior.

  2. Aplique a configuração usando kubectl apply.

    kubectl apply -f config-management.yaml
    

O pod é criado e o Policy Controller começa a verificar e aplicar as restrições.

Como verificar a instalação

Se o Policy Controller foi instalado corretamente, o pod está em execução. O pod pode ser reiniciado várias vezes antes de estar disponível.

Para visualizar o status do pod, execute o comando abaixo:

kubectl get pods -n gatekeeper-system

O resultado será semelhante a:

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

A biblioteca de modelos de restrição é instalada por padrão. Isso pode levar alguns minutos para ser concluído. Para verificar se a biblioteca de modelos está instalada, liste todos os objetos ConstraintTemplate:

kubectl get constrainttemplates

O resultado será semelhante a:

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

Quando um modelo de restrição individual é instalado corretamente, o campo status.created é true.

Interações do Policy Controller com o Anthos Config Management

O Anthos Config Management gerencia os recursos essenciais para a execução do Policy Controller. Para evitar a contenção entre o Anthos Config Management e o Policy Controller, observe o que é colocado no repositório do Anthos Config Management.

Ao usar o Policy Controller, considere os seguintes pontos:

  • Não é possível sincronizar um modelo de restrição que também faz parte da biblioteca de modelos, a menos que a biblioteca de modelos de restrição esteja desativada.

  • Se você quiser sincronizar o recurso de configuração armazenado no namespace gatekeeper-system, o namespace precisará estar indefinido no repositório ou corresponder à configuração que o Anthos Config Management quer instalar.

  • Se o namespace gatekeeper-system for removido do repositório de origem da verdade, talvez o Anthos Config Management não consiga se recuperar. Para recuperar, exclua a configuração do webhook de validação do Policy Controller.

Como gerenciar a biblioteca de modelos de restrição

Para informações sobre como desinstalar ou reinstalar modelos de restrição, as restrições associadas ou a biblioteca de modelos de restrição, consulte Como criar restrições.

Como isentar namespaces da aplicação

É possível configurar o Policy Controller para ignorar objetos em um namespace. Para mais informações, consulte Como excluir namespaces do Policy Controller.

Como visualizar a versão do Policy Controller

Para ver qual versão do controlador de políticas do Gatekeeper está usando, execute o seguinte comando para ver a tag de imagem:

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

No Anthos Config Management versão 1.3.2 e posterior, a tag (ou hash) do Git usada para criar o Gatekeeper e o número da versão do Anthos Config Management estão incluídos na tag de imagem da seguinte maneira:

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

Por exemplo, para a seguinte imagem:

gcr.io/config-management-release/gatekeeper:anthos1.3.2-480baac.g0
  • anthos1.3.2 é o número da versão;
  • 480baac é a tag do Git;
  • 0 é o número do build.

Também é possível ver uma lista de todas as versões do Anthos Config Management com o manifesto, a instalação e as versões binárias de nomos correspondentes na Matriz de versões de lançamento.

Como desinstalar o Policy Controller

Siga estas etapas para desinstalar o Policy Controller dos clusters.

Console

Para desativar o Policy Controller nos clusters, conclua as tarefas a seguir:

  1. Acesse o menu do Anthos Config Management no Console do Google Cloud.

    Acessar o menu do Anthos Config Management

  2. Selecione os clusters em que você quer desativar o Policy Controller.

  3. Clique em Configurar.

  4. Clique no título Configurações do ACM dos clusters.

  5. Na seção Controlador de políticas, desmarque a caixa de seleção Controlador de políticas.

  6. Clique em Concluído.

gcloud

Para desinstalar o Policy Controller:

  1. Edite a configuração do Anthos Config Management no seu arquivo config-management.yaml e defina policyController.enabled como false.

  2. Aplique as alterações no arquivo config-management.yaml:

     gcloud alpha container hub config-management apply \
         --membership=CLUSTER_NAME \
         --config=CONFIG_YAML \
         --project=PROJECT_ID
    

    Substitua:

    • CLUSTER_NAME: adicione o cluster registrado ao qual você quer aplicar essa configuração.
    • CONFIG_YAML: adicione o caminho para seu arquivo config-management.yaml.
    • PROJECT_ID: adicione o ID do projeto.

Depois que o Anthos Config Management remover o finalizador policycontroller.configmanagement.gke.io, a desinstalação será concluída.

kubectl

Para desinstalar o Policy Controller, edite a configuração do Anthos Config Management no seu arquivo config-management.yaml e defina policyController.enabled como false. Depois que o Anthos Config Management remover o finalizador policycontroller.configmanagement.gke.io, a desinstalação será concluída.

Se você quiser desinstalar totalmente o Anthos Config Management, consulte Como desinstalar o Config Sync de um cluster.

A seguir