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
kubectl
est 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
gcloud
du cluster et définit le contextekubectl
:Clusters régionaux
gcloud container clusters get-credentials $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID
Cluster zonal
gcloud 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
KUBECONFIG
est 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
init
avec l'option--dry-run
comme suit :${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml --dry-run=client
- Si aucune erreur ne s'affiche, exécutez la commande
init
comme suit :${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml
La commande
init
installe 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.yaml
kubectl 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
apply
avec 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.yaml
Ré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.apigee
par 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_LOCATION
echo $ENV_NAME
echo $HYBRID_FILES
echo $NAMESPACE
echo $ORG_NAME
echo $PROJECT_ID
Initialisez l'une des variables dont vous avez besoin :
export APIGEECTL_HOME=hybrid-base-directory/apigeectlexport CLUSTER_LOCATION=my-cluster-location
export ENV_NAME=my-environment-name
export HYBRID_FILES=hybrid-base-directory/hybrid-files
export NAMESPACE=apigee
export ORG_NAME=$PROJECT_ID
export 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
gcloud
actuelle 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 apply
avec 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égionaux
gcloud container clusters describe $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig'
Cluster zonal
gcloud 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
null
s'affiche dans vos résultats, exécutez la commande suivante pour activer Workload Identity dans votre cluster :Clusters régionaux
gcloud container clusters update $CLUSTER_NAME \ --workload-pool=$PROJECT_ID.svc.id.goog \ --project $PROJECT_ID \ --region $CLUSTER_LOCATION
Cluster zonal
gcloud 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égionaux
gcloud 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 zonal
gcloud 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_METADATA
Si 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égionaux
gcloud container node-pools update NODE_POOL_NAME \ --cluster=$CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --workload-metadata=GKE_METADATA
Cluster zonal
gcloud 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-data
etapigee-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 production
Pour les environnements hors production :
DISPLAY NAME EMAIL DISABLED apigee-non-prod apigee-non-prod@my_project_id.iam.gserviceaccount.com False
Prod
Pour 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 production
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 à l'aide de la commande
kubectl get sa -n $NAMESPACE
.
Compte de service Kubernetes
apigee-cassandra-backup
- Définissez les variables d'environnement
KSA_NAME
etGSA_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
: Exemple :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
: Exemple :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
: Exemple :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
Prod
Compte de service Kubernetes
apigee-cassandra-backup
- Définissez les variables d'environnement
KSA_NAME
etGSA_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
: Exemple :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
: Exemple :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
: Exemple :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
: Exemple :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_NAME
etGSA_NAME
: Exemple :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
: Exemple :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_NAME
etGSA_NAME
: Exemple :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 Apigee
Hors 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_NAME
etGSA_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-id
est l'ID du projet. - Au niveau de l'environnement :
apigee-udca-my-project-id-my-env-234bcde-sa
, oùmy-env
est le nom de l'environnement.
Hors production
- Définissez les variables d'environnement
KSA_NAME
: Exemple :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_NAME
etGSA_NAME
: Exemple :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
: Exemple :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_NAME
etGSA_NAME
: Exemple :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
: Exemple :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_NAME
etGSA_NAME
: Exemple :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
: Exemple :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_NAME
etGSA_NAME
: Exemple :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
: Exemple :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_NAME
etGSA_NAME
: Exemple :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 console Google Cloud.
- 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