Dienstkontoschlüssel in Kubernetes-Secrets speichern

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

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.

  1. Erstellen Sie ein Verzeichnis für die Dienstkontoschlüssel im Verzeichnis $APIGEE_HELM_CHARTS_HOME:
    mkdir -p $APIGEE_HELM_CHARTS_HOME/service-accounts
  2. 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 Datei create-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:

  1. Aktualisieren Sie die Apigee-Telemetrie:
    helm upgrade telemetry apigee-telemetry/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE
    
  2. Führen Sie ein Upgrade der Apigee-Organisation durch:
    helm upgrade ORG_NAME apigee-org/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE
    
  3. 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