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 de seletor de projetos, selecione ou crie um projeto do Cloud.

    Acesse 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 de sua conta do Google Cloud em que vê [USER-ACCOUNT]. Dependendo de como você configurou o comando gcloud em seu 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:

  • Todos os usuários:

    1. Instale o comando nomos no sistema local.

    2. Instale o Config Management Operator no cluster que você acabou de criar.

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

Configurar seu cluster

Crie um arquivo config-management.yaml e copie o YAML abaixo nele. Consulte as instruções de instalação para ler uma explicação dos campos. Como o repo é legível por todos, secretType é definido como none.

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 a 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
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

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 namespaces gerenciados pelo Anthos Config Management:

kubectl get ns -l app.kubernetes.io/managed-by=configmanagement.gke.io
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
NAME               AGE
namespace-reader   6m52s
pod-creator        6m52s

Examine os configs ClusterRole que declaram o seguinte:

  • 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:

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

Segundos depois:

kubectl get ns shipping-dev
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