Como instalar o Policy Controller

Este tópico mostra como instalar o Policy Controller, um controlador de admissão do Kubernetes que verifica, audita e reforça a conformidade dos clusters com políticas relacionadas a segurança, regulamentos ou regras de negócios.

Antes de começar

  • Você precisa ter um direito do Anthos para instalar o Policy Controller usando o Anthos Config Management.

  • Você precisa de um cluster executando o GKE v1.14.x ou superior com o Anthos Config Management já instalado.

Como instalar o Policy Controller usando o Anthos Config Management

Siga estas etapas para configurar o Anthos Config Management para instalar o controlador de admissão dinâmica do 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 ignorar a instalação dos modelos de restrição, remova o 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 para o Operator:

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

    O suporte para restrições referenciais está desativado por padrão. Antes de ativá-lo, certifique-se de entender 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 impor restrições.

Como verificar a instalação

Se o Policy Controller estiver instalado corretamente, seu Pod estará em execução. O pod pode reiniciar várias vezes antes de estar disponível.

kubectl get pods -n gatekeeper-system

Exemplo de saída:

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

Exemplo de saída:

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

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

Policy Controller e Anthos Config Management

Os recursos essenciais para executar o Policy Controller são gerenciados pelo Config Management Operator. Para evitar disputas entre o Operator e o Policy Controller, esteja ciente do que é colocado no repo do Anthos Config Management.

Algumas áreas de preocupação:

  • Você não pode 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ê quer sincronizar o recurso do config armazenado no namespace gatekeeper-system, o namespace precisa ser indefinido no repo ou corresponder à configuração que o Operator quer instalar.

  • Se o namespace gatekeeper-system for removido do repo da fonte da verdade, o Operator poderá não conseguir se recuperar. Para recuperar, exclua a validação da configuração do webhook para o Policy Controller.

Como gerenciar a biblioteca de modelos de restrição

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

Como isentar namespaces da aplicação

Você pode configurar o Policy Controller para ignorar objetos em um namespace. Para mais informações, consulte Como excluir o namespaces do Policy Controller.

Como visualizar a versão do controlador de políticas

O Policy Controller é construído a partir do projeto de código aberto Gatekeeper. Para ver qual versão do controlador de políticas do Gatekeeper está usando, veja 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 do Git (ou hash) usada para criar o Gatekeeper, bem como 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 da versão.

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 nomos correspondentes na Matriz de versões de lançamento.

Como desinstalar o Policy Controller

Para desinstalar o controlador de política, edite a configuração do Operator em config-management.yaml e defina policyController.enabled como false. Depois que o Operator remove o finalizador policycontroller.configmanagement.gke.io, a desinstalação está concluída.

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

A seguir