Sincronizar gráficos do Helm no Artifact Registry
Esta página mostra como sincronizar gráficos do Helm do Artifact Registry ao criar e enviar um gráfico do Helm para um repositório no Artifact Registry. Ela também contém uma configuração de amostra para sincronizar um gráfico do seu repositório do Helm.
A partir da versão 1.13.0 do Anthos Config Management, é possível configurar
o Config Sync para fazer a sincronização de repositórios do Helm.
É possível armazenar gráficos do Helm no Artifact Registry, que é o
repositório Helm recomendado para o Google Cloud. Para usar esse recurso, você precisa
ativar as
APIs RootSync e RepoSync.
O Config Sync renderiza gráficos do Helm usando helm template
e, portanto, não oferece suporte ao gerenciamento completo do ciclo de vida do Helm.
Antes de começar
- Instale o Helm 3.8.0 ou mais recente. Nas versões anteriores do Helm, o suporte a gráficos no formato OCI é um recurso experimental.
- Ative a Identidade da carga de trabalho no cluster.
Crie um repositório do Artifact Registry
Nesta seção, você criará um repositório do Artifact Registry. Para saber mais sobre como criar repositórios do Artifact Registry, consulte Criar repositórios.
Crie variáveis de ambiente:
export PROJECT_ID=PROJECT_ID export AR_REPO_NAME=AR_REPO_NAME export AR_REGION=AR_REGION export GSA_NAME=GSA_NAME
Substitua:
PROJECT_ID
: ID do projetoAR_REPO_NAME
: o nome que você quer dar ao repositório do Artifact Registry.AR_REGION
: a localização geográfica específica em que você pode hospedar seu repositório do Artifact Registry, por exemplo:us-central1
.GSA_NAME
: o nome da conta de serviço do Google personalizada que você quer usar para se conectar ao Artifact Registry.
Ative a API Artifact Registry.
gcloud services enable artifactregistry.googleapis.com \ --project=${PROJECT_ID}
Crie um repositório do Artifact Registry:
gcloud artifacts repositories create ${AR_REPO_NAME} \ --repository-format=docker \ --location=${AR_REGION} \ --description="Config Sync Helm repo" \ --project=${PROJECT_ID}
Conceda o papel do IAM Leitor do Artifact Registry (
roles/artifactregistry.reader
) à conta de serviço do Google:gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member=serviceAccount:${GSA_NAME}@${PROJECT_ID}.iam.gserviceaccount.com \ --role=roles/artifactregistry.reader
Enviar um gráfico do Helm para o repositório do Artifact Registry
Nesta seção, você faz o download de um gráfico público do Helm e o envia ao Artifact Registry.
Recupere o pacote
mysql-9.3.1.tgz
do repositório público do Helm e faça o download localmente:helm pull mysql --repo https://charts.bitnami.com/bitnami --version 9.3.1
Fazer a autenticação com um token de acesso
Linux / macOS
gcloud auth print-access-token | helm registry login -u oauth2accesstoken \ --password-stdin https://${AR_REGION}-docker.pkg.dev
Windows
gcloud auth print-access-token ya29.8QEQIfY_... helm registry login -u oauth2accesstoken -p "ya29.8QEQIfY_..." \ https://${AR_REGION}-docker.pkg.dev/${PROJECT_ID}/${AR_REPO_NAME}
Nesse comando,
oauth2accesstoken
é o nome de usuário a ser usado na autenticação com um token de acesso egcloud auth print-access-token
é o comando para conseguir o token de acesso. Seu token de acesso é a senha para autenticação. A autenticação com um token de acesso é o método de autenticação mais seguro.Envie o gráfico do Helm para o Artifact Registry:
helm push mysql-9.3.1.tgz oci://${AR_REGION}-docker.pkg.dev/${PROJECT_ID}/${AR_REPO_NAME}
Configurar o Config Sync para sincronização no gráfico do Helm
Nesta seção, você criará um objeto RootSync e configurará o Config Sync para fazer a sincronização com o gráfico do Helm.
Crie um objeto RootSync com um nome exclusivo:
cat <<EOF>> ROOT_SYNC_NAME.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: ROOT_SYNC_NAME namespace: config-management-system spec: sourceFormat: unstructured sourceType: helm helm: repo: oci://${AR_REGION}-docker.pkg.dev/${PROJECT_ID}/${AR_REPO_NAME} chart: mysql version: 9.3.1 releaseName: my-mysql namespace: test auth: gcpserviceaccount gcpServiceAccountEmail: ${GSA_NAME}@${PROJECT_ID}.iam.gserviceaccount.com # From Anthos Config Management version 1.13.1 and later, you can use # the optional field spec.helm.values to override default values. # You can use the same format as the default values file to override # default values. values: image: pullPolicy: Always primary: resources: limits: cpu: 250m memory: 256Mi requests: cpu: 250m memory: 256Mi EOF
Substitua
ROOT_SYNC_NAME
pelo nome do objeto RootSync. O nome precisa ser exclusivo no cluster e ter no máximo 26 caracteres. Se você instalou o Config Sync usando o console do Google Cloud ou a Google Cloud CLI, escolha um nome diferente deroot-sync
.Neste exemplo, o gráfico do Helm é implantado no namespace
test
porque os recursos contêmnamespace: {{ .Release.Namespace }}
nos modelos.A partir da versão 1.13.1 do Anthos Config Management, é possível usar
helm.values
para substituir os valores padrão. Para saber mais sobre os campos opcionais, consulte Configuração para o repositório do Helm.Crie uma vinculação de política do IAM entre a conta de serviço do Google e a conta de serviço do Kubernetes:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:${PROJECT_ID}.svc.id.goog[config-management-system/KSA_NAME]" \ ${GSA_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
KSA_NAME
: a conta de serviço do Kubernetes do reconciliador. Para repositórios raiz, se o nome RootSync forroot-sync
eKSA_NAME
forroot-reconciler
. Caso contrário, serároot-reconciler-ROOT_SYNC_NAME
.
Aplique o objeto RootSync:
kubectl apply -f ROOT_SYNC_NAME.yaml
Verifique se o Config Sync está sincronizando com a imagem:
nomos status --contexts=$(kubectl config current-context)
A saída é semelhante a esta:
Connecting to clusters... *cluster-name -------------------- <root>:root-sync oci://AR_REGION-docker.pkg.dev/PROJECT_ID/AR_REPO_NAME/mysql:9.3.1 SYNCED mysql:9.3.1 Managed resources: NAMESPACE NAME STATUS SOURCEHASH namespace/test Current mysql:9 test configmap/my-mysql Current mysql:9 test secret/my-mysql Current mysql:9 test service/my-mysql Current mysql:9 test service/my-mysql-headless Current mysql:9 test serviceaccount/my-mysql Current mysql:9 test statefulset.apps/my-mysql Current mysql:9
Você sincronizou o gráfico do Helm com o cluster.
A seguir
- Saiba mais sobre como instalar o Config Sync.