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ê usará os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.
Antes de começar
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure 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
RootSync
eRepoSync
estão ativadas. spec.override.enableShellInRendering
é definido comotrue
para 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
nomos
de 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.yaml
e cole o código a seguir nele:# ./kustomization.yaml resources: - base patches: - path: ignore-deployment-mutation-patch.yaml target: kind: Deployment
Esse 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: ignore
a 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 base
No diretório
base
, crie outro arquivo chamadokustomization.yaml
e 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-manager
Esse 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.yaml
e 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: ignore
Esse arquivo é um patch que é aplicado ao gráfico base do Helm. Ele adiciona a anotação
client.lifecycle.config.k8s.io/mutation: ignore
a 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 hydrate
com as seguintes sinalizações:nomos hydrate \ --source-format=unstructured \ --output=OUTPUT_DIRECTORY
Nesse comando:
--source-format=unstructured
permite quenomos hydrate
funcione 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_DIRECTORY
permite definir um caminho para os configs renderizados. SubstituaOUTPUT_DIRECTORY
pelo local em que você quer que a saída seja salva.
Verifique a sintaxe e a validade das configurações executando
nomos vet
com as sinalizações a seguir:nomos vet \ --source-format=unstructured \ --keep-output=true \ --output=OUTPUT_DIRECTORY
Nesse comando:
--source-format=unstructured
permite quenomos vet
funcione em um repositório não estruturado.--keep-output=true
salva 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. Se você já instalou o Config Sync, prossiga para Verificar o status da sincronização.
No console do Google Cloud, ative a API GKE Hub.
- No console do Google Cloud, acesse a página Configuração na seção Recursos.
Clique em add Instalar o Config Sync.
Selecione Upgrades automáticos para ativar o Config Sync para fazer upgrade das versões automaticamente.
Em Opções de instalação, selecione Instalar o Config Sync em clusters individuais.
Na tabela Clusters disponíveis, selecione
cs-cluster
e clique em Instalar Config Sync. Na guia Configurações, você verá o status docs-cluster
como Ativado após alguns minutos.No painel Config Sync, clique em Implantar pacote.
Na tabela Selecionar clusters para implantação do pacote, selecione
cs-cluster
e clique em Continuar.Deixe a opção Pacote hospedado no Git selecionada e clique em Continuar.
No campo Package name, insira
sample-repository
.No campo URL do repositório, insira
https://github.com/GoogleCloudPlatform/anthos-config-management-samples
.No campo Caminho, digite
config-sync-quickstart/multirepo/root
.Não mude os valores padrão dos outros campos.
Clique em Implantar pacote.
Após alguns minutos, você verá a opção Sincronizado na coluna Status de sincronização da
cs-cluster
.
Verificar 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 status
Exemplo de saída:
*CLUSTER_NAME -------------------- <root> https:/github.com/GoogleCloudPlatform/anthos-config-management-samples.git/helm-component/manifests@init SYNCED fd17dd5a
Verifique se o componente Helm foi instalado:
kubectl get all -n cert-manager
Exemplo 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
Limpeza
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 BRANCH
Substitua
BRANCH
pela 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 BRANCH
Verifique se o namespace cert-manager não existe:
kubectl get namespace cert-namespace
Exemplo 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 console do Google Cloud, conclua as tarefas a seguir:
No console do Google Cloud, abra a página 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.
- Confira arquiteturas de referência, diagramas e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.