Neste tutorial, adiciona configurações do Kustomize que fazem referência a gráficos do Helm ao seu repositório e, em seguida, usa o Config Sync para sincronizar o cluster com o seu repositório.
Quando usa a sincronização de configuração, as configurações do Kustomize e os gráficos do Helm que coloca no seu repositório Git são renderizados automaticamente. A renderização automática oferece-lhe as seguintes vantagens:
Já não precisa de um pipeline de hidratação externo. Sem a renderização automática, tem de renderizar manualmente as configurações com o Kustomize e o Helm na sua estação de trabalho ou configurar um passo para acionar o processo de hidratação nos seus sistemas de CI. Com a renderização automática, o Config Sync processa a execução.
Os seus custos de manutenção são reduzidos. Sem a renderização automatizada, tem de manter um repositório Git com as configurações originais do Kustomize e os gráficos Helm, e outro repositório Git com o resultado gerado pela hidratação externa. Em seguida, tem de configurar o Config Sync para sincronizar a partir do repositório Git com o resultado renderizado. Com a renderização automatizada, só tem de manter um repositório com as configurações originais.
O seu fluxo de trabalho de desenvolvimento é simplificado. Sem a renderização automática, as alterações feitas às configurações originais têm de ser revistas duas vezes antes de serem unidas: uma vez no repositório original e outra vez no repositório renderizado. Com a renderização automatizada, as configurações renderizadas são geradas pelo Config Sync, e só tem de rever as alterações às configurações originais.
Objetivos
- Configure o seu repositório com configurações do Kustomize que referenciam um gráfico Helm disponível para o cert-manager. O cert-manager é uma ferramenta para o Kubernetes que ajuda a gerir os seus certificados.
- Pré-visualize e valide as configurações que criar.
- Use a sincronização de configuração para renderizar automaticamente o seu gráfico e sincronizar o seu cluster com o repositório.
- Verifique se a instalação foi bem-sucedida.
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custos com base na sua utilização projetada,
use a calculadora de preços.
Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.
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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Crie ou certifique-se de que tem acesso a um cluster que cumpre os
requisitos do Config Sync
e usa as seguintes definições do Config Sync:
- Usa um repositório não estruturado.
- As APIs
RootSync
eRepoSync
estão ativadas. spec.override.enableShellInRendering
está definido comotrue
para permitir que o Config Sync suporte a obtenção de bases remotas de repositórios públicos no processo de renderização.
- Registe o seu cluster numa frota.
- Instale a
nomos
ferramenta de linha de comandos. Se já instalou a ferramentanomos
, certifique-se de que a atualiza para a versão 1.9.0 ou posterior. - Instale o Helm.
Também é útil ter alguma familiaridade com o Git, o Kustomize e o Helm.
Configure o seu repositório
As tarefas seguintes mostram como preparar um repositório Git com configurações que combinam configurações do Kustomize com gráficos do Helm:
Crie ou certifique-se de que tem acesso a um repositório Git. Uma vez que o seu repositório usa o Kustomize e o Helm, deve ser um repositório não estruturado.
Na raiz do seu repositório Git, crie um ficheiro com o nome
kustomization.yaml
e cole o seguinte código no mesmo:# ./kustomization.yaml resources: - base patches: - path: ignore-deployment-mutation-patch.yaml target: kind: Deployment
Este ficheiro é uma sobreposição do Kustomize que aponta para a base do Kustomize. Esta sobreposição inclui uma correção para a base do gráfico Helm que adiciona a anotação
client.lifecycle.config.k8s.io/mutation: ignore
a todos os objetos de implementação. A anotação faz com que o Config Sync ignore quaisquer alterações em conflito a este objeto no cluster depois de o ter criado.No seu repositório Git, crie um diretório denominado
base
:mkdir base
No diretório
base
, crie outro ficheiro denominadokustomization.yaml
e cole o seguinte código no mesmo:# ./base/kustomization.yaml helmCharts: - name: cert-manager repo: https://charts.jetstack.io version: v1.5.3 releaseName: my-cert-manager namespace: cert-manager
Este ficheiro é a base do Kustomize, que renderiza o gráfico Helm remoto.
Navegue novamente para a raiz do seu repositório Git, crie um ficheiro com o nome
ignore-deployment-mutation-patch.yaml
e cole o seguinte código no mesmo:# ./ignore-deployment-mutation-patch.yaml apiVersion: apps/v1 kind: Deployment metadata: name: any annotations: client.lifecycle.config.k8s.io/mutation: ignore
Este ficheiro é um patch que é aplicado ao gráfico Helm base. Adiciona a anotação
client.lifecycle.config.k8s.io/mutation: ignore
a todas as implementações no diretório base.Confirme as alterações no seu repositório:
git add . git commit -m 'Set up manifests.' git push
O repositório de exemplos tem um exemplo de como seria um repositório deste tipo.
Pré-visualize e valide as configurações renderizadas
Antes de o Config Sync renderizar as configurações e sincronizá-las com o cluster, certifique-se de que as configurações estão corretas executando nomos hydrate
para pré-visualizar a configuração renderizada e executando nomos vet
para validar se o formato está correto.
Execute o seguinte comando
nomos hydrate
com as seguintes flags:nomos hydrate \ --source-format=unstructured \ --output=OUTPUT_DIRECTORY
Neste comando:
--source-format=unstructured
permite quenomos hydrate
funcione num repositório não estruturado. Uma vez que está a usar configurações do Kustomize e gráficos do Helm, tem de usar um repositório não estruturado e adicionar este sinalizador.--output=OUTPUT_DIRECTORY
permite-lhe definir um caminho para as configurações renderizadas. SubstituaOUTPUT_DIRECTORY
pela localização onde quer guardar o resultado.
Verifique a sintaxe e a validade das suas configurações executando
nomos vet
com os seguintes flags:nomos vet \ --source-format=unstructured \ --keep-output=true \ --output=OUTPUT_DIRECTORY
Neste comando:
--source-format=unstructured
permite quenomos vet
funcione num repositório não estruturado.--keep-output=true
guarda as configurações renderizadas.--output=OUTPUT_DIRECTORY
é o caminho para as configurações renderizadas.
Configure a sincronização a partir do repositório Git
Agora que criou um repositório com as configurações que quer usar, pode configurar a sincronização do cluster com o repositório.
Para configurar o objeto
RootSync
, crie um ficheiroroot-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: true
Substitua
YOUR_GIT_REPOSITORY
pelo URL do seu repositório Git.Aplique o ficheiro
root-sync.yaml
ao cluster:kubectl apply -f root-sync.yaml
Valide a instalação
Depois de instalar e configurar o Config Sync, pode verificar se a instalação foi concluída com êxito.
Verifique se existem outros erros através de
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 está instalado com êxito:
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
Limpar
Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.
Elimine 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.
Elimine recursos individuais
Elimine os manifestos no seu repositório
Para ajudar a evitar a eliminação acidental, o Config Sync não permite remover todos os espaços de nomes nem recursos com âmbito de cluster num único commit. Siga estas instruções para desinstalar corretamente o componente e remover o espaço de nomes em commits separados:
Remova o componente cert-manager do seu repositório:
git rm -rf manifests/cert-manager \ && git commit -m "uninstall cert-manager" \ && git push origin BRANCH
Substitua
BRANCH
pelo ramo no qual criou o seu repositório.Elimine o espaço de nomes do cert-manager:
git rm manifests/namespace-cert-manager.yaml \ && git commit -m "remove the cert-manager namespace" \ && git push origin BRANCH
Verifique se o espaço de nomes cert-manager não existe:
kubectl get namespace cert-namespace
Exemplo de saída:
Error from server (NotFound): namespaces "cert-namespace" not found
Elimine o cluster
Para eliminar o cluster, conclua os seguintes comandos:
Consola
Para eliminar um cluster através da consola Google Cloud , conclua as seguintes tarefas:
Na Google Cloud consola, aceda à página do GKE.
Junto ao cluster que quer eliminar, clique em more_vert Ações e, de seguida, em delete Eliminar.
Quando lhe for pedido que confirme, clique novamente em Eliminar.
gcloud
Para eliminar um cluster através da CLI Google Cloud, execute o seguinte comando:
gcloud container clusters delete CLUSTER_NAME
Para mais informações, consulte a
gcloud container clusters delete
documentação.
O que se segue?
- Saiba mais sobre como trabalhar com repositórios não estruturados.