Como sincronizar com um repo somente leitura

Este início rápido mostra como começar com o Anthos Config Management em um novo cluster, usando o foo-corp example repo para inicializar um cluster com um conjunto de configs. Neste guia de início rápido, você não precisa ter acesso de gravação ao repo. Imagine que uma equipe de conformidade em sua organização seja responsável por criar os configs e que cada cluster precise se sincronizar com o repo.

Depois de concluir este guia de início rápido, siga um guia de início rápido avançado sobre como escrever, testar e sincronizar configs.

Antes de começar

  1. Faça login na sua conta do Google.

    Se você ainda não tiver uma, inscreva-se.

  2. No Console do Cloud, na página do seletor de projetos, selecione ou crie um projeto do Cloud.

    Acessar a página do seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud. Saiba como confirmar se a cobrança está ativada para o seu projeto.

  4. Ative a API Anthos.

    Ative a API

  5. Instale e inicialize o SDK do Cloud..

Requisitos

O Anthos Config Management requer um direito ativo do Anthos. Para mais informações, consulte Preços para o Anthos.

Configuração do cluster

Usuários do GKE

  1. Crie um cluster.

  2. Configure o comando kubectl para se autenticar no cluster e crie um RoleBinding para se tornar um administrador do cluster usando os comandos a seguir. Use o nome do cluster em que você vê [MY-CLUSTER] e use o endereço de e-mail da sua conta do Google Cloud em que vê [USER-ACCOUNT]. Dependendo de como você configurou o comando gcloud no sistema local, talvez seja necessário adicionar os campos --project e --zone.

    gcloud container clusters get-credentials [MY-CLUSTER]
    
    kubectl create clusterrolebinding cluster-admin-binding \
        --clusterrole cluster-admin --user [USER_ACCOUNT]
    

Usuários locais do Anthos GKE

Instalação do Anthos Config Management

  1. Instale o comando nomos no sistema local.

  2. Se você estiver instalando manualmente, instale o Config Management Operator no cluster que acabou de criar.

  3. Registre seu cluster em um ambiente Anthos usando o Connect.

Configurar seu cluster

É possível configurar seu cluster usando kubectl ou o Console do Google Cloud.

kubectl

Crie um arquivo config-management.yaml e copie o arquivo YAML abaixo nele. Como o repo é legível por todos, secretType é definido como none. Para uma explicação sobre os campos, consulte Configuração para o repositório Git.

apiVersion: configmanagement.gke.io/v1
kind: ConfigManagement
metadata:
  name: config-management
spec:
  # clusterName is required and must be unique among all managed clusters
  clusterName: my-cluster
  git:
    syncRepo: https://github.com/GoogleCloudPlatform/csp-config-management/
    syncBranch: 1.0.0
    secretType: none
    policyDir: "foo-corp"

Aplique a configuração ao seu cluster:

kubectl apply -f config-management.yaml

Se o comando for bem-sucedido, o Kubernetes atualizará o Config Management Operator no cluster para começar a sincronizar a configuração do cluster do repositório. Para verificar se o Config Management Operator está em execução, liste todos os pods em execução no namespace config-management-system:

kubectl get pods -n config-management-system

Saída:

NAME                                   READY     STATUS    RESTARTS   AGE
git-importer-5f8bdb59bd-7nn5m          2/2       Running   0          2m
monitor-58c48fbc66-ggrmd               1/1       Running   0          2m
syncer-7bbfd7686b-dxb45                1/1       Running   0          2m

Console

Para configurar o Operator no Console do Google Cloud, conclua as seguintes etapas:

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

    Acesse o menu do Anthos Config Management

  2. Selecione seu cluster registrado e clique em Configurar.

  3. Na seção Autenticação de repositório do Git para ACM, conclua o seguinte:

    1. Em Tipo de chave secreta, selecione Nenhum, já que o repositório neste exemplo é legível.
    2. Clique em Continuar.
  4. Na seção Configurações do ACM para os clusters, faça o seguinte:

    1. No campo URL, adicione https://github.com/GoogleCloudPlatform/csp-config-management/
    2. No campo Ramificação, adicione 1.0.0
    3. Clique em Exibir opções avançadas.
    4. No campo Diretório de políticas, adicione foo-corp
  5. Clique em Done. Você será levado de volta ao menu do Anthos Config Management. Após alguns minutos, atualize a página. Você verá Synced na coluna de status ao lado do cluster configurado.

Examinar seu cluster e repo

O repo foo-corp inclui configs nos diretórios cluster/ e namespaces/. Esses configs são aplicados assim que o Config Management Operator é configurado para ler o repo.

Todos os objetos gerenciados pelo Anthos Config Management têm o rótulo app.kubernetes.io/managed-by definido como configmanagement.gke.io.

Liste os namespaces gerenciados pelo Anthos Config Management.

kubectl get ns -l app.kubernetes.io/managed-by=configmanagement.gke.io

Saída:

NAME               STATUS   AGE
audit              Active   4m
shipping-dev       Active   4m
shipping-prod      Active   4m
shipping-staging   Active   4m

Examine os configs que causaram a criação desses namespaces, como namespaces/audit/namespace.yaml e namespaces/online/shipping-app-backend/shipping-dev/namespace.yaml.

Liste ClusterRoles gerenciados pelo Anthos Config Management:

kubectl get clusterroles -l app.kubernetes.io/managed-by=configmanagement.gke.io

Saída:

NAME               AGE
namespace-reader   6m52s
pod-creator        6m52s

Examine os configs do ClusterRole declarando:

  • cluster/namespace-reader-clusterrole.yaml
  • cluster/pod-creator-clusterrole.yaml

É possível examinar outros objetos, como Roles e PodSecurityPolicies, da mesma maneira.

Tentativa de modificar manualmente um objeto gerenciado

Se você modificar manualmente um objeto do Kubernetes gerenciado pelo Anthos Config Management, a configuração desse objeto será atualizada automaticamente para corresponder ao config do objeto no repo. Para fazer esse teste, exclua o namespace shipping-dev.

kubectl delete namespace shipping-dev

Se você verificar imediatamente, o namespace poderá estar ausente, mas dentro de alguns segundos ele existirá novamente. Exemplo:

kubectl get ns shipping-dev

Saída:

Error from server (NotFound): namespaces "shipping-dev" not found

Segundos depois:

kubectl get ns shipping-dev

Saída:

NAME           STATUS   AGE
shipping-dev   Active   3s

Limpar

Depois que você concluir os exercícios deste tópico, exclua o cluster usado nos testes para fazer a limpeza.

A seguir