Freigeben über


Funktionsweise von Brücke zu Kubernetes

Anmerkung

Bridge to Kubernetes wird am 30. April 2025 eingestellt. Ausführliche Informationen zur Außerbetriebnahme und den Open-Source-Alternativen finden Sie im GitHub-Problem.

Brücke zu Kubernetes ist ein iteratives Entwicklungstool für die Erstellung von Microservice-Anwendungen, die auf Kubernetes abzielen. Die Brücke zu Kubernetes-Erweiterung ist für Visual Studio und Visual Studio Code (VS Code) verfügbar.

Mit Der Brücke zu Kubernetes können Sie Code auf Ihrem Entwicklungscomputer ausführen und debuggen. Dieser Computer ist weiterhin mit Ihrem Kubernetes-Cluster mit den restlichen Anwendungen oder Diensten verbunden. Wenn Sie über eine große Microservices-Architektur mit vielen interdependenten Diensten und Datenbanken verfügen, kann die Replikation dieser Abhängigkeiten von Ihrem Entwicklungscomputer schwierig sein. Das Erstellen und Bereitstellen von Code in Ihrem Kubernetes-Cluster für jede Codeänderung kann langsam, zeitaufwendig und schwierig sein.

Brücke zu Kubernetes erstellt eine Verbindung zwischen Ihrem Entwicklungscomputer und Ihrem Cluster. Bei diesem Ansatz wird vermieden, dass Sie Ihren Code in Ihrem Cluster erstellen und bereitstellen müssen. Sie können Ihren Dienst im Kontext testen und entwickeln, verbunden mit Ihrem Cluster. Mit diesem Ansatz können Sie debuggen, ohne weitere Docker- oder Kubernetes-Konfigurationen zu erstellen.

Brücke zu Kubernetes leitet den Datenverkehr zwischen Ihrem verbundenen Kubernetes-Cluster und Ihrem Entwicklungscomputer um. Lokaler Code und Dienste in Ihrem Kubernetes-Cluster können kommunizieren, als ob sie sich im gleichen Kubernetes-Cluster befinden.

Mit Brücke zu Kubernetes können Sie Umgebungsvariablen und bereitgestellte Volumes in Ihrem Kubernetes-Cluster auf Ihren Entwicklungscomputer replizieren. Der Zugriff auf Umgebungsvariablen und bereitgestellte Volumes ermöglicht es Ihnen, an Ihrem Code zu arbeiten, ohne diese Abhängigkeiten replizieren zu müssen.

Anforderungen

Anmerkung

Brücke zu Kubernetes funktioniert nicht mit Docker für Desktop Kubernetes-Clustern. Um Bridge to Kubernetes zu verwenden, benötigen Sie eine der folgenden Konfigurationen:

Sie können Bridge to Kubernetes verwenden, um eine Verbindung mit Ihrem Kubernetes-Cluster herzustellen. Diese Verbindung leitet den Datenverkehr zu und von einem vorhandenen Pod im Cluster auf Ihren Entwicklungscomputer um.

Anmerkung

Wenn Sie Bridge to Kubernetes verwenden, werden Sie aufgefordert, den Namen des Dienstes einzugeben, um diesen auf Ihren Entwicklungscomputer umzuleiten. Diese Option ist eine bequeme Möglichkeit, einen Pod für die Umleitung zu identifizieren. Alle Umleitungen zwischen Ihrem Kubernetes-Cluster und Ihrem Entwicklungscomputer beziehen sich auf einen Pod. Weitere Informationen finden Sie unter Einen Dienst bereitstellen.

In VS Code unterstützt Bridge to Kubernetes alle Sprachen, solange Sie sie lokal ausführen können. In Visual Studio unterstützt Bridge to Kubernetes .NET Core. "Bridge to Kubernetes" unterstützt das .NET Framework in Visual Studio nicht, da Windows-Knotenunterstützung erforderlich ist.

Vorsicht

Brücke zu Kubernetes ist nur für Entwicklungs- und Testszenarien vorgesehen. Sie ist nicht für die Verwendung mit Produktionsclustern oder Livediensten in aktiver Verwendung vorgesehen oder unterstützt.

Aktuelle Features und zukünftige Pläne finden Sie in der Roadmap Brücke zu Kubernetes.

Herstellen einer Verbindung

Wenn Bridge to Kubernetes eine Verbindung mit Ihrem Cluster herstellt, werden die folgenden Aktionen ausgeführt:

  • Fordert Sie auf, den Dienst zu konfigurieren, dass er auf Ihrem Cluster ersetzt wird, den Port auf Ihrem Entwicklungscomputer, der für Ihren Code verwendet werden soll, und die Startaufgabe für Ihren Code als einmalige Aktion.
  • Ersetzt den Container im Pod auf dem Cluster durch einen Remote-Agent-Container, der den Datenverkehr an Ihren Entwicklungscomputer umleitet.
  • Führen Sie kubectl port-forward auf Ihrem Entwicklungscomputer aus, um den Datenverkehr von Ihrem Entwicklungscomputer an den Remote Agent weiterzuleiten, der in Ihrem Cluster läuft.
  • Sammelt Umgebungsinformationen aus Ihrem Cluster mithilfe des Remote-Agents. Diese Umgebungsinformationen umfassen Umgebungsvariablen, sichtbare Dienste, Volumebereitstellungen und Geheimnisbereitstellungen.
  • Richtet die Umgebung in Visual Studio ein, sodass der Dienst auf Ihrem Entwicklungscomputer auf dieselben Variablen zugreifen kann, als ob er auf dem Cluster ausgeführt wurde.
  • Aktualisiert Ihre Hosts Datei, um Dienste auf Ihrem Cluster lokalen IP-Adressen auf Ihrem Entwicklungscomputer zuzuordnen. Diese Hosts Dateieinträge ermöglichen es, dass Code, der auf Ihrem Entwicklungscomputer ausgeführt wird, Anforderungen an andere Dienste stellt, die in Ihrem Cluster ausgeführt werden. Um Ihre Hosts Datei zu aktualisieren, benötigt Bridge to Kubernetes Administratorzugriff auf Ihrem Entwicklungscomputer.
  • Startet das Ausführen und Debuggen des Codes auf dem Entwicklungscomputer. Falls erforderlich, gibt Die Brücke zu Kubernetes erforderliche Ports auf Ihrem Entwicklungscomputer frei, indem Dienste oder Prozesse beendet werden, die diese Ports derzeit verwenden.

Verwenden von Bridge to Kubernetes

Nachdem Sie eine Verbindung mit Ihrem Cluster hergestellt haben, führen Sie Code auf Ihrem Computer ohne Containerisierung aus, und debuggen Sie sie nativ. Der Code interagiert mit Ihrem Cluster. Jeder Netzwerkdatenverkehr, den der Remote-Agent empfängt, wird an den lokalen Port umgeleitet, der während der Verbindung angegeben ist. Ihr systemeigener Code kann diesen Datenverkehr akzeptieren und verarbeiten. Die Umgebungsvariablen, Volumes und geheimen Schlüssel aus Ihrem Cluster werden für Code verfügbar gemacht, der auf Ihrem Entwicklungscomputer ausgeführt wird.

Bridge to Kubernetes hostet Dateieinträge und Portweiterleitung zu Ihrem Entwicklercomputer. Ihr Code kann Netzwerkdatenverkehr an Dienste senden, die auf Ihrem Cluster ausgeführt werden, indem die Dienstnamen aus Ihrem Cluster verwendet werden. Dieser Datenverkehr wird an die Dienste weitergeleitet, die in Ihrem Cluster ausgeführt werden. Der Datenverkehr wird zwischen Ihrem Entwicklungscomputer und Ihrem Cluster weitergeleitet, wenn Sie verbunden sind.

Darüber hinaus bietet Bridge to Kubernetes eine Möglichkeit, Umgebungsvariablen und bereitgestellte Dateien zu replizieren, die für Pods in Ihrem Cluster auf Ihrem Entwicklungscomputer über die KubernetesLocalProcessConfig.yaml Datei verfügbar sind. Sie können diese Datei auch verwenden, um neue Umgebungsvariablen und Volume-Mounts zu erstellen.

Anmerkung

Für die Dauer der Verbindung mit dem Cluster und 15 Minuten führt Bridge to Kubernetes einen Prozess namens EndpointManager mit Administratorberechtigungen auf Ihrem lokalen Computer aus.

Sie können parallel mit mehreren Diensten debuggen. Starten Sie so viele Instanzen von Visual Studio als Dienste, die Sie debuggen möchten. Stellen Sie sicher, dass Ihre Dienste lokal auf verschiedenen Ports lauschen. Konfigurieren und debuggen Sie sie separat. Die Isolation wird in diesem Szenario nicht unterstützt.

Zusätzliche Konfiguration

Mit der KubernetesLocalProcessConfig.yaml Datei können Sie Umgebungsvariablen nachbilden und bereitgestellte Dateien verwenden, die für Ihre Pods in Ihrem Cluster verfügbar sind. Wenn Sie Visual Studio verwenden, muss sich die KubernetesLocalConfig.yaml Datei im selben Verzeichnis wie die Projektdatei für den Dienst befinden. Weitere Informationen finden Sie unter Configure Bridge to Kubernetes.

Verwenden von Routing-Fähigkeiten zur isolierten Entwicklung

Standardmäßig leitet Bridge to Kubernetes den gesamten Datenverkehr für einen Dienst auf Ihren Entwicklungscomputer um. Sie können stattdessen Routingfunktionen verwenden, um Anforderungen nur von einer Unterdomäne auf Ihren Entwicklungscomputer umzuleiten. Diese Routingfunktionen ermöglichen es Ihnen, Bridge to Kubernetes zu verwenden, um isoliert zu entwickeln und zu vermeiden, dass anderer Datenverkehr in Ihrem Cluster unterbrochen wird.

Die folgende Animation zeigt zwei Entwickler, die isoliert an demselben Cluster arbeiten:

Animation zeigt Isolation, mit zwei Entwicklern, die mit demselben Cluster arbeiten.

Wenn Sie das Arbeiten isoliert aktivieren, führt Bridge to Kubernetes zusätzlich zur Verbindung mit Ihrem Kubernetes-Cluster die folgenden Aktionen aus:

  • Überprüft, ob der Kubernetes-Cluster keine Azure Dev Spaces aktiviert hat.
  • Repliziert Ihren ausgewählten Dienst im Cluster in demselben Namespace und fügt die Bezeichnung routing.visualstudio.io/route-from=SERVICE_NAME und die Anmerkung routing.visualstudio.io/route-on-header=kubernetes-route-as=GENERATED_NAME hinzu.
  • Konfiguriert und startet den Routing-Manager im selben Namespace im Kubernetes-Cluster. Der Routing-Manager verwendet eine Bezeichnungsauswahl, um bei der Routingkonfiguration in Ihrem Namespace nach der Bezeichnung routing.visualstudio.io/route-from=SERVICE_NAME und der Anmerkung routing.visualstudio.io/route-on-header=kubernetes-route-as=GENERATED_NAME zu suchen.

Anmerkung

Brücke zu Kubernetes überprüft, ob Azure Dev Spaces auf Ihrem Kubernetes-Cluster aktiviert ist. Sie werden aufgefordert, Azure Dev Spaces zu deaktivieren, bevor Sie Bridge to Kubernetes verwenden können.

Der Routing-Manager führt beim Starten die folgenden Aktionen aus:

  • Er dupliziert alle im Namespace gefundenen eingehenden Daten einschließlich der beim Lastenausgleich mit GENERATED_NAME als Unterdomäne.
  • Er erstellt einen Envoy-Pod für jeden Dienst, der einem duplizierten Eingang mit der Unterdomäne GENERATED_NAME zugeordnet ist.
  • Er erstellt einen anderen Envoy-Pod für den Dienst, an dem Sie isoliert arbeiten. Mit dieser Konfiguration können Anforderungen mit der Unterdomäne an Ihren Entwicklungscomputer weitergeleitet werden.
  • Er konfiguriert Routingregeln für jeden Envoy-Pod, um das Routing für Dienste mit der Unterdomäne zu verarbeiten.

Das folgende Diagramm zeigt einen Kubernetes-Cluster, bevor Eine Brücke zu Kubernetes eine Verbindung mit Ihrem Cluster herstellt:

Diagramm des Clusters ohne Brücke zu Kubernetes.

Das folgende Diagramm zeigt den gleichen Cluster mit "Bridge to Kubernetes", der im Isolationsmodus aktiviert ist. Hier sehen Sie den duplizierten Dienst und die Envoy-Pods, die das Routing in der Isolation unterstützen.

Diagramm des Clusters mit aktivierter Brücke zu Kubernetes.

Wenn der Cluster eine Anforderung mit der GENERATED_NAME-Unterdomäne empfängt, wird der Anforderung ein Kubernetes-route-as=GENERATED_NAME-Header hinzugefügt. Die Envoy-Pods verarbeiten das Routing der Anforderung an den entsprechenden Dienst im Cluster. Für eine Anforderung an den Dienst, an dem isoliert gearbeitet wird, leitet der Cluster die Anforderung vom Remote-Agent an Ihren Entwicklungscomputer um.

Wenn der Cluster eine Anforderung ohne die GENERATED_NAME-Unterdomäne empfängt, wird der Anforderung kein Header hinzugefügt. Die Envoy-Pods übernehmen das Routing, indem sie die Anforderung an den entsprechenden Dienst im Cluster weiterleiten. Bei einer Anforderung für den dienst, der ersetzt wird, leiten die Pods sie an den ursprünglichen Dienst statt an den Remote-Agent weiter.

Wichtig

Jeder Dienst in Ihrem Cluster muss den kubernetes-route-as=GENERATED_NAME Header weiterleiten, wenn zusätzliche Anfragen gestellt werden. Wenn ServiceA eine Anforderung empfängt, stellt es eine Anforderung an ServiceB, bevor es eine Antwort zurückgibt. In diesem Beispiel muss serviceA den Header kubernetes-route-as=GENERATED_NAME in der Anforderung an serviceB weiterleiten. Einige Sprachen, z. B. ASP.NET, weisen möglicherweise Methoden zum Behandeln der Headerverteilung auf.

Wenn Sie die Verbindung mit Ihrem Cluster trennen, entfernt Bridge to Kubernetes standardmäßig alle Envoy Pods und den Duplikatdienst.

Anmerkung

Die Bereitstellung und der Dienst des Routing-Managers werden weiterhin in Ihrem Namespace ausgeführt. Führen Sie zum Entfernen der Bereitstellung und des Diensts die folgenden Befehle für Ihren Namespace aus.

kubectl delete deployment routingmanager-deployment -n NAMESPACE
kubectl delete service routingmanager-service -n NAMESPACE

Diagnose und Protokollierung

Wenn Sie "Bridge to Kubernetes" verwenden, um eine Verbindung mit Ihrem Cluster herzustellen, protokolliert Ihr Computer die Diagnosedaten. Er speichert sie im TEMP-Verzeichnis Ihres Entwicklungscomputers im Ordner Bridge to Kubernetes.

Kubernetes RBAC-Autorisierung

Kubernetes bietet rollenbasierte Zugriffssteuerung (RBAC) zum Verwalten von Berechtigungen für Benutzer und Gruppen. Weitere Informationen finden Sie in der Kubernetes-Dokumentation. Sie können die Berechtigungen für einen RBAC-fähigen Cluster festlegen, indem Sie eine YAML-Datei erstellen und kubectl verwenden, um sie auf den Cluster anzuwenden.

Um Berechtigungen für den Cluster festzulegen, erstellen oder ändern Sie eine YAML-Datei wie permissions.yml. Verwenden Sie Ihren Namespace für <namespace> und die Benutzer und Gruppen, die Zugriff benötigen.

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: bridgetokubernetes-<namespace>
  namespace: development
subjects:
  - kind: User
    name: jane.w6wn8.k8s.ginger.eu-central-1.aws.gigantic.io
    apiGroup: rbac.authorization.k8s.io
  - kind: Group
    name: dev-admin
    apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: admin
  apiGroup: rbac.authorization.k8s.io

Wenden Sie die Berechtigungen mithilfe des folgenden Befehls an:

kubectl -n <namespace> apply -f <yaml file name>

Begrenzungen

Brücke zu Kubernetes hat die folgenden Einschränkungen:

  • Ein Pod darf nur einen einzigen Container enthalten, der in diesem Pod läuft, damit Bridge to Kubernetes eine erfolgreiche Verbindung herstellen kann.
  • Derzeit müssen Bridge to Kubernetes-Pods Linux-Container sein. Windows-Container werden nicht unterstützt.
  • Bridge to Kubernetes benötigt erhöhte Berechtigungen, um auf Ihrem Entwicklungscomputer ausgeführt zu werden und um die Hostdatei zu bearbeiten.
  • Brücke zu Kubernetes kann nicht für Cluster verwendet werden, für die Azure Dev Spaces aktiviert ist.

Nächste Schritte

Informationen zu den ersten Schritten mit Bridge to Kubernetes zum Herstellen einer Verbindung mit Ihrem lokalen Entwicklungscomputer mit Ihrem Cluster finden Sie unter Verwenden von Bridge to Kubernetes (VS) oder Verwenden von Bridge to Kubernetes (VS Code).