Schritt 8: Hybrid-Laufzeit installieren

Konfiguration auf den Cluster anwenden

Führen Sie die folgenden Schritte aus, um Apigee Hybrid in Ihrem Cluster zu installieren:

  1. Sie müssen sich im Verzeichnis hybrid-base-directory/hybrid-files befinden.
    cd $HYBRID_FILES
  2. Prüfen Sie mit dem folgenden Befehl, ob kubectl auf den richtigen Kontext eingestellt ist. Der aktuelle Kontext sollte auf den Cluster eingestellt werden, für den Sie Apigee Hybrid bereitstellen.
    kubectl config current-context

    Das Ergebnis sollte den Namen des Clusters enthalten, in dem Sie Apigee Hybrid bereitstellen. Bei GKE hat der Kontextname beispielsweise normalerweise das Format gke_project-id_cluster-location_cluster-name, wie in:

    gke_my-project_us-central1_my-cluster

    Wenn der Clustername im Kontext nicht übereinstimmt, ruft der folgende Befehl die gcloud-Anmeldedaten des Clusters ab und legt den kubectl-Kontext fest:

    Regionale Cluster

    gcloud container clusters get-credentials $CLUSTER_NAME \
    --region $CLUSTER_LOCATION \
    --project $PROJECT_ID

    Zonale Cluster

    gcloud container clusters get-credentials $CLUSTER_NAME \
    --zone $CLUSTER_LOCATION \
    --project $PROJECT_ID
  3. Nur für die Plattformen Anthos on Bare Metal, AWS in GKE, EKS und GKE On-Prem. Prüfen Sie, ob die KUBECONFIG-Variable mit folgendem Befehl festgelegt ist:
    echo ${KUBECONFIG}
  4. Führen Sie eine Initialisierung als Probelauf aus. Bei einem Probelauf können Sie prüfen, ob Fehler vorliegen, bevor Änderungen am Cluster vorgenommen werden. Führen Sie den Befehl init mit dem Flag --dry-run so aus:
    ${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml --dry-run=client
  5. Wenn keine Fehler vorhanden sind, führen Sie den Befehl init so aus:
    ${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml

    Mit dem Befehl init werden die Apigee-Bereitstellungsdienste Apigee Deployment Controller und Apigee Admission Webhook installiert.

  6. Mit den folgenden Befehlen können Sie den Bereitstellungsstatus prüfen:
    ${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml
    kubectl get pods -n apigee-system
    kubectl get pods -n apigee

    Wenn die Pods bereit sind, fahren Sie mit dem nächsten Schritt fort.

  7. Führen Sie eine Installation als Probelauf aus. Führen Sie den Befehl apply mit dem Flag --dry-run aus.
    ${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml --dry-run=client
  8. Wenn keine Fehler auftreten, können Sie die Apigee-spezifischen Laufzeitkomponenten mit dem folgenden Befehl auf den Cluster anwenden:
    ${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml
  9. Führen Sie folgenden Befehl aus, um den Status des Deployments zu überprüfen:
    ${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml

    Wiederholen Sie diesen Schritt, bis die Pods bereit sind. Das Starten der Pods kann einige Minuten dauern.

GKE mit Workload Identity

Wenn Sie Workload Identity in GKE verwenden, folgen Sie dieser Anleitung, um die von apigeectl erstellten Kubernetes-Dienstkonten mit den Google-Dienstkonten zu verknüpfen, die Sie unter Schritt 4: Dienstkonten und Anmeldedaten erstellen erstellt haben.

Bei diesen Verfahren werden die folgenden Umgebungsvariablen verwendet. Legen Sie diese entweder in der Befehls-Shell fest oder ersetzen Sie sie in den Codebeispielen durch die tatsächlichen Werte:

  • APIGEECTL_HOME: Das Verzeichnis, in dem Sie apigeectl installiert haben.
  • CLUSTER_LOCATION: Die Region oder Zone Ihres Clusters, z. B. us-west1.
  • CLUSTER_LOCATION: Der Name Ihres Clusters.
  • ENV_NAME: Der Name der Apigee-Umgebung.
  • NAMESPACE: Ihr Apigee-Namespace. Standardmäßig apigee.
  • HYBRID_FILES: Ihr Hybriddateiverzeichnis, z. B. hybrid-base-directory/hybrid-files.
  • ORG_NAME: Der Name Ihrer Apigee-Organisation.
  • PROJECT_ID: Die ID Ihres Google Cloud-Projekts.

Überprüfen Sie die Umgebungsvariablen:

echo $APIGEECTL_HOME
echo $CLUSTER_LOCATION
echo $ENV_NAME
echo $HYBRID_FILES
echo $NAMESPACE
echo $ORG_NAME
echo $PROJECT_ID

Initialisieren Sie alle erforderlichen Variablen:

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. Optional: Löschen Sie die Dienstkontoschlüsseldateien.

    Wenn Sie Apigee Hybrid in GKE ausführen, werden standardmäßig private Schlüssel (.json-Dateien) für jedes Dienstkonto erstellt und heruntergeladen. Wenn Sie Workload Identity verwenden, müssen Sie keine privaten Schlüssel für Dienstkonten herunterladen und zu den GKE-Clustern hinzufügen.

    Sie können die Schlüsseldateien mit dem folgenden Befehl löschen:

    rm $HYBRID_FILES/service-accounts/*.json
  2. Prüfen Sie mit dem folgenden Befehl die aktuelle gcloud-Konfiguration für Ihre Google Cloud-Projekt-ID:
    gcloud config get project
  3. Legen Sie gegebenenfalls die aktuelle gcloud-Konfiguration fest:

    gcloud config set project $PROJECT_ID
  4. Erstellen Sie das Kubernetes-Dienstkonto apigee-cassandra-restore.

    Wenn Sie Ihre Konfiguration mit apigeectl apply ausgeführt haben, wurden mithilfe des Befehls die meisten Kubernetes-Dienstkonten erstellt, die für Workload Identity erforderlich sind.

    Führen Sie zum Erstellen des Kubernetes-Dienstkontos apigee-cassandra-restore den Befehl apigeectl apply mit dem Flag --restore aus:

    $APIGEECTL_HOME/apigeectl apply -f $HYBRID_FILES/overrides/overrides.yaml --restore
  5. Prüfen Sie, ob Workload Identity für Ihren GKE-Cluster aktiviert ist. Wenn Sie den Cluster in Schritt 1: Cluster erstellen erstellt haben, wurde in Schritt 6 Workload Identity aktiviert. Mit folgendem Befehl können Sie prüfen, ob Workload Identity aktiviert ist:

    Regionale Cluster

    gcloud container clusters describe $CLUSTER_NAME \
      --region $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten 'workloadIdentityConfig'

    Zonale Cluster

    gcloud container clusters describe $CLUSTER_NAME \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten 'workloadIdentityConfig'

    Wenn Workload Identity für den Cluster aktiviert ist, sollte die Ausgabe so aussehen:

      ---
      workloadPool: PROJECT_ID.svc.id.goog

    Wenn stattdessen in den Ergebnissen null angezeigt wird, führen Sie den folgenden Befehl aus, um Workload Identity für Ihren Cluster zu aktivieren:

    Regionale Cluster

    gcloud container clusters update $CLUSTER_NAME \
      --workload-pool=$PROJECT_ID.svc.id.goog \
      --project $PROJECT_ID \
      --region $CLUSTER_LOCATION

    Zonale Cluster

    gcloud container clusters update  $CLUSTER_NAME \
      --workload-pool=$PROJECT_ID.svc.id.goog \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID
  6. Prüfen Sie mit den folgenden Befehlen, ob Workload Identity auf Ihren Knotenpools aktiviert ist:

    Regionale Cluster

    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:"

    Zonale Cluster

    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:"

    Die Ausgabe sollte in etwa so aussehen:

    ---
    diskSizeGb: 100
    diskType: pd-standard
    ...
    workloadMetadataConfig:
      mode: GKE_METADATA
        

    Wenn die Ausgabe keine Zeile für workloadMetadataConfig: enthält, aktivieren Sie mit den folgenden Befehlen Workload Identity für jeden Knotenpool. Dieser Vorgang kann bis zu 30 Minuten dauern.

    Regionale Cluster

    gcloud container node-pools update NODE_POOL_NAME \
      --cluster=$CLUSTER_NAME \
      --region $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --workload-metadata=GKE_METADATA

    Zonale Cluster

    gcloud container node-pools update NODE_POOL_NAME \
      --cluster=$CLUSTER_NAME \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --workload-metadata=GKE_METADATA

    Dabei ist NODE_POOL_NAME der Name jedes Knotenpools. In den meisten Apigee Hybrid-Installationen heißen die beiden Standardknotenpools apigee-data und apigee-runtime.

  7. Prüfen Sie die Namen der Google-Dienstkonten für Ihr Projekt mit dem folgenden Befehl:
    gcloud iam service-accounts list --project $PROJECT_ID

    Die Ausgabe sollte in etwa so aussehen:

    Non-prod

    Für Nicht-Produktionsumgebungen:

    DISPLAY NAME         EMAIL                                                      DISABLED
    apigee-non-prod      apigee-non-prod@my_project_id.iam.gserviceaccount.com      False
    

    Prod

    Für Nicht-Produktionsumgebungen:

    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. Prüfen Sie die Dienstkonten mit folgendem Befehl:
    kubectl get sa -n $NAMESPACE

    Ihre Ausgabe sollte in etwa so aussehen: Die Kubernetes-Dienstkonten in Fettschrift sind die, die Sie mit Ihren Google-Dienstkonten annotieren müssen:

    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. Annotieren Sie für jede Apigee-Komponente die entsprechenden Kubernetes-Dienstkonten mit dem Google-Dienstkonto für die Komponente.

    In den folgenden Schritten werden zwei Umgebungsvariablen verwendet. Sie werden die Werte dieser Variablen vor jeder Gruppe von Befehlen zurücksetzen:

    • GSA_NAME: Name eines Google-Dienstkontos. Dies sind die Dienstkonten, die Sie mit dem create-service-account-Tool in Schritt 4: Dienstkonten erstellen erstellt haben.
    • KSA_NAME: Der Name eines Kubernetes-Dienstkontos. Dies sind die oben mit dem Befehl kubectl get sa -n $NAMESPACE aufgeführten Konten, z. B. apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa.
    • Cassandra

      Die Cassandra-Komponente umfasst sechs Kubernetes-Dienstkonten:

      • apigee-cassandra-backup
      • apigee-cassandra-restore
      • apigee-cassandra-schema-setup
      • apigee-cassandra-schema-val (val = Validierung)
      • apigee-cassandra-user-setup
      • apigee-datastore-default

      Non-prod

      In den folgenden Schritten werden zwei Umgebungsvariablen verwendet. Sie werden die Werte dieser Variablen vor jeder Gruppe von Befehlen zurücksetzen:

      • GSA_NAME: Name eines Google-Dienstkontos. Dies sind die Dienstkonten, die Sie mit dem create-service-account-Tool in Schritt 4: Dienstkonten erstellen erstellt haben.
      • KSA_NAME: Der Name eines Kubernetes-Dienstkontos. Dies sind die oben mit dem Befehl kubectl get sa -n $NAMESPACE aufgeführten Konten.

      apigee-cassandra-backup Kubernetes-Dienstkonto

      1. Definieren Sie die Umgebungsvariablen KSA_NAME und GSA_NAME:
        GSA_NAME="apigee-non-prod"
        KSA_NAME="apigee-cassandra-backup"
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

        Die Ausgabe sollte eine Zeile wie die folgende enthalten, die die Annotation beschreibt:

        Annotations:         iam.gke.io/gcp-service-account: apigee-non-prod@my-project-id.iam.gserviceaccount.com

      apigee-cassandra-restore Kubernetes-Dienstkonto

      1. Definieren Sie die Umgebungsvariable KSA_NAME neu:

        KSA_NAME="apigee-cassandra-restore"
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-cassandra-schema-setup Kubernetes-Dienstkonto

      1. Definieren Sie die Umgebungsvariable KSA_NAME neu:

        KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
        Beispiel: apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa.
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-cassandra-schema-val Kubernetes-Dienstkonto

      1. Definieren Sie die Umgebungsvariable KSA_NAME neu:

        KSA_NAME="apigee-cassandra-schema-val-service-account-name"
        Beispiel: apigee-cassandra-schema-val-hybrid-example-project-123abcd.
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-cassandra-user-setup Kubernetes-Dienstkonto

      1. Definieren Sie die Umgebungsvariable KSA_NAME neu:

        KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
        Beispiel: apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa.
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-datastore-default-sa Kubernetes-Dienstkonto

      1. Definieren Sie die Umgebungsvariable KSA_NAME neu:

        KSA_NAME="apigee-datastore-default-sa"
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      apigee-cassandra-backup Kubernetes-Dienstkonto

      1. Definieren Sie die Umgebungsvariablen KSA_NAME und GSA_NAME:
        GSA_NAME="apigee-cassandra"
        KSA_NAME="apigee-cassandra-backup"
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
      5. Die Ausgabe sollte eine Zeile wie die folgende enthalten, die die Annotation beschreibt:

        Annotations:         iam.gke.io/gcp-service-account: apigee-cassandra@my-project-id.iam.gserviceaccount.com
      6. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-cassandra-restore Kubernetes-Dienstkonto

      1. Definieren Sie die Umgebungsvariable KSA_NAME neu:

        KSA_NAME="apigee-cassandra-restore"
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com

      apigee-cassandra-schema-setup Kubernetes-Dienstkonto

      1. Definieren Sie die Umgebungsvariable KSA_NAME neu:

        KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
        Beispiel: apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa.
      2. Binden Sie die IAM-Rolle:

        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-cassandra-schema-val Kubernetes-Dienstkonto

      1. Definieren Sie die Umgebungsvariable KSA_NAME neu:

        KSA_NAME="apigee-cassandra-schema-val-service-account-name"
        Beispiel: apigee-cassandra-schema-val-hybrid-example-project-123abcd.
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-cassandra-user-setup Kubernetes-Dienstkonto

      1. Definieren Sie die Umgebungsvariable KSA_NAME neu:

        KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
        Beispiel: apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa.
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-datastore-default-sa Kubernetes-Dienstkonto

      1. Definieren Sie die Umgebungsvariable KSA_NAME neu:

        KSA_NAME="apigee-datastore-default-sa"
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Apigee Connect

      Non-prod

      1. Definieren Sie die Umgebungsvariable KSA_NAME:

        KSA_NAME="apigee-connect-agent-service-account-name-sa"
        Beispiel: apigee-connect-agent-hybrid-example-project-123abcd-sa.
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. Definieren Sie die Umgebungsvariablen KSA_NAME und GSA_NAME:
        GSA_NAME="apigee-mart"
        KSA_NAME="apigee-connect-agent-service-account-name-sa"
        Beispiel: apigee-connect-agent-hybrid-example-project-123abcd-sa.
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • MART

      Non-prod

      1. Definieren Sie die Umgebungsvariable KSA_NAME:

        KSA_NAME="apigee-mart-service-account-name-sa"
        Beispiel: apigee-mart-hybrid-example-project-123abcd-sa.
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. Definieren Sie die Umgebungsvariablen KSA_NAME und GSA_NAME:

        GSA_NAME="apigee-mart"
        KSA_NAME="apigee-mart-service-account-name-sa"
        Beispiel: apigee-mart-hybrid-example-project-123abcd-sa.
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Apigee-Messwerte

      Non-prod

      1. Definieren Sie die KSA_NAME-Umgebungsvariablen:

        KSA_NAME="apigee-metrics-sa"
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. Definieren Sie die Umgebungsvariablen KSA_NAME und GSA_NAME:

        GSA_NAME="apigee-metrics"
        KSA_NAME="apigee-metrics-sa"
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
        --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • UDCA (Organisationsebene)

      UDCA ist sowohl auf Organisations- als auch auf Umgebungsebene implementiert. Daher gibt es zwei separate Kubernetes-Dienstkonten für UDCA, eines für jeden Bereich. Sie können sie anhand des Kontonamens unterscheiden. Das Konto enthält den Umgebungsnamen im Dienstkontonamen. Beispiel:

      • Organisationsebene: apigee-udca-my-project-id-123abcd-sa, wobei my-project-id die Projekt-ID des Namens ist.
      • Umgebung: apigee-udca-my-project-id-my-env-234bcde-sa, wobei my-env der Name der Umgebung ist.

      Non-prod

      1. Definieren Sie die KSA_NAME-Umgebungsvariablen:

        KSA_NAME="apigee-udca-service-account-name-sa"
        Beispiel: apigee-udca-hybrid-example-project-123abcd-sa.
      2. Binden Sie die IAM-Rolle:
          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. Annotieren Sie das Dienstkonto:
          kubectl annotate serviceaccount \
            --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. Definieren Sie die Umgebungsvariablen KSA_NAME und GSA_NAME:

        GSA_NAME="apigee-udca"
        KSA_NAME="apigee-udca-service-account-name-sa"
        Beispiel: apigee-udca-hybrid-example-project-123abcd-sa.
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Apigee Watcher

      Non-prod

      1. Definieren Sie die KSA_NAME-Umgebungsvariablen:

        KSA_NAME="apigee-watcher-service-account-name-sa"
        Beispiel: apigee-watcher-hybrid-example-project-123abcd-sa.
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. Definieren Sie die Umgebungsvariablen KSA_NAME und GSA_NAME:

        GSA_NAME="apigee-watcher"
        KSA_NAME="apigee-watcher-service-account-name-sa"
        Beispiel: apigee-watcher-hybrid-example-project-123abcd-sa.
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Laufzeit

      Non-prod

      1. Definieren Sie die KSA_NAME-Umgebungsvariablen:

        KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
        Beispiel: apigee-runtime-hybrid-example-project-example-env-234bcde-sa.
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. Definieren Sie die Umgebungsvariablen KSA_NAME und GSA_NAME:

        GSA_NAME="apigee-runtime"
        KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
        Beispiel: apigee-runtime-hybrid-example-project-example-env-234bcde-sa.
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Synchronizer

      Non-prod

      1. Definieren Sie die KSA_NAME-Umgebungsvariablen:

        KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
        Beispiel: apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa.
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. Definieren Sie die Umgebungsvariablen KSA_NAME und GSA_NAME:

        GSA_NAME="apigee-synchronizer"
        KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
        Beispiel: apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa.
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • UDCA (Umgebungsebene)

      Non-prod

      1. Definieren Sie die KSA_NAME-Umgebungsvariablen:

        KSA_NAME="apigee-udca-env-level-service-account-name-sa"
        Beispiel: apigee-udca-hybrid-example-project-example-env-234bcde-sa.
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

      1. Definieren Sie die Umgebungsvariablen KSA_NAME und GSA_NAME:

        GSA_NAME="apigee-udca"
        KSA_NAME="apigee-udca-env-level-service-account-name-sa"
        Beispiel: apigee-udca-hybrid-example-project-example-env-234bcde-sa.
      2. Binden Sie die IAM-Rolle:
        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. Annotieren Sie das Dienstkonto:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Überprüfen Sie die Annotation:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
  10. (Optional) Sie können den Status Ihrer Kubernetes-Dienstkonten in der Google Cloud Console auf der Seite Kubernetes: Arbeitslasten – Übersicht sehen.

    Zu Arbeitslasten

  11. So prüfen Sie den Status der Bereitstellung noch einmal mit apigeectl check-ready:
    ${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml
1 2 3 4 5 6 7 8 (WEITER) Schritt 9: Apigee-Ingress verfügbar machen 10