Étape 8 : Installez un environnement d'exécution hybride

Appliquer la configuration au cluster

Pour installer Apigee hybrid sur votre cluster, procédez comme suit :

  1. Vérifiez que vous êtes bien dans le répertoire hybrid-base-directory/hybrid-files.
    cd $HYBRID_FILES
  2. 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 contexte kubectl :

    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
  3. 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}
  4. 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
  5. 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.

  6. 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.

  7. 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
  8. 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
  9. 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_HOME
echo $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/apigeectl
export 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
  1. 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
  2. Vérifiez la configuration gcloud actuelle de votre ID de projet Google Cloud à l'aide de la commande suivante :
    gcloud config get project
  3. Si nécessaire, définissez la configuration gcloud actuelle :

    gcloud config set project $PROJECT_ID
  4. 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écutez apigeectl apply avec l'option --restore :

    $APIGEECTL_HOME/apigeectl apply -f $HYBRID_FILES/overrides/overrides.yaml --restore
  5. 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
  6. 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

    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 et apigee-runtime.

  7. 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
    
  8. 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
        
  9. 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).
    • 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

      1. Définissez les variables d'environnement KSA_NAME et GSA_NAME :
        GSA_NAME="apigee-non-prod"
        KSA_NAME="apigee-cassandra-backup"
      2. 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
      3. 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
      4. 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

      1. Redéfinissez la variable d'environnement KSA_NAME :

        KSA_NAME="apigee-cassandra-restore"
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Compte de service Kubernetes apigee-cassandra-schema-setup

      1. Redéfinissez la variable d'environnement KSA_NAME :

        KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
        Exemple : apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Compte de service Kubernetes apigee-cassandra-schema-val

      1. Redéfinissez la variable d'environnement KSA_NAME :

        KSA_NAME="apigee-cassandra-schema-val-service-account-name"
        Exemple : apigee-cassandra-schema-val-hybrid-example-project-123abcd
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Compte de service Kubernetes apigee-cassandra-user-setup

      1. Redéfinissez la variable d'environnement KSA_NAME :

        KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
        Exemple : apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Compte de service Kubernetes apigee-datastore-default-sa

      1. Redéfinissez la variable d'environnement KSA_NAME :

        KSA_NAME="apigee-datastore-default-sa"
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      Compte de service Kubernetes apigee-cassandra-backup

      1. Définissez les variables d'environnement KSA_NAME et GSA_NAME :
        GSA_NAME="apigee-cassandra"
        KSA_NAME="apigee-cassandra-backup"
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
      5. 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
      6. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Compte de service Kubernetes apigee-cassandra-restore

      1. Redéfinissez la variable d'environnement KSA_NAME :

        KSA_NAME="apigee-cassandra-restore"
      2. 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
      3. 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

      1. Redéfinissez la variable d'environnement KSA_NAME :

        KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
        Exemple : apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Compte de service Kubernetes apigee-cassandra-schema-val

      1. Redéfinissez la variable d'environnement KSA_NAME :

        KSA_NAME="apigee-cassandra-schema-val-service-account-name"
        Exemple : apigee-cassandra-schema-val-hybrid-example-project-123abcd
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Compte de service Kubernetes apigee-cassandra-user-setup

      1. Redéfinissez la variable d'environnement KSA_NAME :

        KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
        Exemple : apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Compte de service Kubernetes apigee-datastore-default-sa

      1. Redéfinissez la variable d'environnement KSA_NAME :

        KSA_NAME="apigee-datastore-default-sa"
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Apigee Connect

      Hors production

      1. Définissez la variable d'environnement KSA_NAME :

        KSA_NAME="apigee-connect-agent-service-account-name-sa"
        Exemple : apigee-connect-agent-hybrid-example-project-123abcd-sa
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. Définissez les variables d'environnement KSA_NAME et GSA_NAME :
        GSA_NAME="apigee-mart"
        KSA_NAME="apigee-connect-agent-service-account-name-sa"
        Exemple : apigee-connect-agent-hybrid-example-project-123abcd-sa
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • MART

      Hors production

      1. Définissez la variable d'environnement KSA_NAME :

        KSA_NAME="apigee-mart-service-account-name-sa"
        Exemple : apigee-mart-hybrid-example-project-123abcd-sa
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. Définissez les variables d'environnement KSA_NAME et GSA_NAME :

        GSA_NAME="apigee-mart"
        KSA_NAME="apigee-mart-service-account-name-sa"
        Exemple : apigee-mart-hybrid-example-project-123abcd-sa
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Métriques Apigee

      Hors production

      1. Définissez les variables d'environnement KSA_NAME :

        KSA_NAME="apigee-metrics-sa"
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. Définissez les variables d'environnement KSA_NAME et GSA_NAME :

        GSA_NAME="apigee-metrics"
        KSA_NAME="apigee-metrics-sa"
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • 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

      1. Définissez les variables d'environnement KSA_NAME :

        KSA_NAME="apigee-udca-service-account-name-sa"
        Exemple : apigee-udca-hybrid-example-project-123abcd-sa
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. Définissez les variables d'environnement KSA_NAME et GSA_NAME :

        GSA_NAME="apigee-udca"
        KSA_NAME="apigee-udca-service-account-name-sa"
        Exemple : apigee-udca-hybrid-example-project-123abcd-sa
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Apigee Watcher

      Hors production

      1. Définissez les variables d'environnement KSA_NAME :

        KSA_NAME="apigee-watcher-service-account-name-sa"
        Exemple : apigee-watcher-hybrid-example-project-123abcd-sa
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. Définissez les variables d'environnement KSA_NAME et GSA_NAME :

        GSA_NAME="apigee-watcher"
        KSA_NAME="apigee-watcher-service-account-name-sa"
        Exemple : apigee-watcher-hybrid-example-project-123abcd-sa
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Environnement d'exécution

      Hors production

      1. Définissez les variables d'environnement KSA_NAME :

        KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
        Exemple : apigee-runtime-hybrid-example-project-example-env-234bcde-sa
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. Définissez les variables d'environnement KSA_NAME et GSA_NAME :

        GSA_NAME="apigee-runtime"
        KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
        Exemple : apigee-runtime-hybrid-example-project-example-env-234bcde-sa
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Synchronisateur

      Hors production

      1. Définissez les variables d'environnement KSA_NAME :

        KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
        Exemple : apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. Définissez les variables d'environnement KSA_NAME et GSA_NAME :

        GSA_NAME="apigee-synchronizer"
        KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
        Exemple : apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • UDCA (au niveau de l'environnement)

      Hors production

      1. Définissez les variables d'environnement KSA_NAME :

        KSA_NAME="apigee-udca-env-level-service-account-name-sa"
        Exemple : apigee-udca-hybrid-example-project-example-env-234bcde-sa
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. Définissez les variables d'environnement KSA_NAME et GSA_NAME :

        GSA_NAME="apigee-udca"
        KSA_NAME="apigee-udca-env-level-service-account-name-sa"
        Exemple : apigee-udca-hybrid-example-project-example-env-234bcde-sa
      2. 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
      3. 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
      4. Vérifiez l'annotation :
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
  10. (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.

    Accéder à la page Charges de travail

  11. 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
1 2 3 4 5 6 7 8 (SUITE) Étape 9 : Exposer Apigee Ingress 10