Schritt 4: Dienstkonten erstellen

In diesem Schritt wird erläutert, wie Sie die Google Cloud-Dienstkonten erstellen, die für das Funktionieren von Apigee Hybrid erforderlich sind.

Übersicht

Apigee Hybrid verwendet Google Cloud-Dienstkonten, um die Kommunikation zwischen Hybrid-Komponenten über autorisierte API-Aufrufe zu ermöglichen.

Produktions- und Nicht-Produktionsumgebungen

Dieser Leitfaden bezieht sich auf Produktions- („Prod“) und Nicht-Produktionsinstallationen („Non-prod“). Eine Produktionsinstallation ist auf höhere Nutzungskapazität, Speicher und Skalierbarkeit ausgelegt. Eine Nicht-Produktionsinstallation verwendet weniger Ressourcen und dient hauptsächlich zu Lern- und Demonstrationszwecken.

Wenn Sie Dienstkonten für Apigee Hybrid erstellen und konfigurieren, müssen Sie die Art der Installation berücksichtigen, auf die Sie abzielen.

Für Produktionsinstallationen empfehlen wir, für jede Apigee Hybrid-Komponente ein separates Dienstkonto zu erstellen. Beispielsweise erhalten Laufzeit, MART, Messwerte, UDCA usw. jeweils ein eigenes Dienstkonto.

Für Nicht-Produktionsinstallationen können Sie ein einzelnes Dienstkonto erstellen, das für alle Komponenten gilt.

Weitere Informationen zu den von Apigee verwendeten Dienstkonten und den ihnen zugewiesenen Rollen finden Sie unter Dienstkonten und Rollen, die von Hybrid-Komponenten verwendet werden.

Workload Identity in GKE

Für Apigee Hybrid-Installationen in GKE bietet Google Cloud eine Option namens Workload Identity zur Authentifizierung von Hybrid-Laufzeitkomponenten. Bei dieser Option werden keine heruntergeladene Zertifikatsdateien verwendet, um die Dienstkonten zu authentifizieren. Stattdessen werden die in diesem Schritt erstellten Google Cloud-Dienstkonten den Kubernetes-Dienstkonten im Kubernetes-Cluster zugeordnet.

Workload Identity ist nur bei GKE-Installationen verfügbar.

Dienstkonten erstellen

Gehen Sie folgendermaßen vor, um die Google Cloud-Dienstkonten für Ihre Hybridinstallation zu erstellen:

  • Das Tool create-service-account: Wenn Sie Apigee Hybrid auf einer anderen Plattform als GKE installieren oder wenn Sie es auf GKE installieren, aber keine Workload Identity verwenden möchten, verwenden Sie das von Apigee bereitgestellte Tool create-service-account, um die Dienstkonten zu erstellen, die Rollen den Dienstkonten zuzuweisen und die Schlüsseldateien für das Dienstkonto in einem einzigen Befehl zu erstellen und herunterzuladen. Folgen Sie den Schritten unter
    Dienstkonten mit create-service-account erstellen.
  • Google Cloud Console oder gcloud: Wenn Sie Apigee Hybrid auf GKE installieren und planen, die Workload Identity zu verwenden, verwenden Sie die Google Cloud Console oder gcloud, um die Dienstkonten zu erstellen, ohne die Zertifikatsdateien herunterzuladen. Folgen Sie den Schritten unter
    Dienstkonten in der Google Cloud Console oder mit gcloud erstellen.

Dienstkonten mit create-service-account erstellen

In folgenden Fällen sollten Sie das Tool create-service-account verwenden:

  • Sie führen die Installation auf einer anderen Plattform als GKE aus
  • Sie führen die Installation auf GKE aus, verwenden jedoch keine Workload Identity.

Andernfalls fahren Sie mit Dienstkonten in der Google Cloud Console oder mit gcloud erstellen fort.

  1. Achten Sie darauf, dass die Umgebungsvariablen HYBRID_SETUP und PROJECT_ID festgelegt sind.

    PROJECT_ID muss auf Ihre Google Cloud-Projekt-ID eingestellt sein, da das create-service-account-Tool die Umgebungsvariable PROJECT_ID liest, um die Dienstkonten im richtigen Projekt zu erstellen.

    echo $HYBRID_FILES
    echo $PROJECT_ID
  2. Erstellen Sie das Dienstkonto mit dem folgenden Befehl:

    Non-prod

    Mit diesem Befehl wird ein einzelnes Dienstkonto mit dem Namen apigee-non-prod für die Verwendung in einer Nicht-Produktionsinstallation erstellt. Außerdem wird die Schlüsseldatei für das Dienstkonto in das Verzeichnis $HYBRID_FILES/service-accounts heruntergeladen.

    $HYBRID_FILES/tools/create-service-account --env non-prod --dir $HYBRID_FILES/service-accounts

    Produktion

    Mit diesem Befehl werden alle einzelnen Dienstkonten für eine Produktionsinstallation erstellt und die Schlüsseldateien für die Dienstkonten in das Verzeichnis $HYBRID_FILES/service-accounts heruntergeladen.

    $HYBRID_FILES/tools/create-service-account --env prod --dir $HYBRID_FILES/service-accounts

    Wenn die folgende Eingabeaufforderung angezeigt wird, geben Sie y ein:

    [INFO]: gcloud configured project ID is project_id.
     Enter: y to proceed with creating service account in project: project_id
     Enter: n to abort.

    Wenn Sie zum ersten Mal ein bestimmtes Dienstkonto erstellen, wird es vom Tool ohne weitere Aufforderungen erstellt.

    Wenn jedoch die folgende Meldung und Eingabeaufforderung angezeigt wird, geben Sie y ein, um neue Schlüssel zu generieren:

    [INFO]: Service account apigee-non-prod@project_id.iam.gserviceaccount.com already exists.
    ...
     [INFO]: The service account might have keys associated with it. It is recommended to use existing keys.
     Press: y to generate new keys.(this does not deactivate existing keys)
     Press: n to skip generating new keys.
  3. Prüfen Sie mit dem folgenden Befehl, ob der Dienstkontoschlüssel erstellt wurde. Sie sind dafür verantwortlich, diese privaten Schlüssel sicher zu speichern. Den Schlüsselnamen ist der Name Ihres Google Cloud-Projekts vorangestellt.
    ls $HYBRID_FILES/service-accounts

    Das Ergebnis sollte ungefähr so aussehen:

    project_id-apigee-non-prod.json

Dienstkonten in der Google Cloud Console oder mit gcloud erstellen

Wenn Sie Workload Identity in GKE zur Authentifizierung von Hybridlaufzeitkomponenten verwenden möchten, müssen Sie keine Zertifikatsdateien für die Dienstkonten erstellen und herunterladen. Verwenden Sie daher nicht das Tool create-service-account. Erstellen Sie stattdessen die Dienstkonten in der Google Cloud Console oder mit der IAM API in gcloud.

Andernfalls fahren Sie mit Dienstkonten mit create-service-account erstellen fort.

Console

Folgen Sie der Anleitung unter Dienstkonten erstellen, um die folgenden Dienstkonten zu erstellen und ihnen die folgenden Rollen zuzuweisen:

Non-prod

Für Nicht-Produktionsinstallationen:

Name des Dienstkontos IAM-Rollen
apigee-non-prod
  • Apigee Analytics-Agent
  • Apigee Connect Agent
  • Apigee-Laufzeit-Agent
  • Apigee Synchronizer Manager
  • Log-Autor
  • Monitoring-Messwert-Autor
  • Storage-Objekt-Administrator

Produktion

Für Produktionsinstallationen:

Produktionsinstallationen
Name des Dienstkontos IAM-Rollen
apigee-cassandra Storage-Objekt-Administrator
apigee-logger Log-Autor
apigee-mart Apigee Connect Agent
apigee-metrics Monitoring-Messwert-Autor
apigee-runtime Keine Rolle erforderlich
apigee-synchronizer Apigee Synchronizer Manager
apigee-udca Apigee Analytics-Agent
apigee-watcher Apigee-Laufzeit-Agent

gcloud

Verwenden Sie die folgenden Befehle, um die Dienstkonten zu erstellen und die IAM-Rollen zuzuweisen.

Non-prod

Für Nicht-Produktionsinstallationen:

  1. Erstellen Sie das Dienstkonto apigee-non-prod:
    gcloud iam service-accounts create apigee-non-prod \
      --display-name="apigee-non-prod" \
      --project=$PROJECT_ID
  2. Weisen Sie dem Dienstkonto die IAM-Rollen zu:
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/storage.objectAdmin"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigeeconnect.Agent"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/monitoring.metricWriter"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.synchronizerManager"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.analyticsAgent"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.runtimeAgent"
  3. Prüfen Sie die Rollenbindungen:
    gcloud projects get-iam-policy ${PROJECT_ID} \
      --flatten="bindings[].members" \
      --format='table(bindings.role)' \
      --filter="bindings.members:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com"

Produktion

Für Produktionsinstallationen:

Verwenden Sie die folgenden Befehle, um jedes Dienstkonto zu erstellen und die entsprechende IAM-Rolle zuzuweisen.

  1. Dienstkonto apigee-cassandra:
    gcloud iam service-accounts create apigee-cassandra \
      --display-name="apigee-cassandra" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-cassandra@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/storage.objectAdmin"
  2. Dienstkonto apigee-logger:
    gcloud iam service-accounts create apigee-logger \
      --display-name="apigee-logger" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-logger@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"
  3. Dienstkonto apigee-mart:
    gcloud iam service-accounts create apigee-mart \
      --display-name="apigee-mart" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-mart@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigeeconnect.Agent"
  4. Dienstkonto apigee-metrics:
    gcloud iam service-accounts create apigee-metrics \
      --display-name="apigee-metrics" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-metrics@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/monitoring.metricWriter"
  5. Dienstkonto apigee-runtime:
    gcloud iam service-accounts create apigee-runtime \
      --display-name="apigee-runtime" \
      --project=$PROJECT_ID
  6. Dienstkonto apigee-synchronizer:
    gcloud iam service-accounts create apigee-synchronizer \
      --display-name="apigee-synchronizer" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-synchronizer@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.synchronizerManager"
  7. Dienstkonto apigee-udca:
    gcloud iam service-accounts create apigee-udca \
      --display-name="apigee-udca" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-udca@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.analyticsAgent"
  8. Dienstkonto apigee-watcher:
    gcloud iam service-accounts create apigee-watcher \
      --display-name="apigee-watcher" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-watcher@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.runtimeAgent"

Weitere Informationen zum Erstellen von Dienstkonten mit gcloud finden Sie unter Dienstkonten erstellen.

Sie haben jetzt Dienstkonten erstellt und die Rollen zugewiesen, die die Apigee Hybrid-Komponenten benötigen. Im nächsten Schritt erstellen Sie die für das Hybrid-Ingress-Gateway erforderlichen TLS-Zertifikate.

1 2 3 4 (WEITER) Schritt 5: TLS-Zertifikate erstellen 6 7 8 9 10