Appliquer la configuration au cluster
Pour installer Apigee hybrid sur votre cluster, procédez comme suit :
- Vérifiez que vous êtes bien dans le répertoire hybrid-base-directory/hybrid-files.cd $HYBRID_FILES 
- Vérifiez que kubectlest défini sur le bon contexte à l'aide de la commande suivante. Le contexte actuel doit être défini sur le cluster au sein duquel vous déployez Apigee hybrid.kubectl config current-context Le résultat doit inclure le nom du cluster dans lequel vous déployez Apigee hybrid. Par exemple, sur GKE, le nom du contexte se présente généralement au format gke_project-id_cluster-location_cluster-name, comme suit :gke_my-project_us-central1_my-cluster Si le nom du cluster ne correspond pas dans le contexte, la commande suivante récupère les identifiants gclouddu cluster et définit le contextekubectl:Clusters régionauxgcloud container clusters get-credentials $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID Cluster zonalgcloud container clusters get-credentials $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID 
- Pour les plates-formes Anthos sur bare metal, AWS sur GKE, EKS et GKE On-prem uniquement, vérifiez que la variable KUBECONFIGest définie à l'aide de la commande suivante :echo ${KUBECONFIG}
- Effectuez une simulation d'initialisation. L'exécution d'une simulation vous permet de rechercher les erreurs éventuelles avant que des modifications ne soient apportées au cluster. Exécutez la commande initavec l'option--dry-runcomme suit :${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml --dry-run=client
- Si aucune erreur ne s'affiche, exécutez la commande initcomme suit :${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yamlLa commande initinstalle les services de déploiement Apigee, le contrôleur de déploiement Apigee ainsi que le webhook d'admission Apigee.
- Pour vérifier l'état du déploiement, vous pouvez exécuter les commandes suivantes :${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yamlkubectl get pods -n apigee-system kubectl get pods -n apigee Lorsque les pods sont prêts, passez à l'étape suivante. 
- Effectuez une simulation d'intallation. Exécutez la commande applyavec l'option--dry-run.${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml --dry-run=client
- Si aucune erreur ne s'affiche, vous pouvez appliquer les composants d'exécution spécifiques à Apigee au cluster à l'aide de la commande suivante :${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml
- Pour vérifier l'état du déploiement, exécutez la commande suivante :
      ${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yamlRépétez cette étape jusqu'à ce que tous les pods soient prêts. Le démarrage des pods peut prendre plusieurs minutes. 
GKE avec Workload Identity
  Si vous utilisez Workload Identity sur GKE, suivez ces instructions pour associer les comptes de service Kubernetes créés par apigeectl aux comptes de service Google que vous avez créés à l'étape 4 : Créer des comptes de service et des identifiants.
Ces procédures utilisent les variables d'environnement suivantes. Définissez ces valeurs dans votre interface système ou remplacez-les dans les exemples de code par les valeurs réelles :
- APIGEECTL_HOME: répertoire dans lequel vous avez installé- apigeectl.
- CLUSTER_LOCATION: région ou zone de votre cluster (par exemple,- us-west1).
- CLUSTER_LOCATION: nom de votre cluster.
- ENV_NAME: nom de l'environnement Apigee.
- NAMESPACE: votre espace de noms Apigee.- apigeepar défaut.
- HYBRID_FILES: répertoire des fichiers hybrides (par exemple,- hybrid-base-directory/hybrid-files).
- ORG_NAME: nom de votre organisation Apigee.
- PROJECT_ID: ID de votre projet Google Cloud.
Vérifiez les variables d'environnement :
echo $APIGEECTL_HOMEecho $CLUSTER_LOCATIONecho $ENV_NAMEecho $HYBRID_FILESecho $NAMESPACEecho $ORG_NAMEecho $PROJECT_ID
Initialisez l'une des variables dont vous avez besoin :
export APIGEECTL_HOME=hybrid-base-directory/apigeectlexport CLUSTER_LOCATION=my-cluster-locationexport ENV_NAME=my-environment-nameexport HYBRID_FILES=hybrid-base-directory/hybrid-filesexport NAMESPACE=apigeeexport ORG_NAME=$PROJECT_IDexport PROJECT_ID=my-project-id
- Facultatif : Supprimez les fichiers de clé du compte de service.
    Lorsque vous exécutez Apigee hybrid sur GKE, il est recommandé de créer et de télécharger des clés privées (fichiers .json) pour chacun des comptes de service. Si vous utilisez Workload Identity, vous n'avez pas besoin de télécharger les clés privées des comptes de service et de les ajouter aux clusters GKE.Vous pouvez supprimer les fichiers de clé à l'aide de la commande suivante : rm $HYBRID_FILES/service-accounts/*.json 
- Vérifiez la configuration gcloudactuelle de votre ID de projet Google Cloud à l'aide de la commande suivante :gcloud config get project 
- Créez le compte de service Kubernetes apigee-cassandra-restore.Lorsque vous avez appliqué votre configuration en exécutant apigeectl apply, la commande a créé la plupart des comptes de service Kubernetes nécessaires pour Workload Identity.Pour créer le compte de service Kubernetes apigee-cassandra-restore, exécutezapigeectl applyavec l'option--restore:$APIGEECTL_HOME/apigeectl apply -f $HYBRID_FILES/overrides/overrides.yaml --restore 
- Vérifiez que Workload Identity est activé dans votre cluster GKE. Lorsque vous avez créé le cluster à l'étape 1 : Créer un cluster, l'étape 6 consistait à activer Workload Identity. Vous pouvez vérifier si Workload Identity est activé en exécutant la commande suivante :
Clusters régionauxgcloud container clusters describe $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig' Cluster zonalgcloud container clusters describe $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig' Si Workload Identity est activé dans le cluster, la sortie doit ressembler à ce qui suit : --- workloadPool: PROJECT_ID.svc.id.goog Si nulls'affiche dans vos résultats, exécutez la commande suivante pour activer Workload Identity dans votre cluster :Clusters régionauxgcloud container clusters update $CLUSTER_NAME \ --workload-pool=$PROJECT_ID.svc.id.goog \ --project $PROJECT_ID \ --region $CLUSTER_LOCATION Cluster zonalgcloud container clusters update $CLUSTER_NAME \ --workload-pool=$PROJECT_ID.svc.id.goog \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID 
- Vérifiez que Workload Identity est activé sur vos pools de nœuds à l'aide des commandes suivantes :Clusters régionauxgcloud container node-pools describe apigee-data \ --cluster $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:" gcloud container node-pools describe apigee-runtime \ --cluster $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:" Cluster zonalgcloud container node-pools describe apigee-data \ --cluster $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:" gcloud container node-pools describe apigee-runtime \ --cluster $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:" Le résultat doit se présenter sous la forme suivante : --- diskSizeGb: 100 diskType: pd-standard ... workloadMetadataConfig: mode: GKE_METADATASi la sortie ne contient pas de ligne pour workloadMetadataConfig:, activez Workload Identity pour chaque pool de nœuds à l'aide des commandes suivantes. Cette opération peut prendre jusqu'à 30 minutes :Clusters régionauxgcloud container node-pools update NODE_POOL_NAME \ --cluster=$CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --workload-metadata=GKE_METADATA Cluster zonalgcloud container node-pools update NODE_POOL_NAME \ --cluster=$CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --workload-metadata=GKE_METADATA Où NODE_POOL_NAME est le nom de chaque pool de nœuds. Dans la plupart des installations Apigee hybrid, les deux pools de nœuds par défaut sont nommés apigee-dataetapigee-runtime.
- Vérifiez les noms des comptes de service Google de votre projet à l'aide de la commande suivante :
    gcloud iam service-accounts list --project $PROJECT_ID Le résultat doit se présenter sous la forme suivante : Hors productionPour les environnements hors production : DISPLAY NAME EMAIL DISABLED apigee-non-prod apigee-non-prod@my_project_id.iam.gserviceaccount.com False ProdPour les environnements hors production : DISPLAY NAME EMAIL DISABLED apigee-cassandra apigee-cassandra@my_project_id.iam.gserviceaccount.com False apigee-logger apigee-logger@my_project_id.iam.gserviceaccount.com False apigee-mart apigee-mart@my_project_id.iam.gserviceaccount.com False apigee-metrics apigee-metrics@my_project_id.iam.gserviceaccount.com False apigee-runtime apigee-runtime@my_project_id.iam.gserviceaccount.com False apigee-synchronizer apigee-synchronizer@my_project_id.iam.gserviceaccount.com False apigee-udca apigee-udca@my_project_id.iam.gserviceaccount.com False apigee-watcher apigee-watcher@my_project_id.iam.gserviceaccount.com False 
- Vérifiez les comptes de service à l'aide de la commande suivante :
    kubectl get sa -n $NAMESPACE La sortie doit se présenter sous la forme suivante. Les comptes de service Kubernetes en gras sont ceux que vous devrez annoter avec vos comptes de service Google : NAME SECRETS AGE apigee-cassandra-backup 1 11m apigee-cassandra-restore 1 11m apigee-cassandra-schema-setup-my-project-id-123abcd-sa 1 11m apigee-cassandra-schema-val-my-project-id-123abcd 1 11m apigee-cassandra-user-setup-my-project-id-123abcd-sa 1 11m apigee-connect-agent-my-project-id-123abcd-sa 1 11m apigee-datastore-default-sa 1 11m apigee-ingressgateway 1 11m apigee-ingressgateway-my-project-id-123abcd 1 11m apigee-ingressgateway-manager 1 11m apigee-init 1 11m apigee-mart-my-project-id-123abcd-sa 1 11m apigee-metrics-sa 1 11m apigee-mint-task-scheduler-my-project-id-123abcd-sa 1 11m apigee-redis-default-sa 1 11m apigee-redis-envoy-default-sa 1 11m apigee-runtime-my-project-id-env-name-234bcde-sa 1 11m apigee-synchronizer-my-project-id-env-name-234bcde-sa 1 11m apigee-udca-my-project-id-123abcd-sa 1 11m apigee-udca-my-project-id-env-name-234bcde-sa 1 11m apigee-watcher-my-project-id-123abcd-sa 1 11m default 1 11m
- 
    Pour chaque composant Apigee, annotez les comptes de service Kubernetes correspondants avec le compte de service Google du composant.
    
      Les étapes suivantes utilisent deux variables d'environnement. Vous allez réinitialiser les valeurs de ces variables avant chaque ensemble de commandes : - GSA_NAME : nom d'un compte de service Google. Il s'agit des comptes de service que vous avez créés avec l'outil create-service-accountà l'étape 4 : Créer des comptes de service.
- KSA_NAME : nom d'un compte de service Kubernetes. Il s'agit des comptes que vous avez répertoriés ci-dessus en exécutant la commande kubectl get sa -n $NAMESPACE(par exemple,apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa).
 
- GSA_NAME : nom d'un compte de service Google. Il s'agit des comptes de service que vous avez créés avec l'outil 
- Cassandra
        Le composant Cassandra est associé à six comptes de service Kubernetes : - apigee-cassandra-backup
- apigee-cassandra-restore
- apigee-cassandra-schema-setup
- apigee-cassandra-schema-val(- val= validation)
- apigee-cassandra-user-setup
- apigee-datastore-default
 Hors productionLes étapes suivantes utilisent deux variables d'environnement. Vous allez réinitialiser les valeurs de ces variables avant chaque ensemble de commandes : - GSA_NAME : nom d'un compte de service Google. Il s'agit des comptes de service que vous avez créés avec l'outil create-service-accountà l'étape 4 : Créer des comptes de service.
- KSA_NAME : nom d'un compte de service Kubernetes. Il s'agit des comptes que vous avez répertoriés ci-dessus à l'aide de la commande kubectl get sa -n $NAMESPACE.
 Compte de service Kubernetes apigee-cassandra-backup- Définissez les variables d'environnement KSA_NAMEetGSA_NAME:GSA_NAME="apigee-non-prod" KSA_NAME="apigee-cassandra-backup"
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME La sortie doit comporter une ligne décrivant l'annotation, semblable à ceci : Annotations: iam.gke.io/gcp-service-account: apigee-non-prod@my-project-id.iam.gserviceaccount.com 
 Compte de service Kubernetes apigee-cassandra-restore- Redéfinissez la variable d'environnement KSA_NAME:KSA_NAME="apigee-cassandra-restore" 
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 Compte de service Kubernetes apigee-cassandra-schema-setup- Redéfinissez la variable d'environnement KSA_NAME:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa" apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 Compte de service Kubernetes apigee-cassandra-schema-val- Redéfinissez la variable d'environnement KSA_NAME:KSA_NAME="apigee-cassandra-schema-val-service-account-name" apigee-cassandra-schema-val-hybrid-example-project-123abcd
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 Compte de service Kubernetes apigee-cassandra-user-setup- Redéfinissez la variable d'environnement KSA_NAME:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa" apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 Compte de service Kubernetes apigee-datastore-default-sa- Redéfinissez la variable d'environnement KSA_NAME:KSA_NAME="apigee-datastore-default-sa" 
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 ProdCompte de service Kubernetes apigee-cassandra-backup- Définissez les variables d'environnement KSA_NAMEetGSA_NAME:GSA_NAME="apigee-cassandra" KSA_NAME="apigee-cassandra-backup"
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 La sortie doit comporter une ligne décrivant l'annotation, semblable à ceci : Annotations: iam.gke.io/gcp-service-account: apigee-cassandra@my-project-id.iam.gserviceaccount.com Compte de service Kubernetes apigee-cassandra-restore- Redéfinissez la variable d'environnement KSA_NAME:KSA_NAME="apigee-cassandra-restore" 
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
 Compte de service Kubernetes apigee-cassandra-schema-setup- Redéfinissez la variable d'environnement KSA_NAME:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa" apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 Liez le rôle IAM : gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID Compte de service Kubernetes apigee-cassandra-schema-val- Redéfinissez la variable d'environnement KSA_NAME:KSA_NAME="apigee-cassandra-schema-val-service-account-name" apigee-cassandra-schema-val-hybrid-example-project-123abcd
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 Compte de service Kubernetes apigee-cassandra-user-setup- Redéfinissez la variable d'environnement KSA_NAME:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa" apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 Compte de service Kubernetes apigee-datastore-default-sa- Redéfinissez la variable d'environnement KSA_NAME:KSA_NAME="apigee-datastore-default-sa" 
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 
- Apigee Connect
        Hors production- Définissez la variable d'environnement KSA_NAME:KSA_NAME="apigee-connect-agent-service-account-name-sa" apigee-connect-agent-hybrid-example-project-123abcd-sa
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 Prod- Définissez les variables d'environnement KSA_NAMEetGSA_NAME:GSA_NAME="apigee-mart" KSA_NAME="apigee-connect-agent-service-account-name-sa"apigee-connect-agent-hybrid-example-project-123abcd-sa
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 
- Définissez la variable d'environnement 
- MART
        Hors production- Définissez la variable d'environnement KSA_NAME:KSA_NAME="apigee-mart-service-account-name-sa" apigee-mart-hybrid-example-project-123abcd-sa
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 Prod- Définissez les variables d'environnement KSA_NAMEetGSA_NAME:GSA_NAME="apigee-mart" KSA_NAME="apigee-mart-service-account-name-sa"apigee-mart-hybrid-example-project-123abcd-sa
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 
- Définissez la variable d'environnement 
- Métriques ApigeeHors production- Définissez les variables d'environnement KSA_NAME:KSA_NAME="apigee-metrics-sa" 
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 Prod- Définissez les variables d'environnement KSA_NAMEetGSA_NAME:GSA_NAME="apigee-metrics" KSA_NAME="apigee-metrics-sa"
- Liez le rôle IAM :
          gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
          kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 
- Définissez les variables d'environnement 
- UDCA (au niveau de l'organisation)
        L'UDCA est implémenté dans les champs d'application au niveau de l'organisation et de l'environnement. Par conséquent, il existe deux comptes de service Kubernetes distincts pour l'UDCA, un pour chaque champ d'application. Vous pouvez les distinguer grâce au nom du compte. Le compte de champ d'application de l'environnement inclut le nom de l'environnement dans le nom du compte de service. Exemple : - Au niveau de l'organisation : apigee-udca-my-project-id-123abcd-sa, oùmy-project-idest l'ID du projet.
- Au niveau de l'environnement : apigee-udca-my-project-id-my-env-234bcde-sa, oùmy-envest le nom de l'environnement.
 Hors production- Définissez les variables d'environnement KSA_NAME:KSA_NAME="apigee-udca-service-account-name-sa" apigee-udca-hybrid-example-project-123abcd-sa
- Liez le rôle IAM :
              gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annotez le compte de service :
              kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 Prod- Définissez les variables d'environnement KSA_NAMEetGSA_NAME:GSA_NAME="apigee-udca" KSA_NAME="apigee-udca-service-account-name-sa"apigee-udca-hybrid-example-project-123abcd-sa
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 
- Au niveau de l'organisation : 
- Apigee Watcher
        Hors production- Définissez les variables d'environnement KSA_NAME:KSA_NAME="apigee-watcher-service-account-name-sa" apigee-watcher-hybrid-example-project-123abcd-sa
- Liez le rôle IAM :
                gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 Prod- Définissez les variables d'environnement KSA_NAMEetGSA_NAME:GSA_NAME="apigee-watcher" KSA_NAME="apigee-watcher-service-account-name-sa"apigee-watcher-hybrid-example-project-123abcd-sa
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 
- Définissez les variables d'environnement 
- Environnement d'exécution
        Hors production- Définissez les variables d'environnement KSA_NAME:KSA_NAME="apigee-runtime-env-level-service-account-name-sa" apigee-runtime-hybrid-example-project-example-env-234bcde-sa
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 Prod- Définissez les variables d'environnement KSA_NAMEetGSA_NAME:GSA_NAME="apigee-runtime" KSA_NAME="apigee-runtime-env-level-service-account-name-sa"apigee-runtime-hybrid-example-project-example-env-234bcde-sa
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 
- Définissez les variables d'environnement 
- Synchronisateur
        Hors production- Définissez les variables d'environnement KSA_NAME:KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa" apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 Prod- Définissez les variables d'environnement KSA_NAMEetGSA_NAME:GSA_NAME="apigee-synchronizer" KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 
- Définissez les variables d'environnement 
- UDCA (au niveau de l'environnement)
        Hors production- Définissez les variables d'environnement KSA_NAME:KSA_NAME="apigee-udca-env-level-service-account-name-sa" apigee-udca-hybrid-example-project-example-env-234bcde-sa
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 Prod- Définissez les variables d'environnement KSA_NAMEetGSA_NAME:GSA_NAME="apigee-udca" KSA_NAME="apigee-udca-env-level-service-account-name-sa"apigee-udca-hybrid-example-project-example-env-234bcde-sa
- Liez le rôle IAM :
            gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID 
- Annotez le compte de service :
            kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com 
- Vérifiez l'annotation :
                kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME 
 
- Définissez les variables d'environnement 
- (Facultatif) Vous pouvez consulter l'état de vos comptes de service Kubernetes sur la page Kubernetes : présentation des charges de travail de la Google Cloud console.
- Pour vérifier à nouveau l'état du déploiement à l'aide de apigeectl check-ready, procédez comme suit :${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml
Si nécessaire, définissez la configuration gcloud actuelle :
gcloud config set project $PROJECT_ID