Guia de início rápido: sincronizar configs de um repositório

Neste tutorial, você cria um cluster da edição Enterprise do Google Kubernetes Engine (GKE) e usa o Config Sync para sincronizar com as configurações no repositório de amostras de vários repositórios.

Imagine que sua equipe de conformidade seja responsável por garantir que todos os membros da organização sigam as regras internas. Para aplicar essas regras, a equipe de conformidade criou configurações que foram adicionadas ao repositório de amostras. Cada cluster na organização precisa se sincronizar com o repositório, e você é responsável por criar e sincronizar clusters.

Antes de começar

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

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

  4. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  5. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  6. Verifique se você tem os seguintes papéis no projeto: GKE Hub Admin

    Verificar os papéis

    1. No console do Google Cloud, abra a página IAM.

      Acessar IAM
    2. Selecionar um projeto.
    3. Na coluna Principal, encontre a linha que contém seu endereço de e-mail.

      Caso seu endereço de e-mail não esteja nessa coluna, isso significa que você não tem papéis.

    4. Na coluna Papel da linha com seu endereço de e-mail, verifique se a lista de papéis inclui os papéis necessários.

    Conceder os papéis

    1. No console do Google Cloud, abra a página IAM.

      Acesse o IAM
    2. Selecionar um projeto.
    3. Clique em CONCEDER ACESSO.
    4. No campo Novos participantes, digite seu endereço de e-mail.
    5. Na lista Selecionar um papel, escolha um.
    6. Para conceder outros papéis, clique em Adicionar outro papel e adicione cada papel adicional.
    7. Clique em Save.

Crie um cluster

Nesta seção, você criará um cluster que poderá ser usado neste tutorial. Em um cenário real, é provável que você gerencie vários clusters, mas para simplificar este tutorial, você vai criar e gerenciar somente um cluster.

Para criar um cluster, siga estas etapas:

  1. No console do Google Cloud, acesse a página Kubernetes Engine.

    Acessar o Google Kubernetes Engine

  2. Se você estiver usando o GKE pela primeira vez, clique em Ativar para ativar a API Kubernetes Engine.

  3. Clique em Criar.

  4. Na seção Autopilot, selecione Configurar.

  5. Na seção Noções básicas do cluster, adicione cs-cluster ao campo Nome e deixe os outros campos com os padrões recomendados.

  6. Clique em Criar. Você verá a página Clusters do Kubernetes. A criação do cluster leva alguns minutos. Quando uma marca de seleção verde aparecer na coluna Status ao lado do cluster, significa que ele está pronto.

Configurar seu cluster

Agora que você criou um cluster, é possível configurar o Config Sync para sincronizar com as configurações no diretório config-sync-quickstart do repositório de amostras.

Para configurar o Config Sync no Console do Google Cloud, siga estas etapas:

  1. No console do Google Cloud, ative a API GKE Hub.

    Acessar a API GKE Hub

  2. No console do Google Cloud, acesse a página Configuração na seção Recursos.

    Acessar "Configuração"

  3. Clique em Instalar o Config Sync.

  4. Selecione Upgrades automáticos para ativar o Config Sync para fazer upgrade das versões automaticamente.

  5. Em Opções de instalação, selecione Instalar o Config Sync em clusters individuais.

  6. Na tabela Clusters disponíveis, selecione cs-cluster e clique em Instalar Config Sync. Na guia Configurações, você verá o status do cs-cluster como Ativado após alguns minutos.

  7. No painel Config Sync, clique em Implantar pacote.

  8. Na tabela Selecionar clusters para implantação do pacote, selecione cs-cluster e clique em Continuar.

  9. Deixe a opção Pacote hospedado no Git selecionada e clique em Continuar.

  10. No campo Package name, insira sample-repository.

  11. No campo URL do repositório, insira https://github.com/GoogleCloudPlatform/anthos-config-management-samples.

  12. No campo Caminho, digite config-sync-quickstart/multirepo/root.

  13. Não mude os valores padrão dos outros campos.

  14. Clique em Implantar pacote.

    Após alguns minutos, você verá a opção Sincronizado na coluna Status de sincronização da cs-cluster.

Agora que o Config Sync está sincronizado com um repositório, ele reconciliará continuamente o estado dos clusters com as configurações no repositório.

Conheça a instalação do Config Sync

Nas seções a seguir, use o Cloud Shell para explorar o repositório do qual cs-cluster está sendo sincronizado e confirmar se as configurações no repositório estão sendo implantadas.

Abrir o Cloud Shell

  1. No Console do Google Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  2. Para usar os comandos das seções a seguir, configure o acesso à linha de comando kubectl:

    gcloud container clusters get-credentials cs-cluster \
        --zone ZONE \
        --project PROJECT_ID
    

    Substitua:

    • ZONE: a zona em que você criou o cluster
    • PROJECT_ID: ID do projeto;

    A saída é esta:

    Fetching cluster endpoint and auth data.
    kubeconfig entry generated for cs-cluster.
    

    Se for solicitada sua autorização, clique em Autorizar.

Examinar seu cluster e repositório

O diretório config-sync-quickstart inclui as configurações ClusterRole, CustomResourceDefinition, Rolebinding, Namespace e RepoSync. Ele também inclui configurações para o operador Prometheus para monitoramento. Essas configurações são aplicadas assim que o Config Sync é configurado para ler no repositório.

Todos os objetos gerenciados pelo Config Sync têm o rótulo app.kubernetes.io/managed-by definido como configmanagement.gke.io. É possível usar esse rótulo para visualizar objetos gerenciados.

Para listar os namespaces gerenciados pelo Config Sync, execute o seguinte comando:

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

O resultado será assim:

NAME         STATUS   AGE
gamestore    Active   58s
monitoring   Active   58s

Navegue até a pasta /config-sync-quickstart/multirepo/ do repositório no GitHub para analisar os configurações que causaram a criação desses namespaces.

É possível examinar outros objetos, como ClusterRole, Reposyncs, CRDs e Rolebindings da mesma maneira.

Verificar o status da sincronização

Com o Config Sync, é possível usar a ferramenta de linha de comando nomos. Essa ferramenta oferece outras funcionalidades para o Config Sync.

Nesta seção, use o comando nomos status para verificar se o Config Sync sincronizou todas as configurações com o cluster:

nomos status

O resultado será assim:

*gke_PROJECT_ID_ZONE_cs-cluster
  --------------------
  <root>:root-sync                         https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-sync-quickstart/multirepo/root@main
  SYNCED @ 2023-02-03 16:58:42 +0000 UTC   1fbab5c90af9029b26451fec92e9900d8db23aee
  Managed resources:
     NAMESPACE    NAME                                                                                      STATUS    SOURCEHASH
                  clusterrole.rbac.authorization.k8s.io/namespace-reader                                    Current   1fbab5c
                  clusterrole.rbac.authorization.k8s.io/prometheus-acm                                      Current   1fbab5c
                  clusterrole.rbac.authorization.k8s.io/prometheus-operator                                 Current   1fbab5c
                  clusterrole.rbac.authorization.k8s.io/webstore-admin                                      Current   1fbab5c
                  clusterrolebinding.rbac.authorization.k8s.io/prometheus-acm                               Current   1fbab5c
                  clusterrolebinding.rbac.authorization.k8s.io/prometheus-operator                          Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/alertmanagerconfigs.monitoring.coreos.com   Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/alertmanagers.monitoring.coreos.com         Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/anvils.acme.com                             Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/podmonitors.monitoring.coreos.com           Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/probes.monitoring.coreos.com                Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/prometheuses.monitoring.coreos.com          Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/prometheusrules.monitoring.coreos.com       Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/servicemonitors.monitoring.coreos.com       Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/thanosrulers.monitoring.coreos.com          Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/webstores.marketplace.com                   Current   1fbab5c
                  namespace/gamestore                                                                       Current   1fbab5c
                  namespace/monitoring                                                                      Current   1fbab5c
     gamestore    reposync.configsync.gke.io/repo-sync                                                      Current   1fbab5c
     gamestore    rolebinding.rbac.authorization.k8s.io/gamestore-admin                                     Current   1fbab5c
     gamestore    rolebinding.rbac.authorization.k8s.io/gamestore-webstore-admin                            Current   1fbab5c
     monitoring   deployment.apps/prometheus-operator                                                       Current   1fbab5c
     monitoring   prometheus.monitoring.coreos.com/acm                                                      Current   1fbab5c
     monitoring   service/prometheus-acm                                                                    Current   1fbab5c
     monitoring   service/prometheus-operator                                                               Current   1fbab5c
     monitoring   serviceaccount/prometheus-acm                                                             Current   1fbab5c
     monitoring   serviceaccount/prometheus-operator                                                        Current   1fbab5c
     monitoring   servicemonitor.monitoring.coreos.com/acm-service                                          Current   1fbab5c
  --------------------
  gamestore:repo-sync                      https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-sync-quickstart/multirepo/namespaces/gamestore@main
  SYNCED @ 2023-02-03 16:58:51 +0000 UTC   1fbab5c90af9029b26451fec92e9900d8db23aee
  Managed resources:
     NAMESPACE   NAME                                 STATUS    SOURCEHASH
     gamestore   configmap/store-inventory            Current   1fbab5c
     gamestore   webstore.marketplace.com/gameplace   Current   1fbab5c

Nessa saída, é possível ver que cs-cluster está sendo sincronizado em dois repositórios. Além disso, como todos os recursos têm o status Current, o estado do recurso corresponde ao estado pretendido.

Limpar

  1. Acesse o menu do GKE no console do Google Cloud.

    Acessar o GKE

  2. Ao lado de cs-cluster, clique em Ações e depois em Excluir.

  3. Quando solicitado a confirmar, clique em Excluir novamente.

A seguir