Konfiguration auf den Cluster anwenden
Führen Sie die folgenden Schritte aus, um Apigee Hybrid in Ihrem Cluster zu installieren:
- Achten Sie darauf, dass Sie sich im Verzeichnis
hybrid-base-directory/hybrid-files
befinden.cd $HYBRID_FILES
- 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 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
init
mit dem Flag--dry-run
so aus:${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml --dry-run=client
- 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. - 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.
- 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
- 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.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 Sieapigeectl
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äß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_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/apigeectlexport CLUSTER_LOCATION=my-cluster-location
export ENV_NAME=my-environment-name
export HYBRID_FILES=hybrid-base-directory/hybrid-files
export NAMESPACE=apigee
export ORG_NAME=$PROJECT_ID
export PROJECT_ID=my-project-id
- 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 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 Befehlapigeectl apply
mit dem Flag--restore
aus:$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
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
- 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
undapigee-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 $NAMESPACE
aufgefü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-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- Definieren Sie die Umgebungsvariablen
KSA_NAME
undGSA_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-restore
Kubernetes-Dienstkonto- Definieren Sie die Umgebungsvariable
KSA_NAME
neu: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-setup
Kubernetes-Dienstkonto- 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
. - 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-val
Kubernetes-Dienstkonto- 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
. - 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-setup
Kubernetes-Dienstkonto- 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
. - 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-sa
Kubernetes-Dienstkonto- Definieren Sie die Umgebungsvariable
KSA_NAME
neu: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-backup
Kubernetes-Dienstkonto- Definieren Sie die Umgebungsvariablen
KSA_NAME
undGSA_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-restore
Kubernetes-Dienstkonto- Definieren Sie die Umgebungsvariable
KSA_NAME
neu: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-setup
Kubernetes-Dienstkonto- 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
. - 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-val
Kubernetes-Dienstkonto- 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
. - 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-setup
Kubernetes-Dienstkonto- 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
. - 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-sa
Kubernetes-Dienstkonto- Definieren Sie die Umgebungsvariable
KSA_NAME
neu: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
:KSA_NAME="apigee-connect-agent-service-account-name-sa"
Beispiel: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_NAME
undGSA_NAME
:GSA_NAME="apigee-mart"
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
- Definieren Sie die Umgebungsvariable
- MART
Non-prod
- Definieren Sie die Umgebungsvariable
KSA_NAME
:KSA_NAME="apigee-mart-service-account-name-sa"
Beispiel: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_NAME
undGSA_NAME
:GSA_NAME="apigee-mart"
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
- 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_NAME
undGSA_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-id
die Projekt-ID des Namens ist. - Umgebung:
apigee-udca-my-project-id-my-env-234bcde-sa
, wobeimy-env
der Name der Umgebung ist.
Non-prod
- Definieren Sie die
KSA_NAME
-Umgebungsvariablen:KSA_NAME="apigee-udca-service-account-name-sa"
Beispiel: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_NAME
undGSA_NAME
:GSA_NAME="apigee-udca"
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
- Organisationsebene:
- Apigee Watcher
Non-prod
- Definieren Sie die
KSA_NAME
-Umgebungsvariablen:KSA_NAME="apigee-watcher-service-account-name-sa"
Beispiel: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_NAME
undGSA_NAME
:GSA_NAME="apigee-watcher"
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
- Definieren Sie die
- Laufzeit
Non-prod
- 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
. - 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_NAME
undGSA_NAME
:GSA_NAME="apigee-runtime"
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
- Definieren Sie die
- Synchronizer
Non-prod
- 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
. - 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_NAME
undGSA_NAME
:GSA_NAME="apigee-synchronizer"
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
- Definieren Sie die
- UDCA (Umgebungsebene)
Non-prod
- 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
. - 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_NAME
undGSA_NAME
:GSA_NAME="apigee-udca"
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
- Definieren Sie die
- (Optional) Sie können den Status Ihrer Kubernetes-Dienstkonten in der Google Cloud Console auf 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