Ingress for Anthos einrichten

Auf dieser Seite wird gezeigt, wie Sie Ingress for Anthos konfigurieren, um Traffic über mehrere Cluster in verschiedenen Regionen weiterzuleiten. Ingress for Anthos (Ingress) ist ein in der Cloud gehosteter Multi-Cluster-Ingress-Controller für Anthos-Cluster. Dieser von Google gehostete Dienst unterstützt das Deployment freigegebener Load-Balancing-Ressourcen in mehreren Clustern und Regionen.

Weitere Informationen zur Funktionsweise von Ingress for Anthos finden Sie unter Ingress for Anthos. Informationen zur Funktionsweise des externen HTTP(S)-Load-Balancers erhalten Sie unter Externes HTTP(S)-Load-Balancing.

Anforderungen von Ingress for Anthos

Ingress for Anthos wird für folgende Cluster unterstützt:

  • GKE-Cluster in Google Cloud. Lokale GKE-Cluster werden derzeit nicht unterstützt.
  • GKE-Cluster in allen Releasekanälen von GKE.
  • Cluster im VPC-nativen Modus (Alias-IP). Weitere Informationen finden Sie unter VPC-nativen Cluster erstellen.
  • Cluster mit aktiviertem HTTP-Load Balancing, das standardmäßig aktiviert ist. Beachten Sie, dass Ingress for Anthos nur den externen HTTP(S) -Load-Balancer unterstützt.

Darüber hinaus erfordert Ingress for Anthos das Cloud SDK Version 190 oder höher (gcloud --version), damit Sie Ihre Cluster registrieren können.

Vorbereitung

Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:

Mit den folgenden Methoden können Sie die gcloud-Einstellungen festlegen:

  • Verwenden Sie gcloud init, wenn Sie die Standardeinstellungen ansehen möchten.
  • Verwenden Sie gcloud config, um Ihre Projekt-ID, Zone und Region individuell festzulegen.

gcloud init verwenden

Wenn Sie die Fehlermeldung One of [--zone, --region] must be supplied: Please specify location erhalten, führen Sie diesen Abschnitt aus.

  1. Führen Sie gcloud init aus und folgen Sie der Anleitung:

    gcloud init

    Wenn Sie SSH auf einem Remote-Server verwenden, können Sie mit dem Flag --console-only verhindern, dass mit dem Befehl ein Browserfenster geöffnet wird:

    gcloud init --console-only
  2. Folgen Sie der Anleitung, um gcloud zur Verwendung Ihres Google Cloud-Kontos zu autorisieren.
  3. Erstellen Sie eine neue Konfiguration oder wählen Sie eine vorhandene aus.
  4. Wählen Sie ein Google Cloud-Projekt aus.
  5. Wählen Sie eine Compute Engine-Standardzone aus.

gcloud config verwenden

  • Legen Sie Ihre standardmäßige Projekt-ID fest:
    gcloud config set project project-id
  • Wenn Sie mit zonalen Clustern arbeiten, legen Sie die Compute-Standardzone fest:
    gcloud config set compute/zone compute-zone
  • Wenn Sie mit regionalen Clustern arbeiten, legen Sie die Standardregion für Compute Engine fest:
    gcloud config set compute/region compute-region
  • Aktualisieren Sie gcloud auf die neueste Version:
    gcloud components update
  • Aktivieren Sie in Ihrem Projekt die environ API:

    gcloud services enable gkehub.googleapis.com
    
  • Aktivieren Sie die Anthos API in Ihrem Projekt:

    gcloud services enable anthos.googleapis.com
    
  • Aktivieren Sie die Ingress for Anthos API in Ihrem Projekt:

    gcloud services enable multiclusteringress.googleapis.com
    
  • Damit Sie Ingress for Anthos verwenden können, muss für Ihre Cluster der VPC-native Modus aktiviert sein. Ingress for Anthos verwendet Netzwerk-Endpunktgruppen (NEGs), um Back-Ends für den HTTP(S)-Load-Balancer zu erstellen. Wenn sich Ihre vorhandenen Cluster nicht im VPC-nativen Modus befinden, löschen Sie die Cluster und erstellen Sie sie neu. Geben Sie dabei mithilfe des Flags --enable-ip-alias an, dass der VPC-native Modus aktiviert ist.

Umgebung vorbereiten

Cluster erstellen

In diesem Beispiel werden die folgenden Cluster verwendet:

NAME      LOCATION
gke-eu    europe-west1-c
gke-us    us-central1-a
  1. Erstellen Sie den gke-eu-Cluster:

    gcloud container clusters create gke-eu --zone europe-west1-c \
      --release-channel stable --enable-ip-alias
    
  2. Erstellen Sie den gke-us-Cluster:

    gcloud container clusters create gke-us --zone us-central1-a \
      --release-channel stable --enable-ip-alias
    

Cluster registrieren

Mit Connect können Sie Ihre Kubernetes-Cluster in Hybridumgebungen nutzen. Jeder Cluster muss als Mitglied einer Umgebung registriert sein. Weitere Informationen finden Sie unter Ingress for Anthos-Architektur.

  1. Prüfen Sie, ob die Voraussetzungen für die Registrierung eines Clusters erfüllt sind.

  2. Prüfen Sie, ob ein Dienstkonto erstellt und der zugehörige private Schlüssel heruntergeladen wurde.

  3. Suchen Sie die URIs für Ihre Cluster:

    gcloud container clusters list --uri
    
  4. Registrieren Sie den gke-eu-Cluster:

    gcloud container hub memberships register gke-eu \
        --project=project-id \
        --gke-uri=uri \
        --service-account-key-file=service-account-key-path
    

    Dabei gilt:

    • project-id ist die Projekt-ID.
    • uri ist der URI des GKE-Clusters.
    • service-account-key-path ist der lokale Dateipfad zur JSON-Datei mit dem privaten Schlüssel des Dienstkontos, die im Rahmen der Registrierungsvoraussetzungen heruntergeladen wurde. Dieser Dienstkontoschlüssel wird als Secret mit dem Namen creds-gcp im Namespace "gke-connect" gespeichert.
  5. Registrieren Sie den gke-us-Cluster:

    gcloud container hub memberships register gke-us \
        --project=project-id \
        --gke-uri=uri \
        --service-account-key-file=service-account-key-path
    
  6. Prüfen Sie, ob Ihre Cluster registriert sind:

    gcloud container hub memberships list
    

    Die Ausgabe sollte ungefähr so aussehen:

    NAME                                  EXTERNAL_ID
    gke-us                                0375c958-38af-11ea-abe9-42010a800191
    gke-eu                                d3278b78-38ad-11ea-a846-42010a840114
    

Konfigurationscluster festlegen

Der Konfigurationscluster ist ein GKE-Cluster, den Sie als zentralen Kontrollpunkt für Ingress in den Mitgliedsclustern festlegen. Im Gegensatz zu GKE Ingress befindet sich der Anthos Ingress-Controller nicht in einem einzelnen Cluster. Dieser Controller ist ein von Google verwalteter Dienst, der Ressourcen im Konfigurationscluster überwacht. Dieser GKE-Cluster wird als Multi-Cluster-API-Server zum Speichern von Ressourcen wie MultiClusterIngress und MultiClusterService verwendet. Jeder Mitgliedscluster kann zu einem Konfigurationscluster werden. Es kann aber immer nur jeweils nur ein Konfigurationscluster vorhanden sein.

Weitere Informationen zu Konfigurationsclustern finden Sie unter Konfigurationsclusterdesign.

Wenn der Konfigurationscluster nicht aktiv ist oder nicht darauf zugegriffen werden kann, können die Objekte MultiClusterIngress und MultiClusterService in den Mitgliedsclustern nicht aktualisiert werden. Load-Balancer und Traffic können im Falle eines Ausfalls weiterhin unabhängig vom Konfigurationscluster funktionieren.

Die Aktivierung von Ingress for Anthos und die Auswahl des Konfigurationsclusters erfolgen im selben Schritt. Der GKE-Cluster, den Sie als Konfigurationscluster auswählen, muss bereits für eine Umgebung registriert sein.

  1. Ermitteln Sie den URI des Clusters, den Sie als Konfigurationscluster angeben möchten:

    gcloud container hub memberships list
    

    Die Ausgabe sieht etwa so aus:

    NAME                                  EXTERNAL_ID
    gke-us                                0375c958-38af-11ea-abe9-42010a800191
    gke-eu                                d3278b78-38ad-11ea-a846-42010a840114
    
  2. Aktivieren Sie Ingress for Anthos und wählen Sie gke-us als Konfigurationscluster aus:

    gcloud alpha container hub ingress enable \
      --config-membership=projects/project_id/locations/global/memberships/gke-us
    

    Die Ausgabe sieht etwa so aus:

    Waiting for Feature to be created...done.
    

    Beachten Sie, dass dieser Vorgang einige Minuten dauern kann, während das Bootstrapping für den Controller durchgeführt wird. Bei Erfolg sieht die Ausgabe etwa so aus:

    Waiting for Feature to be created...done.
    Waiting for controller to start...done.
    

    Wenn der Vorgang fehlschlägt, kommt es zu einer Zeitüberschreitung des Befehls wie hier:

    Waiting for controller to start...failed.
    ERROR: (gcloud.alpha.container.hub.ingress.enable) Controller did not start in 2 minutes. Please use the `describe` command to check Feature state for debugging information.
    

    Wenn im vorherigen Schritt kein Fehler aufgetreten ist, fahren Sie mit den nächsten Schritten fort. Wenn im vorherigen Schritt ein Fehler aufgetreten ist, überprüfen Sie den Funktionsstatus. In diesem Status sollte der Fehler detaillierter beschrieben sein.

    gcloud alpha container hub ingress describe
    

    Hier ist ein Beispiel für einen Fehlerstatus:

    featureState:
      detailsByMembership:
        projects/393818921412/locations/global/memberships/0375c958-38af-11ea-abe9-42010a800191:
          code: FAILED,
          description: "... is not a VPC-native cluster..."
    lifecycleState: ENABLED
    multiclusteringressFeatureSpec:
      configMembership: projects/project_id/locations/global/memberships/0375c958-38af-11ea-abe9-42010a800191
    name: projects/project_id/locations/global/features/multiclusteringress
    updateTime: '2020-01-22T19:16:51.172840703Z'
    

    Weitere Informationen zu solchen Fehlermeldungen finden Sie unter Fehlerbehebung und Betrieb.

Freigegebene VPC bereitstellen

Ingress for Anthos kann für Cluster in einem freigegebenen VPC-Netzwerk bereitgestellt werden. Dafür müssen sich alle zugehörigen GKE-Back-End-Cluster im selben Projekt befinden. GKE-Cluster in verschiedenen Projekten mit derselben Cloud Load Balancing-VIP werden nicht unterstützt.

In nicht freigegebenen VPC-Netzwerken verwaltet der Ingress for Anthos-Controller Firewallregeln, damit Systemdiagnosen von Cloud Load Balancing an Containerarbeitslasten übergeben werden können.

In einem freigegebenen VPC-Netzwerk kann Ingress for Anthos diese Firewallregeln nicht verwalten. Hier wird die Firewall vom Hostprojekt verwaltet, auf das Dienstprojektadministratoren keinen Zugriff haben. Im zentralisierten Sicherheitsmodell von freigegebenen VPC-Netzwerken erfolgt die Netzwerksteuerung bewusst zentral. In freigegebenen VPC-Netzwerken muss ein Hostprojektadministrator die erforderlichen Firewallregeln zum Cloud Load Balancing-Traffic für Ingress for Anthos manuell erstellen.

Der folgende Befehl zeigt die Firewallregel, die Sie erstellen müssen, wenn sich Ihre Cluster in einem freigegebenen VPC-Netzwerk befinden. Die Quellbereiche sind die Bereiche, über die Cloud Load Balancing Traffic an Back-Ends in Google Cloud sendet. Diese Regel muss für die Betriebsdauer von Ingress for Anthos gelten. Sie kann nur entfernt werden, wenn Ingress for Anthos oder Cloud Load Balancing nicht mehr für das GKE-Load-Balancing verwendet wird.

  • Wenn sich Ihre Cluster in einem freigegebenen VPC-Netzwerk befinden, erstellen Sie die Firewallregel:

    gcloud compute firewall-rules create firewall-rule-name \
        --project host-project \
        --network shared-vpc \
        --direction INGRESS \
        --allow tcp:0-65535 \
        --source-ranges 130.211.0.0/22,35.191.0.0/16
    

Nächste Schritte