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. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  6. Make sure that you have the following role or roles on the project: GKE Hub Admin

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role colunn to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      Acessar o IAM
    2. Selecionar um projeto.
    3. Clique em CONCEDER ACESSO.
    4. No campo Novos principais, insira seu identificador de usuário. Normalmente, é o endereço de e-mail de uma Conta do Google.

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

    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 a 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. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    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 explorar as configurações que fizeram esses namespaces serem criados.

    É 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