Dienstkonto-Secrets in Kubernetes-Secrets speichern
Auf dieser Seite wird beschrieben, wie Sie Apigee Hybrid-Dienstkontoschlüssel in Kubernetes-Secrets speichern. Das Speichern von Dienstkontoschlüsseln in Kubernetes-Secrets erhöht die Sicherheit und vereinfacht die Verwaltung in Ihrer Kubernetes-Umgebung. Wenn Sie Schlüssel in Secrets speichern, müssen Sie sie nicht im Dateisystem speichern.
Dienstkonten
Hybrid verwendet die folgenden Dienstkonten:
Produktion
apigee-cassandra
(erforderlich für Cassandra-Sicherungen und ‑Wiederherstellungen in Google Cloud Storage)apigee-logger
apigee-mart
apigee-metrics
apigee-mint-task-scheduler
(wenn Sie die Monetarisierung für Apigee Hybrid verwenden)apigee-runtime
apigee-synchronizer
apigee-udca
apigee-watcher
Non-prod
apigee-non-prod
Hinweise
In diesem Verfahren werden zwei optionale Umgebungsvariablen verwendet: $APIGEE_HELM_CHARTS_HOME
und $PROJECT_ID
. Wenn Sie diese Variablen nicht definieren, ersetzen Sie in den Codebeispielen den entsprechenden Wert für jede Variable.
- Erstellen Sie ein Verzeichnis für die Dienstkontoschlüssel im Verzeichnis
$APIGEE_HELM_CHARTS_HOME
:mkdir -p $APIGEE_HELM_CHARTS_HOME/service-accounts
- Prüfen Sie, ob Sie das Tool
create-service-account
ausführen können. Wenn Sie die Diagramme vor Kurzem heruntergeladen haben, befindet sich die Dateicreate-service-account
möglicherweise nicht in einem ausführbaren Modus. Führen Sie im Verzeichnis$APIGEE_HELM_CHARTS_HOME
den folgenden Befehl aus:$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --help
Wenn in der Ausgabe ein Fehler vom Typ „Permission denied“ (Berechtigung verweigert) angezeigt wird, machen Sie die Datei ausführbar. Verwenden Sie beispielsweise
chmod
unter Linux, macOS oder UNIX:chmod +x $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account
Erstellen Sie Dienstkontoschlüssel.
Erstellen oder aktualisieren Sie die Dienstkonten und laden Sie die Schlüsseldateien mit dem create-service-account
-Tool herunter. Bei dieser Aktion wird für jedes Dienstkonto eine JSON-Datei heruntergeladen.
Die Dateinamen der Dienstkontoschlüssel haben das folgende Format:
$PROJECT_ID-apigee-SERVICE_ACCOUNT_NAME.json
Produktion
$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --env prod \ --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
Non-prod
$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --env non-prod \ --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
Kubernetes-Secrets erstellen
Erstellen Sie die Kubernetes-Secrets zum Speichern der Dienstkontoschlüssel.
Der Befehl kubectl create secret
in den folgenden Codebeispielen hat die Struktur:
kubectl create secret generic SECRET_NAME \ --from-file="client_secret.json=PATH_TO_SERVICE_ACCOUNT_KEY" \ -n APIGEE_NAMESPACE
Produktion
Erstellen Sie die Secrets mit den folgenden Befehlen:
-
apigee-cassandra
(wenn Back-ups in Cloud Storage geplant sind)kubectl create secret generic apigee-cassandra-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-cassandra.json" \ -n APIGEE_NAMESPACE
-
apigee-logger
kubectl create secret generic apigee-logger-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-logger.json" \ -n APIGEE_NAMESPACE
-
apigee-mart
kubectl create secret generic apigee-mart-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-mart.json" \ -n APIGEE_NAMESPACE
-
apigee-metrics
kubectl create secret generic apigee-metrics-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-metrics.json" \ -n APIGEE_NAMESPACE
-
apigee-mint-task-scheduler
(wenn Sie die Monetarisierung für Apigee Hybrid verwenden)kubectl create secret generic apigee-mint-task-scheduler-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-mint-task-scheduler.json" \ -n APIGEE_NAMESPACE
-
apigee-runtime
kubectl create secret generic apigee-runtime-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-runtime.json" \ -n APIGEE_NAMESPACE
-
apigee-synchronizer
kubectl create secret generic apigee-synchronizer-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-synchronizer.json" \ -n APIGEE_NAMESPACE
-
apigee-udca
kubectl create secret generic apigee-udca-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-udca.json" \ -n APIGEE_NAMESPACE
-
apigee-watcher
kubectl create secret generic apigee-watcher-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-watcher.json" \ -n APIGEE_NAMESPACE
Non-prod
kubectl create secret generic apigee-non-prod-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-non-prod.json" \ -n APIGEE_NAMESPACE
Dienstkontoschlüssel in der Konfiguration referenzieren
Nachdem Sie Dienstkontoschlüssel als Kubernetes-Secrets gespeichert haben, aktualisieren Sie die overrides.yaml
-Datei von Hybrid, damit auf diese Secrets anstelle von direkten Dateipfaden verwiesen wird. Ändern Sie die entsprechenden serviceAccountPath
-Attribute, um serviceAccountSecretRef
zu verwenden.
Verwenden Sie die folgenden serviceAccountSecretRefs
- und serviceAccountRef
-Konfigurationen in den entsprechenden Abschnitten Ihres overrides.yaml
:
Produktion
envs: - name: test serviceAccountSecretRefs: synchronizer: apigee-synchronizer-svc-account runtime: apigee-runtime-svc-account udca: apigee-udca-svc-account mart: serviceAccountRef: apigee-mart-svc-account # Use the same service account for mart.serviceAccountRef and connectAgent.serviceAccountRef connectAgent: serviceAccountRef: apigee-mart-svc-account # Use the same service account for mart.serviceAccountRef and connectAgent.serviceAccountRef logger: serviceAccountRef: apigee-logger-svc-account metrics: serviceAccountRef: apigee-metrics-svc-account udca: serviceAccountRef: apigee-udca-svc-account watcher: serviceAccountRef: apigee-watcher-svc-account # If Scheduling backups in Cloud Storage cassandra: backup: serviceAccountRef: apigee-cassandra-svc-account # If using Monetization for Apigee hybrid mintTaskScheduler: serviceAccountRef: apigee-mint-task-scheduler-svc-account
Non-prod
envs: - name: test-env serviceAccountSecretRefs: synchronizer: apigee-non-prod-svc-account runtime: apigee-non-prod-svc-account udca: apigee-non-prod-svc-account mart: serviceAccountRef: apigee-non-prod-svc-account connectAgent: serviceAccountRef: apigee-non-prod-svc-account logger: serviceAccountRef: apigee-non-prod-svc-account metrics: serviceAccountRef: apigee-non-prod-svc-account udca: serviceAccountRef: apigee-non-prod-svc-account watcher: serviceAccountRef: apigee-non-prod-svc-account # If Scheduling backups in Cloud Storage cassandra: backup: serviceAccountRef: apigee-non-prod-svc-account # If using Monetization for Apigee hybrid mintTaskScheduler: serviceAccountRef: apigee-non-prod-svc-account
Konfigurationsänderungen anwenden
Wenden Sie die Änderungen mit den folgenden Befehlen auf die Diagramme apigee-telemetry
, apigee-org
und apigee-env
an:
-
Aktualisieren Sie die Apigee-Telemetrie:
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
-
Führen Sie ein Upgrade der Apigee-Organisation durch:
helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
-
Führen Sie einen Upgrade für die Umgebung aus.
Geben Sie die Umgebung mit
--set env=
ENV_NAME an. Wiederholen Sie diesen Befehl für jede Umgebung.helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE
Nächste Schritte
- Weitere Informationen zu Hybrid-Dienstkonten und -Rollen
- Weitere Informationen finden Sie im Abschnitt Dienstkonten erstellen der Hybrid-Installationsanleitung.