IP-Adressen aktivieren

Sie können festlegen, dass jede VM-Instanz entweder über das externe Netzwerk oder über eine andere Organisation erreichbar ist. Dies wird als VM-Ingress bezeichnet. Eine VM-Arbeitslast in einem Organisationsprojekt kann entweder das externe Netzwerk oder die aktuelle VM erreichen, die für Dienste in anderen Organisationen verfügbar gemacht wird. Dies wird als VM-Egress bezeichnet.

Mit VirtualMachineExternalAccess (VMEA) können Sie VM-Ingress und VM-Egress gemeinsam steuern. Sie finden sowohl die Ingress- als auch die Egress-IP-Adressen, die Sie für eine VM-Instanz in der Google Distributed Cloud (GDC) Air-Gapped VMM API oder über die GDC-Konsole aktiviert haben.

Hinweise

Wenn Sie die Befehle der gdcloud-Befehlszeile (Command-Line Interface, CLI) verwenden möchten, müssen Sie die gdcloud-CLI heruntergeladen, installiert und konfiguriert haben. Für alle Befehle für Distributed Cloud wird die CLI gdcloud oder kubectl verwendet. Außerdem ist eine Betriebssystemumgebung erforderlich.

Pfad der kubeconfig-Datei abrufen

Damit Sie Befehle für den Management API-Server ausführen können, benötigen Sie die folgenden Ressourcen:

  1. Melden Sie sich an und generieren Sie die kubeconfig-Datei für den Management API-Server, falls Sie noch keine haben.

  2. Verwenden Sie den Pfad zur kubeconfig-Datei des Management API-Servers, um MANAGEMENT_API_SERVER in dieser Anleitung zu ersetzen.

Berechtigungen und Zugriff anfordern

Zum Ausführen der auf dieser Seite aufgeführten Aufgaben benötigen Sie die Rolle „ProjectVirtualMachine Admin“. Prüfen Sie, ob Sie die Rolle „Project VirtualMachine Admin“ (project-vm-admin) im Namespace des Projekts haben, in dem sich die VM befindet.

Für VM-Vorgänge mit der GDC-Konsole oder der gdcloud-CLI bitten Sie Ihren Projekt-IAM-Administrator, Ihnen sowohl die Rolle „Project VirtualMachine Admin“ als auch die Rolle „Project Viewer“ (project-viewer) zuzuweisen.

Externen VM-Zugriff konfigurieren

VirtualMachineExternalAccess (VMEA) steuert den eingehenden und ausgehenden VM-Traffic. VMEA kann VM-Ingress und VM-Egress nicht separat steuern. Ingress und Egress einer VM müssen gleichzeitig aktiviert oder deaktiviert werden.

Sie können VMEA entweder über die Benutzeroberfläche oder über die Distributed Cloud VMM API konfigurieren und steuern. Eine VM kann nur eine einzige VMEA haben. Wenn eine VM keine VMEA hat, sind sowohl der eingehende als auch der ausgehende Traffic standardmäßig deaktiviert.

Externen Zugriff aktivieren

Wenn Sie eine VM mit externem Zugriff für die Datenübertragung ein- und auswärts aktivieren möchten, können Sie die VMEA über die GDC-Konsole oder die Virtual Machine Manager API von Distributed Cloud konfigurieren.

Standardmäßig ist der netzwerkinterne Traffic im Projekt zulässig und Sie können direkt auf Ihre VM im Projekt zugreifen. Eine Netzwerkrichtlinie blockiert den gesamten eingehenden Traffic zur VM von außerhalb des Projekts. Sie müssen manuell eine neue Netzwerkrichtlinie erstellen, damit Ihre Quell-IP-Adresse über die Datenübertragung auf die VM zugreifen kann. Diese Netzwerkrichtlinie kann entweder eine projektübergreifende Netzwerkrichtlinie für Traffic oder eine organisationsübergreifende Netzwerkrichtlinie für Traffic sein. Der Speicherort hängt davon ab, von wo aus Sie auf die VM zugreifen möchten.

Sie können den externen Zugriff auf eine VM aktivieren und deaktivieren, indem Sie true oder false im Feld enabled der VMEA-Spezifikation angeben. Für VM-Ingress können Sie die Datenübertragung in Ports konfigurieren, indem Sie den Namen, das Protokoll und die Portnummer für jeden Port angeben, den Sie im Feld ports der VMEA-Spezifikation hinzufügen möchten.

So aktivieren Sie den externen Zugriff auf eine VM, indem Sie eine neue VMEA erstellen:

Console

  1. Rufen Sie während der VM-Erstellung in der Console auf der Seite VM-Instanz erstellen die Seite Netzwerkdetails auf.
  2. Suchen Sie im vertikalen Navigationsmenü der Seite nach Netzwerk.
  3. Klicken Sie das Kästchen Externen Zugriff zulassen an, um den externen Zugriff auf die VM zu aktivieren.

Externen Zugriff bei der VM-Erstellung aktivieren

API

Führen Sie dazu diesen Befehl aus:

kubectl --kubeconfig MANAGEMENT_API_SERVER \
  apply -n PROJECT -f - <<EOF
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachineExternalAccess
metadata:
  name: VM_NAME
spec:
  enabled: true
  ports:
  - name: PORT_NAME
    protocol: PROTOCOL
    port: PORT_NUMBER
EOF

Ersetzen Sie die folgenden Variablen:

  • MANAGEMENT_API_SERVER: die kubeconfig-Datei für den Management API-Server.
  • VM_NAME ist der Name Ihrer VM.
  • PORT_NAME: der Portname.
  • PROTOCOL: Das Protokoll, das der Ingress-Dienst verwenden soll. Der Protokollname muss in Großbuchstaben geschrieben sein und ein von Kubernetes unterstütztes Protokoll sein, z. B. TCP, UDP oder SCTP.
  • PORT_NUMBER: die Portnummer.

So aktivieren Sie den externen Zugriff auf eine VM, indem Sie eine vorhandene VMEA über die VMM API bearbeiten:

kubectl --kubeconfig MANAGEMENT_API_SERVER \
  -n PROJECT \
  edit virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME

Externen Zugriff deaktivieren

Wenn eine VM keine entsprechende VMEA hat, sind sowohl der eingehende als auch der ausgehende Traffic deaktiviert. Wenn eine VM eine entsprechende VMEA hat, können Sie die VMEA deaktivieren, indem Sie das Feld enabled auf false setzen oder die VMEA direkt löschen. Sie können diese Vorgänge über die Distributed Cloud VMM API ausführen.

So deaktivieren Sie den externen Zugriff:

API

Externen Zugriff deaktivieren, indem Sie eine VMEA löschen:

kubectl --kubeconfig MANAGEMENT_API_SERVER \
  -n PROJECT \
  delete virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME

Ersetzen Sie Folgendes:

  • MANAGEMENT_API_SERVER: die kubeconfig-Datei für den Management API-Server.
  • VM_NAME: der Name der VM.
  • PROJECT: das Distributed Cloud-Projekt, in dem sich die VM befindet.

Externen Zugriff deaktivieren, indem Sie eine VMEA bearbeiten:

kubectl --kubeconfig MANAGEMENT_API_SERVER \
  -n PROJECT \
  edit virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME

Aktualisieren Sie das Feld enabled auf false.

Eingehender Traffic

Ingress-IP-Adressen ansehen

Wenn für eine VM Ingress aktiviert ist, wird nach der Erstellung eine Ingress-IP-Adresse in der GDC-Konsole angezeigt. Sie finden diese Ingress-IP-Adresse auch auf der Seite VM-Details in der GDC-Konsole.

Verwenden Sie die Distributed Cloud VMM API, um die IP-Adresse abzurufen. Führen Sie Folgendes aus:

API

Rufen Sie die IP-Adresse ab:

kubectl --kubeconfig MANAGEMENT_API_SERVER \
  -n PROJECT \
  get virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME \
  -ojsonpath='{.status.ingressIP}'

Verwenden Sie für eine VM mit einem anderen Betriebssystem den Befehl ssh, um mit der Ingress-IP-Adresse und dem Port, den Sie mit TCP aktiviert haben, auf die VM zuzugreifen.

Eingehenden Traffic bearbeiten

Nachdem Sie VMEA für eine VM aktiviert haben, können Sie den Ingress anpassen, indem Sie die VMEA bearbeiten. Sie können die Spezifikation des VM-Ingress direkt über die GDC-Konsole bearbeiten. Sie können auch die kubectl-CLI verwenden, um den VM-Ingress aus der Spezifikation des VMEA zu bearbeiten.

Führen Sie die folgenden Schritte aus, um das VMEA zu bearbeiten und den Ingress anzupassen:

Verwenden Sie beispielsweise die folgenden Befehle, um Port PORT_NUMBER für den eingehenden Traffic einer vorhandenen VM mit dem TCP-Protokoll hinzuzufügen:

Console

Sie können die Ports im VM-Ingress-Dienst direkt über die GDC-Konsole bearbeiten:

  1. Klicken Sie im vertikalen Navigationsmenü auf Instanzen.
  2. Scrollen Sie auf der Seite zu Netzwerkdetails.
  3. Klicken Sie auf das Bearbeitungssymbol unter Eingangsports, um den Eingangsport zu bearbeiten.

    Console-Benutzeroberfläche mit der Liste „Netzwerkdetails“ und dem Symbol zum Bearbeiten für „Eingangsports“

API

kubectl --kubeconfig MANAGEMENT_API_SERVER \
  -n PROJECT \
  patch virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME \
  --type "json" -p '[{"op":"add","path":"/spec/ports/-","value": {"name":"PORT_NAME","port":PORT_NUMBER, "Protocol":"TCP"}}]'

Ersetzen Sie Folgendes:

  • MANAGEMENT_API_SERVER: die kubeconfig-Datei für den Management API-Server.
  • VM_NAME: der Name der VM.
  • PROJECT: das Distributed Cloud-Projekt, in dem sich die VM befindet.
  • PORT_NAME: Der Name des Ports, der hinzugefügt werden soll.
  • PORT_NUMBER: die Portnummer.

Ingress mit einem Nicht-TCP-Protokoll aktivieren

Mit Distributed Cloud können Sie den VM-Ingress mit verschiedenen Protokollen aktivieren. Standardmäßig verwendet ein VM-Ingress-Dienst das TCP-Protokoll. Sie können Ihrer VM eigene Ingress-Regeln für Nicht-TCP-Protokolle hinzufügen. Distributed Cloud unterstützt die folgenden Protokolle:

  • Transmission Control Protocol (TCP).
  • User Datagram Protocol (UDP).
  • Stream Control Transmission Protocol (SCTP)

Sie können die Datenübertragung mit einem Nicht-TCP-Protokoll aktivieren, indem Sie beim Erstellen von VMEA andere Protokollnamen angeben.

Ausgehender Traffic

Eine VM-Arbeitslast in einem Organisationsprojekt kann das externe Netzwerk erreichen oder für Dienste in anderen Organisationen verfügbar gemacht werden. Wenn Sie die Datenübertragung für die VM aktivieren, wird eine Egress-IP-Adresse generiert. Die VM stellt mit dieser IP-Adresse eine Verbindung zu den externen Diensten her.

Damit diese IP-Adressdaten aus dem externen Netzwerk übertragen werden, müssen Sie möglicherweise Projektnetzwerkrichtlinien anwenden. Weitere Informationen finden Sie unter Netzwerkrichtlinie für organisationsübergreifenden Traffic für ausgehenden Traffic.

Wenn eine VM für ausgehenden Traffic über ein Cloud NAT-Gateway konfiguriert ist, muss dem Objekt „Virtual Machine External Access“ (Externer Zugriff auf virtuelle Maschinen) die folgende Anmerkung hinzugefügt werden, um ausgehende Verbindungen beizubehalten: egress.networking.gke.io/use-cloud-nat:"true"

Ausgangs-IP-Adresse ansehen

Wenn für eine VM ausgehender Traffic aktiviert ist, wird nach der Erstellung eine IP-Adresse für ausgehenden Traffic in der GDC-Konsole angezeigt. Sie finden diese Egress-IP-Adresse auch auf der Seite VM-Details.

So rufen Sie die Egress-IP-Adresse auf:

API

Rufen Sie die IP-Adresse ab:

kubectl --kubeconfig MANAGEMENT_API_SERVER \
  -n PROJECT \
  get virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME \
  -ojsonpath='{.status.egressIP}'

Ersetzen Sie Folgendes:

  • MANAGEMENT_API_SERVER: die kubeconfig-Datei für den Management API-Server.
  • VM_NAME: der Name der VM.
  • PROJECT: das Distributed Cloud-Projekt, in dem sich die VM befindet.

Der ausgehende Traffic von VMs basiert auf einem Projekt. VMs im selben Projekt haben dieselbe ausgehende IP-Adresse.

Ausgehenden Traffic steuern

In früheren Distributed Cloud-Versionen mussten Sie die VM neu starten, damit sich Änderungen am ausgehenden Traffic auf eine laufende VM auswirken. In Version 1.11 können Sie den VM-Ausgang aktivieren und deaktivieren, ohne die VM neu zu starten. Diese Änderung wird sofort nach der Aktualisierung der VMEA wirksam.