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