IP-Adressen aktivieren

In diesem Dokument wird erläutert, wie Sie IP-Adressen auf einer VM-Instanz (Virtual Machine) in Google Distributed Cloud (GDC) mit Air Gap konfigurieren.

Sie können festlegen, dass jede virtuelle Maschine (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 erreichen oder die aktuelle VM kann für Dienste in anderen Organisationen verfügbar gemacht werden. Dies wird als VM-Egress bezeichnet.

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

Dieses Dokument richtet sich an Entwickler in Plattformadministrator- oder Anwendungsoperatorgruppen, die IP-Adressen für VMs in einer Distributed Cloud-Umgebung konfigurieren. Weitere Informationen finden Sie unter Zielgruppen für die Dokumentation zu GDC mit Air Gap.

Hinweis

Wenn Sie gdcloud Befehlszeilenschnittstellenbefehle (CLI) verwenden möchten, müssen Sie die gdcloud CLI heruntergeladen, installiert und konfiguriert haben. Alle Befehle für Distributed Cloud verwenden die gdcloud- oder kubectl-CLI und erfordern eine Betriebssystemumgebung.

Pfad der kubeconfig-Datei abrufen

Wenn Sie Befehle für den Management API-Server ausführen möchten, 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. Ersetzen Sie in dieser Anleitung MANAGEMENT_API_SERVER durch den Pfad zur kubeconfig-Datei des Management API-Servers.

IAM-Rollen anfordern

Wenden Sie sich an Ihren Projekt-IAM-Administrator, um die folgenden Rollen für Ihr Projekt anzufordern:

  • Projektadministrator für virtuelle Maschinen (project-vm-admin): VMs im Projekt-Namespace erstellen, ändern, auflisten und löschen.

  • Projektbetrachter(project-viewer): Alle Ressourcen in den Projekt-Namespaces ansehen.

Alle VM-Rollen müssen an den Namespace des Projekts gebunden sein, in dem sich die VM befindet. Folgen Sie der Anleitung, um Ihren Zugriff zu überprüfen.

Externen Zugriff auf VMs konfigurieren

VirtualMachineExternalAccess (VMEA) steuert VM-Ingress und VM-Egress. 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 ein VMEA haben. Wenn eine VM kein VMEA hat, sind sowohl Ingress als auch Egress standardmäßig deaktiviert.

Externen Zugriff aktivieren

Wenn Sie eine VM mit externem Zugriff für die Datenübertragung ein- und ausgehend aktivieren möchten, können Sie das VMEA über die GDC Console oder die Distributed Cloud Virtual Machine Manager APIkonfigurieren.

Standardmäßig ist der Netzwerkverkehr innerhalb des Projekts zulässig und Sie können direkt auf Ihre VM im Projekt zugreifen. Eine Netzwerkrichtlinie blockiert den gesamten Ingress-Traffic zur VM von außerhalb des Projekts. Sie müssen manuell eine neue Netzwerkrichtlinie erstellen, damit Ihre Quell-IP-Adresse über die Eingehende Ü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 Standort hängt davon ab, von wo aus Sie auf die VM zugreifen möchten.

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

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

Console

  1. Wechseln Sie während der VM-Erstellung über die Console auf der Seite VM-Instanz erstellen zur Seite Netzwerkdetails.
  2. Suchen Sie im vertikalen Navigationsmenü der Seite nach Netzwerk.
  3. Wählen Sie Externen Zugriff zulassen aus, um den externen Zugriff auf der 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: 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

Führen Sie Folgendes aus, um den externen Zugriff auf eine VM zu aktivieren, indem Sie ein vorhandenes VMEA über die VMM API bearbeiten:

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

gdcloud

Verwenden Sie den Befehl gdcloud compute mit dem Flag --enable-external-access, um den externen Zugriff auf einer VM-Instanz zu aktivieren:

gdcloud compute instances create VM_NAME \
  --project PROJECT \
  --machine-type MACHINE_TYPE \
  --image IMAGE \
  --image-project IMAGE_PROJECT \
  --enable-external-access

Ersetzen Sie die folgenden Variablen:

  • VM_NAME: Der Name der VM
  • PROJECT: Das Distributed Cloud-Projekt in dem sich die VM befindet
  • MACHINE_TYPE: Der Name des vordefinierten Maschinentyps für die VM-Instanz
  • IMAGE: Der Name des Boot-Images für die Instanz
  • IMAGE_PROJECT: Das Projekt des Boot-Images für die Instanz

Externen Zugriff deaktivieren

Wenn eine VM kein entsprechendes VMEA hat, sind sowohl Ingress als auch Egress deaktiviert. Wenn eine VM ein entsprechendes VMEA hat, können Sie das VMEA deaktivieren, indem Sie das Feld enabled auf false setzen oder das 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

Deaktivieren Sie den externen Zugriff, indem Sie ein 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

Deaktivieren Sie den externen Zugriff, indem Sie ein 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 Console angezeigt. Sie finden diese Ingress-IP-Adresse auch auf der Seite VM-Details in der GDC Console.

Verwenden Sie die Distributed Cloud VMM API, um die IP-Adresse abzurufen. Führen Sie die folgenden Schritte 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 das VMEA bearbeiten. Sie können die Spezifikation des VM-Ingress direkt über die GDC Console bearbeiten. Sie können auch die kubectl-CLI verwenden, um den VM-Ingress über die Spezifikation des VMEA zu bearbeiten.

So bearbeiten Sie das VMEA, um den Ingress anzupassen:

Verwenden Sie beispielsweise die folgenden Befehle, um den Port PORT_NUMBER zu einem vorhandenen VM-Ingress mit dem TCP Protokoll hinzuzufügen:

Console

Bearbeiten Sie die Ports direkt im VM-Ingress-Dienst über die GDC Console:

  1. Klicken Sie im vertikalen Navigationsmenü auf Instanzen.
  2. Scrollen Sie auf der Seite zu Netzwerkdetails.
  3. Klicken Sie auf das Bearbeitungssymbol für Ingress-Ports , um den Ingress-Port zu bearbeiten.

    Console-Benutzeroberfläche mit der Liste der Netzwerkdetails und dem Symbol zum Bearbeiten der Ingress-Ports

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 hinzuzufügenden Ports
  • PORT_NUMBER: Die Portnummer

Ingress mit einem Nicht-TCP-Protokoll aktivieren

In Distributed Cloud können Sie Ihren VM-Ingress mit verschiedenen Protokollen aktivieren. Standardmäßig verwendet ein VM-Ingress-Dienst das TCP-Protokoll. Sie können einen eigenen Nicht-TCP-Protokoll-Ingress für Ihre VM 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 verschiedene 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-Adresse Daten aus dem externen Netzwerk übertragen kann, müssen Sie möglicherweise Netzwerkrichtlinien für das Projekt anwenden. Weitere Informationen finden Sie unter Organisationsübergreifende Netzwerkrichtlinie für ausgehenden Traffic.

Wenn eine VM für ausgehenden Traffic über ein Cloud NAT-Gatewaykonfiguriert ist, muss dem Objekt für den externen Zugriff auf die VM die folgende Annotation hinzugefügt werden, um die Egress-Verbindung aufrechtzuerhalten: egress.networking.gke.io/use-cloud-nat:"true"

Egress-IP-Adresse ansehen

Wenn für eine VM Egress aktiviert ist, wird nach der Erstellung eine Egress-IP-Adresse in der GDC Console 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 VM-Egress basiert auf einem Projekt. VMs im selben Projekt haben dieselbe Egress-IP-Adresse.

Ausgehenden Traffic steuern

In früheren Distributed Cloud-Versionen mussten Sie die VM neu starten, damit Änderungen am Egress auf eine ausgeführte VM angewendet werden. In Version 1.11 können Sie den ausgehenden VM-Traffic aktivieren und deaktivieren, ohne die VM neu starten zu müssen. Diese Änderung wird sofort wirksam, nachdem Sie das VMEA aktualisiert haben.