Synchroniser les graphiques Helm à partir d'Artifact Registry
Cette page explique comment synchroniser des graphiques Helm à partir d'Artifact Registry.
À partir de la version 1.13.0 d'Anthos Config Management, vous pouvez configurer Config Sync pour effectuer la synchronisation à partir de dépôts Helm. Vous pouvez stocker les graphiques Helm dans Artifact Registry, le dépôt Helm recommandé pour Google Cloud. Pour utiliser cette fonctionnalité, vous devez activer les API RootSync et RepoSync.
Cette page vous montre un moyen simple de créer un chart Helm et de le transférer vers un dépôt dans Artifact Registry. Il contient également un exemple de configuration permettant de synchroniser un graphique depuis votre dépôt Helm.
Avant de commencer
Pour suivre cette procédure, vous devez installer Helm 3.8.0 ou une version ultérieure. Dans les versions précédentes de Helm, la compatibilité avec les graphiques au format OCI est une fonctionnalité expérimentale.
Activez Workload Identity sur votre cluster.
Créer un dépôt Artifact Registry
Dans cette section, vous allez créer un dépôt Artifact Registry. Pour en savoir plus sur la création de dépôts Artifact Registry, consultez la section Créer des dépôts.
Créez des variables d'environnement :
export PROJECT_ID=PROJECT_ID export AR_REPO_NAME=AR_REPO_NAME export AR_REGION=AR_REGION export GSA_NAME=GSA_NAME
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projet.AR_REPO_NAME
: nom que vous souhaitez attribuer à votre dépôt Artifact Registry.AR_REGION
: emplacement géographique spécifique où vous pouvez héberger votre dépôt Artifact Registry, par exemple:us-central1
.GSA_NAME
: nom du compte de service Google personnalisé que vous souhaitez utiliser pour vous connecter à Artifact Registry.
Activez l'API Artifact Registry :
gcloud services enable artifactregistry.googleapis.com \ --project=${PROJECT_ID}
Créer un dépôt Artifact Registry :
gcloud artifacts repositories create ${AR_REPO_NAME} \ --repository-format=docker \ --location=${AR_REGION} \ --description="Config Sync Helm repo" \ --project=${PROJECT_ID}
Attribuez le rôle IAM de lecteur Artifact Registry (
roles/artifactregistry.reader
) au compte de service Google:gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member=serviceAccount:${GSA_NAME}@${PROJECT_ID}.iam.gserviceaccount.com \ --role=roles/artifactregistry.reader
Transférer un graphique Helm vers le dépôt Artifact Registry
Dans cette section, vous allez télécharger un graphique Helm public et le transférer vers Artifact Registry.
Récupérez le package
mysql-9.3.1.tgz
à partir du dépôt public Helm et téléchargez-le localement:helm pull mysql --repo https://charts.bitnami.com/bitnami --version 9.3.1
S'authentifier avec un jeton d'accès:
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}
Dans cette commande,
oauth2accesstoken
est le nom d'utilisateur à utiliser lors de l'authentification avec un jeton d'accès etgcloud auth print-access-token
est la commande gcloud permettant d'obtenir le jeton d'accès. Votre jeton d'accès correspond au mot de passe d'authentification. S'authentifier avec un jeton d'accès est la méthode d'authentification la plus sûreTransférez le graphique Helm dans Artifact Registry:
helm push mysql-9.3.1.tgz oci://${AR_REGION}-docker.pkg.dev/${PROJECT_ID}/${AR_REPO_NAME}
Configurer Config Sync pour effectuer la synchronisation à partir de votre chart Helm
Dans cette section, vous allez créer un objet RootSync et configurer Config Sync pour effectuer une synchronisation à partir du graphique Helm.
Créez un objet RootSync avec un nom unique :
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}.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
Remplacez
ROOT_SYNC_NAME
par le nom de votre objet RootSync. Le nom doit être unique dans le cluster et ne pas dépasser 26 caractères.Dans cet exemple, le chart Helm est déployé dans l'espace de noms
test
, car ses modèles contiennentnamespace: {{ .Release.Namespace }}
.À partir d'Anthos Config Management version 1.13.1, vous pouvez remplacer les valeurs par défaut à l'aide de
helm.values
. Pour en savoir plus sur les champs facultatifs, consultez Configuration du dépôt Helm.Créez une liaison de stratégie IAM entre le compte de service Google et le compte de service 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
: compte de service Kubernetes pour le rapprochement. Pour les dépôts racine, si le nom de la racine racine estroot-sync
,KSA_NAME
estroot-reconciler
. Sinon, il est défini surroot-reconciler-ROOT_SYNC_NAME
.
Appliquez l'objet RootSync :
kubectl apply -f ROOT_SYNC_NAME.yaml
Vérifiez que Config Sync est synchronisé à partir de l'image :
nomos status --contexts=$(kubectl config current-context)
Un résultat semblable aux lignes suivantes doit s'afficher :
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
Vous avez maintenant synchronisé le chart Helm avec votre cluster.
Étapes suivantes
- Découvrez comment installer Config Sync.