Konfiguration auf den Cluster anwenden
Führen Sie die folgenden Schritte aus, um Apigee Hybrid in Ihrem Cluster zu installieren:
- Sie müssen sich im Verzeichnis
hybrid-base-directory/hybrid-filesbefinden.cd $HYBRID_FILES
- Prüfen Sie mit dem folgenden Befehl, ob
kubectlauf 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 denkubectl-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
- 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} - 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
initmit dem Flag--dry-runso aus:${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml --dry-run=client - Wenn keine Fehler vorhanden sind, führen Sie den Befehl
initso aus:${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yamlMit dem Befehl
initwerden die Apigee-Bereitstellungsdienste Apigee Deployment Controller und Apigee Admission Webhook installiert. - Mit den folgenden Befehlen können Sie den Bereitstellungsstatus prüfen:
${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yamlkubectl get pods -n apigee-system
kubectl get pods -n apigee
Wenn die Pods bereit sind, fahren Sie mit dem nächsten Schritt fort.
- Führen Sie eine Installation als Probelauf aus. Führen Sie den Befehl
applymit dem Flag--dry-runaus.${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml --dry-run=client - 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 - Führen Sie folgenden Befehl aus, um den Status des Deployments zu überprüfen:
${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yamlWiederholen 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 Sieapigeectlinstalliert 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äßigapigee.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_HOMEecho $CLUSTER_LOCATIONecho $ENV_NAMEecho $HYBRID_FILESecho $NAMESPACEecho $ORG_NAMEecho $PROJECT_ID
Initialisieren Sie alle erforderlichen Variablen:
export APIGEECTL_HOME=hybrid-base-directory/apigeectlexport CLUSTER_LOCATION=my-cluster-locationexport ENV_NAME=my-environment-nameexport HYBRID_FILES=hybrid-base-directory/hybrid-filesexport NAMESPACE=apigeeexport ORG_NAME=$PROJECT_IDexport PROJECT_ID=my-project-id
- 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
- Prüfen Sie mit dem folgenden Befehl die aktuelle
gcloud-Konfiguration für Ihre Google Cloud-Projekt-ID:gcloud config get project
- Erstellen Sie das Kubernetes-Dienstkonto
apigee-cassandra-restore.Wenn Sie Ihre Konfiguration mit
apigeectl applyausgefü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-restoreden Befehlapigeectl applymit dem Flag--restoreaus:$APIGEECTL_HOME/apigeectl apply -f $HYBRID_FILES/overrides/overrides.yaml --restore
- 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
nullangezeigt 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
- 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_METADATAWenn 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-dataundapigee-runtime. - 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
- 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 -
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 $NAMESPACEaufgeführten Konten, z. B.apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa.
- GSA_NAME: Name eines Google-Dienstkontos. Dies sind die Dienstkonten, die Sie mit dem
- Cassandra
Die Cassandra-Komponente umfasst sechs Kubernetes-Dienstkonten:
apigee-cassandra-backupapigee-cassandra-restoreapigee-cassandra-schema-setupapigee-cassandra-schema-val(val= Validierung)apigee-cassandra-user-setupapigee-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 $NAMESPACEaufgeführten Konten.
apigee-cassandra-backupKubernetes-Dienstkonto- Definieren Sie die Umgebungsvariablen
KSA_NAMEundGSA_NAME:GSA_NAME="apigee-non-prod"
KSA_NAME="apigee-cassandra-backup" - 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Ü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-restoreKubernetes-Dienstkonto- Definieren Sie die Umgebungsvariable
KSA_NAMEneu:KSA_NAME="apigee-cassandra-restore"
- 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-cassandra-schema-setupKubernetes-Dienstkonto- Definieren Sie die Umgebungsvariable
KSA_NAMEneu: Beispiel:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa. - 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-cassandra-schema-valKubernetes-Dienstkonto- Definieren Sie die Umgebungsvariable
KSA_NAMEneu: Beispiel:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd. - 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-cassandra-user-setupKubernetes-Dienstkonto- Definieren Sie die Umgebungsvariable
KSA_NAMEneu: Beispiel:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa. - 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-datastore-default-saKubernetes-Dienstkonto- Definieren Sie die Umgebungsvariable
KSA_NAMEneu:KSA_NAME="apigee-datastore-default-sa"
- 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
apigee-cassandra-backupKubernetes-Dienstkonto- Definieren Sie die Umgebungsvariablen
KSA_NAMEundGSA_NAME:GSA_NAME="apigee-cassandra"
KSA_NAME="apigee-cassandra-backup" - 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Ü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-cassandra@my-project-id.iam.gserviceaccount.com
apigee-cassandra-restoreKubernetes-Dienstkonto- Definieren Sie die Umgebungsvariable
KSA_NAMEneu:KSA_NAME="apigee-cassandra-restore"
- 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
- 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-setupKubernetes-Dienstkonto- Definieren Sie die Umgebungsvariable
KSA_NAMEneu: Beispiel:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa. - Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
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
apigee-cassandra-schema-valKubernetes-Dienstkonto- Definieren Sie die Umgebungsvariable
KSA_NAMEneu: Beispiel:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd. - 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-cassandra-user-setupKubernetes-Dienstkonto- Definieren Sie die Umgebungsvariable
KSA_NAMEneu: Beispiel:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa. - 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-datastore-default-saKubernetes-Dienstkonto- Definieren Sie die Umgebungsvariable
KSA_NAMEneu:KSA_NAME="apigee-datastore-default-sa"
- 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Apigee Connect
Non-prod
- Definieren Sie die Umgebungsvariable
KSA_NAME: Beispiel:KSA_NAME="apigee-connect-agent-service-account-name-sa"
apigee-connect-agent-hybrid-example-project-123abcd-sa. - 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Definieren Sie die Umgebungsvariablen
KSA_NAMEundGSA_NAME: Beispiel:GSA_NAME="apigee-mart"
KSA_NAME="apigee-connect-agent-service-account-name-sa"apigee-connect-agent-hybrid-example-project-123abcd-sa. - 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Definieren Sie die Umgebungsvariable
- MART
Non-prod
- Definieren Sie die Umgebungsvariable
KSA_NAME: Beispiel:KSA_NAME="apigee-mart-service-account-name-sa"
apigee-mart-hybrid-example-project-123abcd-sa. - 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Definieren Sie die Umgebungsvariablen
KSA_NAMEundGSA_NAME: Beispiel:GSA_NAME="apigee-mart"
KSA_NAME="apigee-mart-service-account-name-sa"apigee-mart-hybrid-example-project-123abcd-sa. - 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Definieren Sie die Umgebungsvariable
- Apigee-Messwerte
Non-prod
- Definieren Sie die
KSA_NAME-Umgebungsvariablen:KSA_NAME="apigee-metrics-sa"
- 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Definieren Sie die Umgebungsvariablen
KSA_NAMEundGSA_NAME:GSA_NAME="apigee-metrics"
KSA_NAME="apigee-metrics-sa" - 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Definieren Sie die
- 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, wobeimy-project-iddie Projekt-ID des Namens ist. - Umgebung:
apigee-udca-my-project-id-my-env-234bcde-sa, wobeimy-envder Name der Umgebung ist.
Non-prod
- Definieren Sie die
KSA_NAME-Umgebungsvariablen: Beispiel:KSA_NAME="apigee-udca-service-account-name-sa"
apigee-udca-hybrid-example-project-123abcd-sa. - 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 - Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com - Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Definieren Sie die Umgebungsvariablen
KSA_NAMEundGSA_NAME: Beispiel:GSA_NAME="apigee-udca"
KSA_NAME="apigee-udca-service-account-name-sa"apigee-udca-hybrid-example-project-123abcd-sa. - 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Organisationsebene:
- Apigee Watcher
Non-prod
- Definieren Sie die
KSA_NAME-Umgebungsvariablen: Beispiel:KSA_NAME="apigee-watcher-service-account-name-sa"
apigee-watcher-hybrid-example-project-123abcd-sa. - 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Definieren Sie die Umgebungsvariablen
KSA_NAMEundGSA_NAME: Beispiel:GSA_NAME="apigee-watcher"
KSA_NAME="apigee-watcher-service-account-name-sa"apigee-watcher-hybrid-example-project-123abcd-sa. - 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Definieren Sie die
- Laufzeit
Non-prod
- Definieren Sie die
KSA_NAME-Umgebungsvariablen: Beispiel:KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
apigee-runtime-hybrid-example-project-example-env-234bcde-sa. - 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Definieren Sie die Umgebungsvariablen
KSA_NAMEundGSA_NAME: Beispiel:GSA_NAME="apigee-runtime"
KSA_NAME="apigee-runtime-env-level-service-account-name-sa"apigee-runtime-hybrid-example-project-example-env-234bcde-sa. - 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Definieren Sie die
- Synchronizer
Non-prod
- Definieren Sie die
KSA_NAME-Umgebungsvariablen: Beispiel:KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa. - 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Definieren Sie die Umgebungsvariablen
KSA_NAMEundGSA_NAME: Beispiel:GSA_NAME="apigee-synchronizer"
KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa. - 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Definieren Sie die
- UDCA (Umgebungsebene)
Non-prod
- Definieren Sie die
KSA_NAME-Umgebungsvariablen: Beispiel:KSA_NAME="apigee-udca-env-level-service-account-name-sa"
apigee-udca-hybrid-example-project-example-env-234bcde-sa. - 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Definieren Sie die Umgebungsvariablen
KSA_NAMEundGSA_NAME: Beispiel:GSA_NAME="apigee-udca"
KSA_NAME="apigee-udca-env-level-service-account-name-sa"apigee-udca-hybrid-example-project-example-env-234bcde-sa. - 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
- Annotieren Sie das Dienstkonto:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Überprüfen Sie die Annotation:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Definieren Sie die
- (Optional) Sie können den Status Ihrer Kubernetes-Dienstkonten in der Google Cloud consoleauf der Seite Kubernetes: Arbeitslasten – Übersicht sehen.
- 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
Legen Sie gegebenenfalls die aktuelle gcloud-Konfiguration fest:
gcloud config set project $PROJECT_ID