HTTP-Proxy verwenden

In diesem Dokument wird beschrieben, wie Sie Traffic von GKE on AWS über einen HTTP-/HTTPS-Proxy weiterleiten. Sie geben die Proxykonfiguration beim Erstellen eines Clusters an.

Übersicht

GKE on AWS kann aus folgenden Gründen ausgehenden Internettraffic über einen Proxy weiterleiten:

  • Cluster bei Google Cloud über Connect registrieren
  • Zum Ausführen des Connect-Agents
  • Zum Herunterladen von Images aus Container Registry

Beschränkungen

  • Die Felder httpProxy und httpsProxy unterstützen keine URLs, die mit https:// beginnen. Sie müssen http:// verwenden. Anfragen an Port 443 verwenden HTTPS.
  • Sie müssen Werte für httpProxy, httpsProxy und noProxy festlegen.
  • Möglicherweise müssen Sie zusätzliche Domains, IP-Adressen oder CIDRs in das Feld noProxy einfügen. Wir empfehlen, den VPC-IP-Bereich hinzuzufügen. Ab Google Kubernetes Engine-Version 1.22 fügt GKE on AWS die Pod-Adresse-CIDR und die Dienstadresse-CIDR automatisch hinzu.

Vorbereitung

In diesem Abschnitt werden die Voraussetzungen beschrieben, die Sie vor der Verwendung eines Proxys erfüllen müssen.

VPC-Endpunkte aktivieren

Bevor Sie einen Proxy konfigurieren, müssen Sie VPC-Endpunkte für Ihre GKE on AWS-Installation erstellen.

Über VPC-Endpunkte können Ressourcen in privaten Subnetzen ohne öffentlichen Internetzugang auf AWS-Dienste zugreifen.

In der folgenden Tabelle sind die AWS-Dienste aufgeführt, für die GKE on AWS VPC-Endpunkte benötigt, sowie den Typ des Endpunkts und die Sicherheitsgruppen, die Zugriff auf den Endpunkt erfordern.

Dienst Endpunkttyp Sicherheitsgruppen
Automatische Skalierung Schnittstelle Steuerungsebene, Knotenpools
EC2 Schnittstelle Steuerungsebene, Knotenpools
EFS Schnittstelle Steuerungsebene
Lastenausgleich Schnittstelle Steuerungsebene, Knotenpools
Key Management Service Schnittstelle Steuerungsebene, Knotenpools
S3 Gateway Steuerungsebene, Knotenpools
Secret Manager Schnittstelle Steuerungsebene, Knotenpools
Security Token Service (STS) Schnittstelle Steuerungsebene, Knotenpools

Sie können Endpunkte über die AWS-VPC-Konsole erstellen. Die Optionen, die Sie beim Erstellen von VPC-Endpunkten festlegen, sind von Ihrer VPC-Konfiguration abhängig.

Sicherheitsgruppe definieren

GKE on AWS muss eine Verbindung zum Proxyserver herstellen können, um Softwarekomponenten herunterzuladen. Erstellen oder suchen Sie eine AWS-Sicherheitsgruppe, die ausgehende Verbindungen zu Ihrem Proxyserver zulässt. Die Sicherheitsgruppe sollte ausgehenden Zugriff von Ihren Steuerungsebenen- und Knotenpool-Sicherheitsgruppen auf die Proxy-Adresse und den Port zulassen. Speichern Sie die ID dieser Sicherheitsgruppe (z. B. sg-12345678).

Typ Protokoll Vom Port Zum Port Adresse
Ausgehend TCP Proxy-Port: Proxy-Port: Proxy-Sicherheitsgruppe

Proxy-Zulassungsliste

Damit GKE on AWS eine Verbindung zu Google Cloud-Diensten herstellen kann, muss der Proxyserver Traffic zu den folgenden Domains zulassen.

.gcr.io
cloudresourcemanager.googleapis.com
container.googleapis.com
gkeconnect.googleapis.com
gkehub.googleapis.com
oauth2.googleapis.com
securetoken.googleapis.com
storage.googleapis.com
sts.googleapis.com
www.googleapis.com
servicecontrol.googleapis.com
logging.googleapis.com
monitoring.googleapis.com
opsconfigmonitoring.googleapis.com
GCP_LOCATION-gkemulticloud.googleapis.com

Ersetzen Sie GCP_LOCATION durch die Google Cloud Region, in der sich Ihr GKE Enterprise-Cluster befindet. Geben Sie us-west1 oder eine andere unterstützte Region an.

AWS-IAM-Rollen aktualisieren

Damit GKE on AWS die Proxykonfiguration von AWS Secrets Manager lesen kann, müssen Sie den secretsmanager:GetSecretValue zur Rolle der Steuerungsebene und zur Knotenpoolrolle hinzufügen.

Wenn Sie diese Berechtigung hinzufügen möchten, fügen Sie sie der Richtlinie für die Steuerungsebene und die Knotenpoolrichtlinie hinzu. Weitere Informationen finden Sie unter IAM-Richtlinien bearbeiten.

Proxy-Konfigurationsdatei erstellen

Die Proxykonfiguration wird in einem AWS Secrets Manager-Secret als JSON-String gespeichert. Sie können diese Konfiguration als Datei an das aws-Befehlszeilentool übergeben. In diesem Abschnitt wird beschrieben, wie Sie diese Datei erstellen.

In der folgenden Tabelle wird der Inhalt dieser Datei beschrieben.

Feld Beschreibung Beispiele Erforderlich
httpProxy Eine Proxyserver-URL. Der Wert sollte einen Hostnamen/eine IP-Adresse und optional einen Port, einen Nutzernamen und ein Passwort enthalten. "http://user:password@10.184.37.42:80"
"10.184.37.42"
Ja
httpsProxy Eine Proxy-URL für verschlüsselten HTTPS-Traffic. Die HTTP-Proxy-URL wird verwendet, wenn httpsProxy einen leeren Wert hat. "http://10.101.16.31:80" Ja
noProxy Eine durch Kommas getrennte Liste von URLs, die vom Proxy ausgeschlossen werden sollen. Jeder Wert kann eine IP-Adresse, ein CIDR-Bereich, ein Domainname oder das Sternchen (*) sein. Domains, die mit einem führenden Punkt angegeben werden (z. B. ".google.com") geben an, dass eine Subdomain erforderlich ist. Ein einzelnes Sternchen * ignoriert die gesamte Proxykonfiguration. "1.2.3.4,10.0.0.0/16,example.com,.site.com" Ja
  1. Zum Erstellen der Konfigurationsdatei erstellen Sie eine JSON-Datei, die Werte für httpProxy, noProxy und optionale httpsProxy-Schlüssel enthält.

    {
      "httpProxy": "AUTHENTICATION_URL",
      "httpsProxy": "AUTHENTICATION_URL",
      "noProxy": "NO_PROXY_ADDRESSES"
    }
    

    Dabei gilt:

    • AUTHENTICATION_URL: codierte URL, die den Proxy-Nutzernamen und das Passwort enthält
    • NO_PROXY_ADDRESSES: durch Kommas getrennte Liste von CIDR-Blöcken und URLs, z. B. 10.0.0.0/16,http://example.com

    Speichern Sie die Datei, die Sie im folgenden Abschnitt verwenden möchten.

  2. Erstellen Sie mit dem aws-Befehlszeilentool ein Secret mit diesen JSON-Daten als Secret in AWS Secret Manager.

    aws secretsmanager create-secret \
    --name SECRET_NAME \
    --secret-string file://PROXY_CONFIGURATION_FILE
    

    Dabei gilt:

    • SECRET_NAME: der Name des neuen Secrets.
    • PROXY_CONFIGURATION_FILE: der Pfad zur Proxy-Konfigurationsdatei.

    Die Ausgabe enthält den Amazon-Ressourcennamen (ARN) und den Inhalt des Secrets. Sie können jetzt beim Erstellen eines Clusters auf dieses Secret verweisen.

Cluster für Verwendung durch einen Proxy erstellen

Führen Sie die folgenden Schritte aus, um GKE on AWS für die Verwendung eines HTTP-Proxys für ausgehende Konnektivität zu konfigurieren:

Führen Sie die Schritte unter Cluster erstellen aus und übergeben Sie die Flags proxy-secret-arn und proxy-secret-version-id.

gcloud container aws clusters create CLUSTER_NAME \
  --proxy-secret-arn=PROXY_SECRET_ARN \
  --proxy-secret-version-id=PROXY_SECRET_VERSION \

Dabei gilt:

  • CLUSTER_NAME: der Name des Clusters
  • PROXY_SECRET_ARN: Der ARN des Secrets, das Proxyeinstellungen enthält, z. B. arn:aws::secretsmanager:us-east-2:111122223333:secret:example/ExampleSecret-jiObOV
  • PROXY_SECRET_VERSION: die Versions-ID des Secrets, z. B. EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE

Proxykonfiguration aktualisieren

Sie können die Proxykonfiguration für eine Clustersteuerungsebene oder einen Knotenpool aktualisieren. Zum Aktualisieren des ARN der Proxy-Konfiguration müssen Sie zuerst die AWS-IAM-Rolle der Steuerungsebene oder des Knotenpools aktualisieren.

AWS-IAM-Rollen aktualisieren

Bevor Sie den ARN ändern, in dem die Proxykonfiguration gespeichert ist, müssen Sie bestätigen, dass die Rolle der Steuerungsebene und die Rolle des Knotenpools Ihres Clusters Lesezugriff auf den geheimen ARN haben. Wenn Ihre IAM-Anweisung mit der Berechtigung secretsmanager:GetSecretValue auf bestimmte Ressourcen-ARNs beschränkt ist, fügen Sie den neuen geheimen ARN in diese Liste ein, bevor Sie die Proxykonfiguration aktualisieren.

Cluster-Proxykonfiguration aktualisieren

Verwenden Sie zum Aktualisieren der Proxykonfiguration des Clusters die Google Cloud CLI.

gcloud container aws clusters update  CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --proxy-secret-arn=PROXY_SECRET_ARN \
    --proxy-secret-version-id=PROXY_SECRET_VERSION

Dabei gilt:

  • CLUSTER_NAME: der Name des Clusters
  • GOOGLE_CLOUD_LOCATION: die unterstützte Google Cloud Region, die Ihren Cluster verwaltet
  • PROXY_SECRET_ARN: der ARN des Secrets, das Proxyeinstellungen enthält
  • PROXY_SECRET_VERSION: die Versions-ID des Secrets, z. B. EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE

Proxykonfiguration für Knotenpool aktualisieren

Verwenden Sie zum Aktualisieren der Proxykonfiguration des Knotenpools die Google Cloud CLI.

gcloud container aws node-pools update NODE_POOL_NAME
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --proxy-secret-arn=PROXY_SECRET_ARN \
    --proxy-secret-version-id=PROXY_SECRET_VERSION

Dabei gilt:

  • NODE_POOL_NAME: Name Ihres Knotenpools
  • CLUSTER_NAME: der Name des Clusters
  • GOOGLE_CLOUD_LOCATION: die unterstützte Google Cloud Region, die Ihren Cluster verwaltet
  • PROXY_SECRET_ARN: der ARN des Secrets, das Proxyeinstellungen enthält
  • PROXY_SECRET_VERSION: die Versions-ID des Secrets, z. B. EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE

Proxykonfiguration entfernen

Sie können die Proxykonfiguration von der Steuerungsebene oder den Knotenpools des Clusters entfernen. Diese Vorgänge sind unabhängig. Wenn Sie die Konfiguration von der Steuerungsebene entfernen, wird sie nicht aus den Knotenpools des Clusters entfernt.

Proxykonfiguration für Steuerungsebene entfernen

Verwenden Sie zum Entfernen der Proxykonfiguration der Cluster-Steuerungsebene die Google Cloud CLI.

gcloud container aws clusters update  CLUSTER_NAME \
  --location GOOGLE_CLOUD_LOCATION \
  --clear-proxy-config

Dabei gilt:

Proxykonfiguration für Knotenpool entfernen

Verwenden Sie zum Entfernen der Proxykonfiguration aus einem Knotenpool die Google Cloud-Befehlszeile.

gcloud container aws node-pools update NODE_POOL_NAME
  --cluster CLUSTER_NAME \
  --location GOOGLE_CLOUD_LOCATION \
  --clear-proxy-config

Dabei gilt:

  • NODE_POOL_NAME: Name Ihres Knotenpools
  • CLUSTER_NAME: der Name des Clusters
  • GOOGLE_CLOUD_LOCATION: die unterstützte Google Cloud Region, die Ihren Cluster verwaltet, z. B. us-west1

Nächste Schritte