Auf dieser Seite wird die jetzt verworfene Standardkonfiguration für ausgehenden NAT-Traffic auf Projektebene beschrieben, mit der Arbeitslasten eine Verbindung außerhalb der Organisation herstellen können. Außerdem finden Sie hier eine Anleitung dazu, wie Sie zur empfohlenen Lösung, Cloud NAT, migrieren.
Übersicht
Auf dieser Seite werden die Maßnahmen beschrieben, die Sie für die Konfiguration der ausgehenden Verbindung einer VM oder eines Pods in einem Projekt ergreifen müssen, damit Arbeitslasten die Organisation verlassen können. Dabei wird die (veraltete) Standardkonfiguration für ausgehenden NAT-Traffic auf Projektebene verwendet.
Die Standardkonfiguration für ausgehenden NAT-Traffic auf Projektebene ist nicht mit Standardclustern kompatibel. Verwenden Sie Cloud NAT, wenn Sie ausgehenden Traffic für Standard cluster steuern müssen.
In der Anleitung wird gezeigt, wie Sie Deployments ein erforderliches Label hinzufügen, um ausgehenden Traffic explizit zu aktivieren und Arbeitslasten die Kommunikation außerhalb der Organisation zu ermöglichen.
Standardmäßig blockiert Google Distributed Cloud (GDC) air-gapped, dass Arbeitslasten in einem Projekt die Organisation verlassen. Arbeitslasten können die Organisation verlassen, wenn Ihr Plattformadministrator den Schutz vor Datenexfiltration für das Projekt deaktiviert hat. Dazu kann er dem Projekt das Label
networking.gdc.goog/enable-default-egress-allow-to-outside-the-org: "true" hinzufügen. Zusätzlich zum Deaktivieren des Schutzes vor Datenexfiltration muss der
Anwendungsoperator dem Pod-Arbeitslast das Label egress.networking.gke.io/enabled:
true hinzufügen, um die ausgehende Verbindung für diesen Pod zu aktivieren. Wenn Sie eine bekannte IP-Adresse für das Projekt zuweisen und verwenden, wird eine Quell-NAT (Network Address Translation) für den ausgehenden Traffic aus der Organisation ausgeführt.
Sie können die ausgehende Verbindung von Arbeitslasten in einem Pod oder einer VM verwalten.
Ausgehenden Traffic von Arbeitslasten in einem Pod verwalten
Wenn Sie Arbeitslasten in einem Pod für die ausgehende Verbindung konfigurieren möchten, müssen Sie zuerst sicherstellen,
dass der Schutz vor Datenexfiltration für das
Projektdeaktiviert ist.
Achten Sie dann darauf, dass dem Pod das Label egress.networking.gke.io/enabled: true hinzugefügt wird. Wenn Sie ein Konstrukt höherer Ebene wie Deployment oder Daemonset verwenden, um Gruppen von Pods zu verwalten, müssen Sie das Pod-Label in diesen Spezifikationen konfigurieren.
Im folgenden Beispiel wird gezeigt, wie Sie ein Deployment aus der Manifestdatei erstellen.
Die Beispieldatei enthält den Wert egress.networking.gke.io/enabled: true im Feld labels, um ausgehenden Traffic aus dem Projekt explizit zu aktivieren. Dieses Label wird jedem Pod im Deployment hinzugefügt und ermöglicht es Arbeitslasten in den Pods, die Organisation zu verlassen.
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: DEPLOYMENT_NAME
spec:
replicas: NUMBER_OF_REPLICAS
selector:
matchLabels:
run: APP_NAME
template:
metadata:
labels: # The labels given to each pod in the deployment, which are used
# to manage all pods in the deployment.
run: APP_NAME
egress.networking.gke.io/enabled: true
spec: # The pod specification, which defines how each pod runs in the deployment.
containers:
- name: CONTAINER_NAME
image: CONTAINER_IMAGE
EOF
Ersetzen Sie Folgendes:
USER_CLUSTER_KUBECONFIG: Die kubeconfig-Datei für den Nutzercluster, in dem Sie Containerarbeitslasten bereitstellen.DEPLOYMENT_NAME: Die kubeconfig-Datei für den Nutzercluster, in dem Sie Containerarbeitslasten bereitstellen.APP_NAME: Der Name der Anwendung, die im Deployment ausgeführt werden soll.NUMBER_OF_REPLICAS: Die Anzahl der repliziertenPod-Objekte, die vom Deployment verwaltet werden.CONTAINER_NAME: Der Name des Containers.CONTAINER_IMAGE: Der Name des Container-Images. Sie müssen den Container Registry-Pfad und die Version des Images angeben, z. B.REGISTRY_PATH/hello-app:1.0.
Beispiel:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
run: my-app
template:
metadata:
labels:
run: my-app
egress.networking.gke.io/enabled: true
spec:
containers:
- name: hello-app
image: REGISTRY_PATH/hello-app:1.0
Ausgehenden Traffic von Arbeitslasten in einer VM verwalten
Wenn Sie Arbeitslasten in einer VM für die ausgehende Verbindung konfigurieren möchten, können Sie die GDC Console für die VM-Konfiguration verwenden oder eine VirtualMachineExternalAccess-Ressource erstellen. Informationen zum Aktivieren des externen Zugriffs auf eine
VM für die Datenübertragung finden Sie im Abschnitt Externen Zugriff aktivieren
Verbindung zu VMs herstellen.
Zu Cloud NAT migrieren
Mit der Verfügbarkeit von Cloud NAT in Version 1.15 wird die Standardkonfiguration für ausgehenden NAT-Traffic auf Projektebene verworfen. Es wird empfohlen, dass Nutzer ihre Konfigurationen für ausgehenden Traffic von der Standardkonfiguration für ausgehenden NAT-Traffic auf Projektebene zu Cloud NAT migrieren.
Die Standardkonfiguration für ausgehenden NAT-Traffic auf Projektebene und Cloud NAT sind nicht miteinander kompatibel. Das heißt, ein bestimmter Pod- oder VM-Endpunkt kann nur eine der beiden Optionen verwenden. Wenn Sie Endpunkte von einer Konfiguration zur anderen migrieren möchten, müssen Sie sie in der einen deaktivieren und dann in der anderen aktivieren.
Deaktivieren Sie zuerst die ältere Konfiguration für die Endpunkte, die Sie migrieren möchten. Dazu gibt es zwei mögliche Vorgehensweisen:
- Standardkonfiguration für ausgehenden NAT-Traffic auf Projektebene für das gesamte Projekt deaktivieren: Deaktivieren Sie die
Standardkonfiguration für ausgehenden NAT-Traffic auf Projektebene für alle Endpunkte im Projekt, indem Sie dem
Projekt das Label
networking.gdc.goog/allocate-egress-ip: "false"zuweisen. - Standardkonfiguration für ausgehenden NAT-Traffic auf Projektebene pro Endpunkt deaktivieren: Deaktivieren Sie die Standardkonfiguration für ausgehenden
NAT-Traffic auf Projektebene für einen bestimmten Pod- oder VM-Endpunkt, indem Sie das Label
egress.networking.gke.io/enabled:"true"aus dem Pod oder der VM entfernen.
Wenn ein Endpunkt aus der Standardkonfiguration für ausgehenden NAT-Traffic entfernt wird, kann er einem Cloud NAT-Gateway hinzugefügt werden. Dazu müssen Sie dem Endpunkt Labels hinzufügen, die mit den Labelselektoren des ausgewählten Gateways übereinstimmen.
Eine Anleitung zum Einrichten von Cloud NAT finden Sie unter Cloud NAT und auf den folgenden Seiten.
Tracking von IP-Adressen für ausgehenden Traffic
Bei der Standardkonfiguration für ausgehenden NAT-Traffic sind die IP-Adressen für ausgehenden Traffic, die für NAT-Traffic verwendet werden, im Status des Projekts enthalten. Bei Cloud NAT enthält das Projektobjekt keine IP-Adressen für ausgehenden Traffic. Stattdessen kann der Nutzer die vom Cloud NAT-Gateway verwendeten IP-Adressen auflisten, indem er die dem Gateway zugewiesenen Subnetze auflistet.