Como gravar configs

Neste guia de início rápido, mostramos como gravar sua própria configuração, validá-la e sincronizá-la com um cluster. Este tópico é baseado nas habilidades que você aprendeu no guia de início rápido para usar um repo somente leitura. Imagine que você é um novo membro da equipe de conformidade da sua organização e está criando sua primeira configuração.

Depois de concluir este guia de início rápido, siga um guia de início rápido sobre como ativar ou cancelar o gerenciamento de objetos de cluster atuais.

Antes de começar

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

  1. Siga o guia de início rápido para usar um repo somente leitura e não exclua o cluster.

  2. Crie uma conta do GitHub se você não tiver uma.

  3. Siga as instruções para adicionar uma nova chave SSH à sua conta do GitHub (em inglês) na documentação do GitHub.

É bom também estar familiarizado com a bifurcação e clonagem de repositórios do Git (em inglês).

Criar seu repo

Para este guia de início rápido, crie seu repo gerando uma bifurcação do repo foo-corp (em inglês) e, em seguida, criando um clone local como sua cópia de trabalho.

  1. No seu navegador, acesse o repo foo-corp e clique no botão Fork.

  2. No seu sistema local, clone sua bifurcação. Substitua [my-git-username] pelo nome de usuário do GitHub:

    git clone git@github.com:[my-git-username]/csp-config-management.git
  3. Use a chave SSH que você adicionou em Antes de começar para configurar seu sistema local para autenticar o GitHub (em inglês).

Criar o hook de pré-confirmação nomos vet

É possível instalar um hook de pré-confirmação que executa o comando nomos vet na sua alteração. Com esse hook, o nomos vet verifica se há erros de sintaxe ou outros problemas nas alterações antes de você confirmar no repo local.

  1. Em um terminal, vá para o diretório onde você clonou seu repo.

  2. Edite o arquivo .git/hooks/pre-commit. Observe o caractere . no diretório .git/.

  3. nomos vet deve ser executado no diretório foo-corp do seu repo clonado localmente. Adicione o código a seguir ao arquivo, substituindo [/path/to/repo] pelo caminho totalmente qualificado do lugar em que você clonou o repo.

    nomos vet --path=/path/to/repo/foo-corp

    Salve o arquivo.

  4. Certifique-se de que o arquivo .git/hooks/pre-commit seja executável:

    chmod +x .git/hooks/pre-commit
  5. Teste a pré-confirmação com git commit. nomos vet é executado e mostra uma mensagem de erro.

Configurar seu cluster

Criar o secret git-creds

  1. Acesse a chave privada registrada no seu repositório do Git. Esteja atento a como você faz o download do arquivo e onde o armazena, porque ele pode ser usado para autenticar seu repositório do Git.

  2. Armazene a chave privada como um secret nomeado git-creds no cluster do Kubernetes:

    kubectl create secret generic git-creds \
     --namespace=config-management-system \
     --from-file=ssh=/path/to/[KEYPAIR-PRIVATE-KEY-FILENAME]
    
  3. Proteja a chave privada no seu disco local ou exclua-a.

Atualizar o objeto ConfigManagement

Edite o arquivo config-management.yaml que você criou no guia de início rápido para usar um repo somente leitura. Faça as alterações a seguir:

  1. Atualize o valor de syncRepo para o endereço da bifurcação e substitua my-github-username pelo seu nome de usuário do GitHub.
  2. Atualize o valor de secretType para ssh. O secret git-creds já existe no cluster.

No exemplo a seguir, mostramos um atualizado. Consulte as instruções de instalação para ver uma explicação dos campos.

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: git@github.com:my-github-username/csp-config-management.git
    syncBranch: 1.0.0
    secretType: ssh
    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

Neste ponto, o cluster tem exatamente as mesmas configs do guia de início rápido para usar um repo somente leitura, porque a bifurcação tem o mesmo conteúdo. Siga os exercícios nesse guia de início rápido para ver os mesmos resultados.

Modificar uma configuração do repo

Quando você cria ou modifica um config do repo, o Anthos Config Management detecta a confirmação e aplica a nova configuração a objetos relevantes do Kubernetes.

Neste exemplo, você adiciona o usuário jane@foo-corp.com ao namespace-readers ClusterRoleBinding.

Abra um terminal e emita o comando a seguir para verificar alterações no namespace-readers ClusterRoleBinding:

kubectl get clusterrolebindings namespace-readers -o yaml --watch

Abra outro terminal e vá para o clone local do seu repo. Edite o arquivo cluster/namespace-reader-clusterrolebinding.yaml para adicionar jane@foo-corp.com ao campo subjects. Após a edição, o arquivo tem este conteúdo:

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: namespace-readers
subjects:
- kind: User
  name: cheryl@foo-corp.com
  apiGroup: rbac.authorization.k8s.io
- kind: User
  name: jane@foo-corp.com
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: namespace-reader
  apiGroup: rbac.authorization.k8s.io

Salve o arquivo. Crie uma confirmação.

git add cluster/namespace-reader-clusterrolebinding.yaml

git commit -m "Add Jane to namespace-reader"

O comando nomos vet é executado quando você tenta confirmar e impede que você confirme uma configuração com erros de sintaxe. Para fazer esse teste, adicione intencionalmente um erro de sintaxe ao arquivo (por exemplo, excluindo um caractere :) antes de tentar confirmar.

Envie a confirmação para sua bifurcação:

git push origin master

Volte para o terminal em que você está verificando o objeto namespace-reader. Em alguns segundos, a alteração será sincronizada com o cluster.

Também é fácil reverter uma alteração. Volte para o terminal em que você estava usando para o Git. Use o comando git log para encontrar o hash (neste exemplo, é a primeira entrada) e reverta-o. No comando a seguir, use o hash de confirmação em que você vê [HASH]. Como uma operação de reversão cria uma nova confirmação, o nomos vet verifica a configuração resultante novamente.

git revert [HASH]

git push origin master

Volte para o terminal em que você está verificando o objeto namespace-reader e observe que jane@foo-corp.com não está mais listado nos sujeitos do ClusterRole.

Pressione Control+C para parar de verificar o objeto namespace-reader.

Este exercício mostra que o Anthos Config Management mantém os objetos em sincronia com os configs em seu repo quando você confirma as alterações nele.

Como limpar

Depois de concluir os exercícios deste tópico, execute as ações a seguir para limpeza:

  • Exclua o cluster usado para teste.
  • Exclua o clone local da bifurcação.
  • Exclua a chave SSH privada local, se aplicável.
  • Exclua a bifurcação do repositório de exemplo. Isso exclui todas as chaves de implantação (em inglês) associadas apenas ao repositório.

A seguir