Neste tutorial, você adicionará configurações do Kustomize que fazem referência a gráficos do Helm ao seu repositório e, em seguida, usará o Config Sync para sincronizar seu cluster com seu repositório.
Quando você usa o Config Sync, as configurações do Kustomize e os gráficos Helm colocados no repositório Git são renderizados automaticamente. A renderização automática oferece os seguintes benefícios:
Você não precisa mais de um pipeline de hidratação externo. Sem a renderização automatizada, é preciso renderizar manualmente as configurações usando o Kustomize e o Helm na estação de trabalho ou configurar uma etapa para acionar o processo de hidratação nos sistemas de CI. Com a renderização automática, o Config Sync processa a execução.
Os custos de manutenção serão reduzidos. Sem a renderização automatizada, é preciso manter um repositório Git com as configurações originais do Kustomize e os gráficos Helm e outro repositório Git com a saída gerada pela hidratação externa. Em seguida, configure o Config Sync para sincronizar do repositório Git com a saída renderizada. Com a renderização automatizada, você só precisa manter um repositório com os configs originais.
Seu fluxo de trabalho de desenvolvimento foi simplificado. Sem a renderização automatizada, as alterações feitas nas configurações originais precisam ser revisadas duas vezes antes de serem mescladas. uma vez no repositório original e novamente no repositório renderizado. Com a renderização automatizada, os configs renderizados são gerados pelo Config Sync, e você só precisa revisar as alterações nos configs originais.
Objetivos
- Configure seu repositório com configurações do Kustomize que fazem referência a um gráfico Helm pronto para uso do cert-manager. O cert-manager é uma ferramenta para Kubernetes que ajuda a gerenciar seus certificados.
- Visualize e valide os configs que você criar.
- Use o Config Sync para renderizar automaticamente o gráfico e sincronizar o cluster com o repositório.
- Verifique se a instalação foi concluída.
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na sua projeção de uso, utilize a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Para mais informações, consulte Limpeza.
Antes de começar
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Crie ou garanta que você tenha acesso a um cluster que atenda aos
requisitos do Config Sync
e use as seguintes configurações do Config Sync:
- Usa um repositório não estruturado.
- As APIs
RootSynceRepoSyncestão ativadas. spec.override.enableShellInRenderingé definido comotruepara permitir que o Config Sync seja compatível com a extração de bases remotas de repositórios públicos no processo de renderização.
- Registre o cluster em uma frota.
- Instale a ferramenta
nomosde linha de comando . Se você já instalou a ferramentanomos, atualize-a para a versão 1.9.0 ou mais recente. - Instale o Helm.
Também é importante ter familiaridade com o Git, o Kustomize e o Helm.
Configurar seu repositório
As tarefas a seguir mostram como preparar um repositório Git com configs que combinam configurações do Kustomize com gráficos do Helm:
Crie um repositório Git ou verifique se você tem acesso a ele. Como o seu repositório usa Kustomize e Helm, ele deve ser um repositório não estruturado.
Na raiz do repositório Git, crie um arquivo chamado
kustomization.yamle cole o código a seguir nele:# ./kustomization.yaml resources: - base patches: - path: ignore-deployment-mutation-patch.yaml target: kind: DeploymentEsse arquivo é uma sobreposição do Kustomize que aponta para a base do Kustomize. Essa sobreposição inclui um patch para a base do gráfico Helm que adiciona a anotação
client.lifecycle.config.k8s.io/mutation: ignorea todos os objetos de implantação. A anotação faz com que o Config Sync ignore qualquer alteração conflitante desse objeto no cluster depois que ele tiver sido criado.No repositório Git, crie um diretório chamado
base:mkdir baseNo diretório
base, crie outro arquivo chamadokustomization.yamle cole o seguinte código nele:# ./base/kustomization.yaml helmCharts: - name: cert-manager repo: https://charts.jetstack.io version: v1.5.3 releaseName: my-cert-manager namespace: cert-managerEsse arquivo é a base do Kustomize, que renderiza o gráfico remoto do Helm.
Volte à raiz do repositório Git, crie um arquivo chamado
ignore-deployment-mutation-patch.yamle cole o código a seguir nele:# ./ignore-deployment-mutation-patch.yaml apiVersion: apps/v1 kind: Deployment metadata: name: any annotations: client.lifecycle.config.k8s.io/mutation: ignoreEsse arquivo é um patch que é aplicado ao gráfico base do Helm. Ele adiciona a anotação
client.lifecycle.config.k8s.io/mutation: ignorea todas as implantações no diretório base.Confirme as alterações no repositório:
git add . git commit -m 'Set up manifests.' git push
O repositório de amostras tem um exemplo de como esse repositório seria.
Visualizar e validar configurações renderizadas
Antes de o Config Sync renderizar os configs e sincronizá-los com o cluster, verifique se os configs estão corretos. Para isso, execute nomos hydrate para visualizar a configuração renderizada e execute nomos vet para confirmar que o formato está correto.
Execute o seguinte
nomos hydratecom as seguintes sinalizações:nomos hydrate \ --source-format=unstructured \ --output=OUTPUT_DIRECTORYNesse comando:
--source-format=unstructuredpermite quenomos hydratefuncione em um repositório não estruturado. Como você está usando configurações do Kustomize e gráficos do Helm, use um repositório não estruturado e adicione essa sinalização.--output=OUTPUT_DIRECTORYpermite definir um caminho para os configs renderizados. SubstituaOUTPUT_DIRECTORYpelo local em que você quer que a saída seja salva.
Verifique a sintaxe e a validade das configurações executando
nomos vetcom as sinalizações a seguir:nomos vet \ --source-format=unstructured \ --keep-output=true \ --output=OUTPUT_DIRECTORYNesse comando:
--source-format=unstructuredpermite quenomos vetfuncione em um repositório não estruturado.--keep-output=truesalva as configurações renderizadas.--output=OUTPUT_DIRECTORYé o caminho para as configurações renderizadas.
Configurar a sincronização do repositório do Git
Agora que você criou um repositório com as configurações que quer usar, configure a sincronização no cluster para o repositório.
Para configurar o objeto
RootSync, crie um arquivoroot-sync.yaml:# root-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: root-sync namespace: config-management-system spec: sourceFormat: unstructured git: repo: YOUR_GIT_REPOSITORY branch: main auth: none override: enableShellInRendering: trueSubstitua
YOUR_GIT_REPOSITORYpelo URL do seu repositório Git.Aplique o arquivo
root-sync.yamlao cluster:kubectl apply -f root-sync.yaml
Verifique a instalação
Depois de instalar e configurar o Config Sync, verifique se a instalação foi concluída com êxito.
Verifique se não há outros erros usando
nomos status:nomos statusExemplo de saída:
*CLUSTER_NAME -------------------- <root> https:/github.com/GoogleCloudPlatform/anthos-config-management-samples.git/helm-component/manifests@init SYNCED fd17dd5aVerifique se o componente Helm foi instalado:
kubectl get all -n cert-managerExemplo de saída:
NAME READY STATUS RESTARTS AGE pod/my-cert-manager-54f5ccf74-wfzs4 1/1 Running 0 10m pod/my-cert-manager-cainjector-574bc8678c-rh7mq 1/1 Running 0 10m pod/my-cert-manager-webhook-7454f4c77d-rkct8 1/1 Running 0 10m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/my-cert-manager ClusterIP 10.76.9.35 <none> 9402/TCP 10m service/my-cert-manager-webhook ClusterIP 10.76.11.205 <none> 443/TCP 10m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/my-cert-manager 1/1 1 1 10m deployment.apps/my-cert-manager-cainjector 1/1 1 1 10m deployment.apps/my-cert-manager-webhook 1/1 1 1 10m NAME DESIRED CURRENT READY AGE replicaset.apps/my-cert-manager-54f5ccf74 1 1 1 10m replicaset.apps/my-cert-manager-cainjector-574bc8678c 1 1 1 10m replicaset.apps/my-cert-manager-webhook-7454f4c77d 1 1 1 10m
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Excluir o projeto
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Excluir recursos individuais
Exclua os manifestos no repositório
Para evitar a exclusão acidental, o Config Sync não permite a remoção de todos os namespaces ou recursos com escopo de cluster em uma única confirmação. Siga estas instruções para desinstalar o componente de maneira prática e remover o namespace em confirmações separadas:
Remova o componente cert-manager do repositório:
git rm -rf manifests/cert-manager \ && git commit -m "uninstall cert-manager" \ && git push origin BRANCHSubstitua
BRANCHpela ramificação em que você criou o repositório.Exclua o namespace cert-manager:
git rm manifests/namespace-cert-manager.yaml \ && git commit -m "remove the cert-manager namespace" \ && git push origin BRANCHVerifique se o namespace cert-manager não existe:
kubectl get namespace cert-namespaceExemplo de saída:
Error from server (NotFound): namespaces "cert-namespace" not found
Excluir o cluster
Para excluir o cluster, conclua os seguintes comandos:
Console
Para excluir um cluster usando o Google Cloud console, conclua as tarefas a seguir:
No console do Google Cloud , acesse a página do GKE.
Ao lado do cluster que você quer excluir, clique em more_vert Ações e depois em delete Excluir.
Quando solicitado a confirmar, clique em Excluir novamente.
gcloud
Para excluir um cluster usando a Google Cloud CLI, execute este comando:
gcloud container clusters delete CLUSTER_NAME
Para mais informações, consulte a documentação gcloud container clusters delete.
A seguir
- Saiba mais sobre como trabalhar com repositórios não estruturados.