Como instalar o Policy Controller

Esta página mostra como instalar o Policy Controller. O Policy Controller verifica, audita e reforça a conformidade de seus clusters com políticas relacionadas a segurança, regulamentos ou regras de negócios.

O Policy Controller está disponível se você usa o Anthos ou o Google Kubernetes Engine (GKE). Com o GKE, o Policy Controller é um recurso pago. Para saber mais, consulte Preços.

Antes de começar

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

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

  2. Se você estiver usando o Anthos Config Management pela primeira vez, ative o Anthos Config Management.

  3. Crie ou verifique se você tem acesso a um cluster que executa uma versão 1.14.x ou posterior do Kubernetes. O Policy Controller pode parecer que está sendo executado nas versões do Kubernetes anteriores à 1.14.x, mas o produto não se comporta corretamente.

  4. Conceda os papéis do IAM ao usuário que registra o cluster.

  5. Se você planeja usar a ferramenta de linha de comando gcloud para configurar o Policy Controller, registre seu cluster em uma fleet agora. Se você planeja usar o Console do Google Cloud, registre seus clusters ao instalar o Policy Controller.

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

Registre seus clusters

Para usar o Anthos Config Management, primeiro é necessário registrar os clusters. O registro dos clusters permite que eles compartilhem um conjunto comum de configurações e políticas.

Para registrar seus clusters, conclua as seguintes tarefas:

  1. No Console do Cloud:

    Nestas páginas, você verá quais clusters estão registrados e configurados atualmente e permite começar a registrar novos clusters.

  2. Clique em Nova configuração.

  3. Na página Selecionar clusters registrados para o Config Management, localize a tabela Clusters não registrados deste projeto e encontre o cluster que você quer registrar.

  4. Clique em Registrar ao lado do cluster que você quer registrar.

    Depois que o cluster for registrado, ele aparecerá na tabela Selecionar clusters registrados para o Config Management.

Configurar o Policy Controller

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

  1. Na página Selecionar clusters registrados para o Config Management, selecione o cluster registrado em que você quer ativar o Policy Controller e selecione Avançar.
  2. Na lista suspensa Versão, selecione a versão do Anthos Config Management que você quer usar. O padrão é a versão atual.
  3. Se você não quiser instalar o Config Sync, desmarque a caixa de seleção Ativar Config Sync e clique em Avançar.
  4. Na página Policy Controller, deixe a caixa de seleção Ativar Policy Controller marcada.
  5. Opcional: para instalar uma biblioteca de modelos de restrição para tipos comuns de política, deixe a caixa de seleção Instalar biblioteca de modelos padrão marcada.
  6. Opcional: 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.
  7. Opcional: no campo Namespaces isentos, forneça uma lista de namespaces. Os objetos nesses namespaces são ignorados por todas as políticas. Os namespaces não precisam existir atualmente.
  8. Opcional: para ativar restrições referenciais, marque a caixa de seleção Ativar a capacidade de usar modelos de restrição que fazem referência a objetos diferentes do objeto que está sendo avaliado.
  9. Clique em Concluir. Você será redirecionado para a página Anthos Config Management.

    Após alguns minutos, você verá Instalado na coluna de status do Policy Controller ao lado dos clusters configurados.

gcloud

  1. Prepare a configuração criando um novo manifesto apply-spec.yaml ou usando um existente. Se você escolher a última opção, é possível configurar um cluster com as mesmas configurações usadas por outro.

Criar novo manifesto

Para definir o Config Sync com novas configurações para o cluster, crie um arquivo chamado apply-spec.yaml e copie o seguinte arquivo YAML nele:

# apply-spec.yaml

applySpecVersion: 1
spec:
  policyController:
    # Set to true to install and enable Policy Controller
    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"]
    # Uncomment to enable mutation (preview feature)
    # mutation:
    #   # enabled: true
  # ...other fields...

Adicione um campo spec.policyController e defina o valor de enabled como true. É possível ativar outros recursos do Policy Controller. Entretanto, o suporte para restrições referenciais está desativado por padrão. Antes de ativá-lo, familiarize-se com as advertências sobre consistência posterior.

Usar manifesto existente

Para definir o cluster com as mesmas configurações usadas por outro cluster, recupere as configurações de um cluster registrado:

gcloud alpha container hub config-management fetch-for-apply \
     --membership=MEMBERSHIP_NAME \
     --project=PROJECT_ID \
     > CONFIG_YAML_PATH

Substitua:

  • MEMBERSHIP_NAME: o nome da assinatura do cluster registrado que contém as configurações do Policy Controller que você quer usar
  • PROJECT_ID: ID do projeto
  • CONFIG_YAML_PATH: o caminho para o arquivo apply-spec.yaml

2. Aplique o arquivo apply-spec.yaml:

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

Substitua:

  • MEMBERSHIP_NAME: o nome da assinatura do cluster registrado que contém as configurações do Policy Controller que você quer usar
  • CONFIG_YAML: adicione o caminho para seu arquivo apply-spec.yaml.
  • PROJECT_ID: adicione o ID do projeto.

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

Instalar o Policy Controller em um cluster particular

Se você estiver usando uma versão anterior à 1.8.0 e instalando o controlador de políticas em um cluster particular no Google Kubernetes Engine (GKE), será necessário realizar outras etapas para concluir a instalação. Em clusters privados, o firewall bloqueia o plano de controle para alcançar os nós na porta 8443, que é onde o plano de controle tenta se conectar ao Policy Controller. É possível criar uma regra de firewall para que o plano de controle possa alcançar a porta 8443 (ou qualquer outra porta personalizada). Também é possível fazer o pod ser executado na porta privilegiada 443. Para mais informações, consulte Como executar em nós de cluster particular do GKE na documentação do Gatekeeper.

Verificar a instalação

Depois de instalar o Policy Controller, você pode verificar se ele foi concluído com sucesso.

Console

Siga estas etapas:

  1. No Console do Cloud:

  2. Na tabela do cluster, confira a coluna Status do controlador de política. Uma instalação bem-sucedida terá o status Instalado.

gcloud

Execute este comando:

gcloud beta container hub config-management status \
    --project=PROJECT_ID

Substitua PROJECT_ID pelo ID do projeto.

O resultado será semelhante a:

Name          Status  Last_Synced_Token  Sync_Branch  Last_Synced_Time      Policy_Controller
CLUSTER_NAME  SYNCED  a687c2c            1.0.0        2021-02-17T00:15:55Z  INSTALLED

Uma instalação bem-sucedida terá o status INSTALLED na coluna "Controlador de política".

Verificar a instalação da biblioteca de modelos de restrição

Ao instalar o Policy Controller, a biblioteca de modelos de restrição é instalada por padrão, e essa instalação pode levar vários minutos para ser concluída.

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 o conflito entre o Anthos Config Management e o Policy Controller, observe o que é colocado no repositório do 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.

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.

Recursos "mutate"

O Policy Controller também atua como um webhook mutável (recurso de visualização). Para mais informações, consulte Como mutar recursos.

Ver a versão do Policy Controller

Para ver qual versão do Policy Controller 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:VERIOSN_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.

Fazer upgrade do Policy Controller

O Policy Controller é atualizado sempre que você faz upgrade do Anthos Config Management. Para saber mais, consulte Fazer upgrade do Anthos Config Management.

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. No Console do Cloud:

  2. Ao lado dos clusters em que você quer desativar o Policy Controller, clique em Editar.

  3. Para acessar a página de configuração do Policy Controller, clique em Avançar.

  4. Desmarque a caixa de seleção Ativar Policy Controller.

  5. Clique em Concluir.

gcloud

Para desinstalar o Policy Controller:

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

  2. Aplique as alterações no arquivo apply-spec.yaml:

     gcloud beta 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 apply-spec.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.

Se você quiser desinstalar totalmente o Anthos Config Management, consulte Como desinstalar o Anthos Config Management.

A seguir