Hoe Bridge to Kubernetes werkt
Notitie
Bridge to Kubernetes wordt op 30 april 2025 buiten gebruik gesteld. Zie de GitHub-probleemvoor meer informatie over de buitengebruikstelling en opensource-alternatieven.
Bridge to Kubernetes is een iteratief ontwikkelprogramma voor het ontwerpen van microservicetoepassingen die gericht zijn op Kubernetes. De Bridge to Kubernetes-extensie is beschikbaar voor Visual Studio en Visual Studio Code (VS Code).
Met Bridge to Kubernetes kunt u code uitvoeren en fouten opsporen op uw ontwikkelcomputer. Die computer is nog steeds verbonden met uw Kubernetes-cluster met de rest van uw toepassing of services. Als u een grote microservicesarchitectuur hebt met veel onderling afhankelijke services en databases, kan het lastig zijn om deze afhankelijkheden op uw ontwikkelcomputer te repliceren. Het bouwen en implementeren van code in uw Kubernetes-cluster voor elke codewijziging kan traag, tijdrovend en moeilijk zijn.
Bridge to Kubernetes maakt een verbinding tussen uw ontwikkelcomputer en uw cluster. Deze aanpak voorkomt dat u uw code in uw cluster moet bouwen en implementeren. U kunt uw service testen en ontwikkelen in context, verbonden met uw cluster. Met deze methode kunt u fouten opsporen zonder dat u meer Docker- of Kubernetes-configuratie hoeft te maken.
Brug naar Kubernetes leidt verkeer om tussen uw verbonden Kubernetes-cluster en uw ontwikkelcomputer. Lokale code en services in uw Kubernetes-cluster kunnen communiceren alsof ze zich in hetzelfde Kubernetes-cluster bevinden.
Met Bridge to Kubernetes kunt u omgevingsvariabelen en gekoppelde volumes in uw Kubernetes-cluster repliceren naar uw ontwikkelcomputer. Met toegang tot omgevingsvariabelen en gekoppelde volumes kunt u aan uw code werken zonder deze afhankelijkheden te hoeven repliceren.
Eisen
Notitie
Bridge to Kubernetes werkt niet met Docker for Desktop Kubernetes-clusters. Als u Bridge to Kubernetes wilt gebruiken, hebt u een van de volgende configuraties nodig:
- VS Code met de Bridge naar Kubernetes-extensie geïnstalleerd.
- Visual Studio 2019 versie 16.7 of hoger die wordt uitgevoerd in Windows 10 of hoger. Zorg ervoor dat de ASP.NET- en webontwikkelingsworkload is geïnstalleerd. Installeer de Bridge naar de Kubernetes-extensie.
U kunt Bridge to Kubernetes gebruiken om verbinding te maken met uw Kubernetes-cluster. Met deze verbinding wordt verkeer omgeleid naar en van een bestaande pod in het cluster naar uw ontwikkelcomputer.
Notitie
Wanneer u Bridge to Kubernetes gebruikt, wordt u gevraagd om de naam van de service die naar de ontwikkelcomputer moet worden omgeleid. Deze optie is een handige manier om een pod te identificeren voor omleiding. Alle doorverwijzingen van uw Kubernetes-cluster naar uw ontwikkelcomputer zijn bedoeld voor een pod. Zie Een service beschikbaar makenvoor meer informatie.
In VS Code ondersteunt Bridge to Kubernetes alle talen zolang u ze lokaal kunt uitvoeren. In Visual Studio ondersteunt Bridge to Kubernetes .NET Core. Bridge to Kubernetes biedt geen ondersteuning voor .NET Framework in Visual Studio, omdat hiervoor ondersteuning voor Windows-knooppunten is vereist.
Voorzichtigheid
Bridge to Kubernetes is alleen bedoeld voor gebruik in ontwikkelings- en testscenario's. Het is niet bedoeld of wordt niet ondersteund voor gebruik met productieclusters of liveservices in actief gebruik.
Zie de Bridge to Kubernetes roadmapvoor huidige functies en toekomstige plannen.
Een verbinding tot stand brengen
Wanneer Bridge to Kubernetes een verbinding met uw cluster tot stand brengt, worden de volgende acties uitgevoerd:
- U wordt gevraagd om de service te configureren die moet worden vervangen in uw cluster, de poort op uw ontwikkelcomputer die moet worden gebruikt voor uw code en de starttaak voor uw code als eenmalige actie.
- Vervangt de container in de pod op het cluster door een externe agentcontainer die verkeer omleidt naar uw ontwikkelcomputer.
- Voer op uw ontwikkelcomputer kubectl port-forward uit om verkeer van uw ontwikkelcomputer door te leiden naar de externe agent in uw cluster.
- Verzamelt omgevingsgegevens van uw cluster met behulp van de externe agent. Deze omgevingsinformatie omvat omgevingsvariabelen, zichtbare services, volumekoppelingen en geheime koppelingen.
- Hiermee stelt u de omgeving in Visual Studio in, zodat de service op uw ontwikkelcomputer toegang heeft tot dezelfde variabelen als wanneer deze op het cluster wordt uitgevoerd.
- Hiermee werkt u uw hosts bestand bij om services op uw cluster toe te wijzen aan lokale IP-adressen op uw ontwikkelcomputer. Deze hosts bestandsvermeldingen staan toe dat code die op uw ontwikkelcomputer wordt uitgevoerd verzoeken doet aan andere services die in uw cluster draaien. Als u uw hosts wilt bijwerken bestand, moet Bridge to Kubernetes beheerderstoegang hebben op uw ontwikkelcomputer.
- Start met het uitvoeren en opsporen van fouten in uw code op uw ontwikkelcomputer. Indien nodig maakt Bridge to Kubernetes vereiste poorten op uw ontwikkelcomputer vrij door services of processen te stoppen die momenteel deze poorten gebruiken.
Bridge to Kubernetes gebruiken
Nadat u een verbinding met uw cluster tot stand hebt gebracht, voert u code uit en debugt u deze systeemeigen op uw computer, zonder containerisatie. De code communiceert met uw cluster. Al het netwerkverkeer dat de externe agent ontvangt, wordt omgeleid naar de lokale poort die tijdens de verbinding is opgegeven. Uw systeemeigen actieve code kan dat verkeer accepteren en verwerken. De omgevingsvariabelen, volumes en geheimen uit uw cluster worden beschikbaar gesteld voor code die wordt uitgevoerd op uw ontwikkelcomputer.
Bridge to Kubernetes voegt hosts en bestandsvermeldingen toe en voert port forwarding uit naar uw ontwikkelaarscomputer. Uw code kan netwerkverkeer verzenden naar services die op uw cluster worden uitgevoerd met behulp van de servicenamen van uw cluster. Dat verkeer wordt doorgestuurd naar de services die worden uitgevoerd in uw cluster. Verkeer wordt gerouteerd tussen uw ontwikkelcomputer en uw cluster gedurende de hele tijd dat u bent verbonden.
Bovendien biedt Bridge to Kubernetes een manier om omgevingsvariabelen en gekoppelde bestanden te repliceren die beschikbaar zijn voor pods in uw cluster op uw ontwikkelcomputer via het KubernetesLocalProcessConfig.yaml
-bestand. U kunt ook met dit bestand nieuwe omgevingsvariabelen en volumekoppelingen maken.
Notitie
Voor de duur van de verbinding met het cluster, plus 15 minuten, voert Bridge to Kubernetes een proces uit met de naam EndpointManager met beheerdersmachtigingen op uw lokale computer.
U kunt fouten parallel opsporen met meerdere services. Start zoveel exemplaren van Visual Studio als het aantal services dat u wilt debuggen. Zorg ervoor dat uw services lokaal op verschillende poorten luisteren. Configureer en debug ze afzonderlijk. Isolatie wordt in dit scenario niet ondersteund.
Aanvullende configuratie
Met het bestand KubernetesLocalProcessConfig.yam l kunt u omgevingsvariabelen en gekoppelde bestanden repliceren die beschikbaar zijn voor uw pods in uw cluster. Wanneer u Visual Studio gebruikt, moet het bestand KubernetesLocalConfig.yaml zich in dezelfde map bevinden als het projectbestand voor de service. Zie Bridge configureren voor Kubernetesvoor meer informatie.
Routeringsmogelijkheden gebruiken voor het ontwikkelen in isolatie
Bridge to Kubernetes stuurt standaard al het verkeer voor een service om naar uw ontwikkelcomputer. U kunt in plaats daarvan routeringsmogelijkheden gebruiken om alleen aanvragen van een subdomein om te leiden naar uw ontwikkelcomputer. Met deze routeringsmogelijkheden kunt u Bridge naar Kubernetes gebruiken om geïsoleerd te ontwikkelen en te voorkomen dat ander verkeer in uw cluster wordt onderbroken.
In de volgende animatie ziet u twee ontwikkelaars die in isolatie aan hetzelfde cluster werken:
Wanneer u isolatie inschakelt, voert Bridge to Kubernetes de volgende acties uit naast het maken van verbinding met uw Kubernetes-cluster:
- Controleert of azure Dev Spaces niet is ingeschakeld voor het Kubernetes-cluster.
- Kopieert de gekozen service in het cluster in dezelfde namespace en voegt een routing.visualstudio.io/route-from=SERVICE_NAME label en routing.visualstudio.io/route-on-header=kubernetes-route-as=GENERATED_NAME annotatie toe.
- Hiermee configureert en start u het routeringsbeheer in dezelfde naamruimte op het Kubernetes-cluster. De routeringsmanager gebruikt een labelselector om te zoeken naar het label routing.visualstudio.io/route-from=SERVICE_NAME en de annotatie routing.visualstudio.io/route-on-header=kubernetes-route-as=GENERATED_NAME tijdens het configureren van de routering in uw namespace.
Notitie
Bridge to Kubernetes controleert of uw Kubernetes-cluster is ingeschakeld met Azure Dev Spaces. U wordt gevraagd Om Azure Dev Spaces uit te schakelen voordat u Bridge naar Kubernetes kunt gebruiken.
Het routeringsbeheer voert de volgende acties uit wanneer deze wordt gestart:
- Hiermee worden alle ingresses, inclusief de ingresses van de load balancer, in de naamruimte gedupliceerd met behulp van de GENERATED_NAME voor het subdomein.
- Hiermee maakt u een envoy-pod voor elke service die is gekoppeld aan dubbele ingresses met het GENERATED_NAME-subdomein.
- Hiermee creëer je een extra envoy-pod voor de service waarmee je geïsoleerd werkt. Met deze configuratie kunnen aanvragen met het subdomein worden doorgestuurd naar uw ontwikkelcomputer.
- Hiermee configureert u routeringsregels voor elke envoy-pod voor het afhandelen van routering voor services met het subdomein.
In het volgende diagram ziet u een Kubernetes-cluster voordat Bridge naar Kubernetes verbinding maakt met uw cluster:
In het volgende diagram ziet u hetzelfde cluster met Bridge to Kubernetes ingeschakeld in de isolatiemodus. Hier ziet u de dubbele service en de envoy-pods die ondersteuning bieden voor routering in isolatie.
Wanneer het cluster een aanvraag ontvangt met het subdomein GENERATED_NAME, voegt het een kubernetes-route-as=GENERATED_NAME header toe aan de aanvraag. De envoy-pods behandelen het routeren van het verzoek naar de juiste service in het cluster. Voor een aanvraag naar de service waaraan in isolatie wordt gewerkt, stuurt het cluster de aanvraag door naar uw ontwikkelcomputer door de externe agent.
Wanneer het cluster een aanvraag ontvangt zonder het GENERATED_NAME subdomein, wordt er geen header toegevoegd aan de aanvraag. De envoy-pods behandelen het routeren van het verzoek naar de juiste service in het cluster. Voor een aanvraag voor de service die wordt vervangen, routeren de pods deze naar de oorspronkelijke service in plaats van de externe agent.
Belangrijk
Elke service in uw cluster moet de header kubernetes-route-as=GENERATED_NAME doorsturen bij het doen van aanvullende verzoeken. Wanneer serviceA bijvoorbeeld een aanvraag ontvangt, wordt er een aanvraag ingediend bij serviceB- voordat een antwoord wordt geretourneerd. In dit voorbeeld moet serviceA- de kubernetes-route-as=GENERATED_NAME header in de aanvraag doorsturen naar serviceB-. Sommige talen, zoals ASP.NET, hebben mogelijk methoden voor het doorgeven van headers.
Wanneer u de verbinding met uw cluster verbreekt, verwijdert Bridge to Kubernetes standaard alle envoy-pods en de dubbele service.
Notitie
De implementatie en service van routeringsbeheer blijven actief in uw naamruimte. Als u de implementatie en service wilt verwijderen, voert u de volgende opdrachten uit voor uw naamruimte.
kubectl delete deployment routingmanager-deployment -n NAMESPACE
kubectl delete service routingmanager-service -n NAMESPACE
Diagnostische gegevens en logboekregistratie
Wanneer u Bridge to Kubernetes gebruikt om verbinding te maken met uw cluster, registreert uw computer diagnostische gegevens. Het slaat ze op in de TEMP directory in de Bridge naar Kubernetes map.
Kubernetes RBAC-autorisatie
Kubernetes biedt op rollen gebaseerd toegangsbeheer (RBAC) voor het beheren van machtigingen voor gebruikers en groepen. Zie de Kubernetes-documentatievoor meer informatie. U kunt de machtigingen voor een cluster met RBAC instellen door een YAML-bestand te maken en dit met kubectl
toe te passen op het cluster.
Als u machtigingen voor het cluster wilt instellen, maakt of wijzigt u een YAML-bestand, zoals permissions.yml. Gebruik uw naamruimte voor <namespace>
en de gebruikers en groepen die toegang nodig hebben.
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
Pas de machtigingen toe met behulp van de volgende opdracht:
kubectl -n <namespace> apply -f <yaml file name>
Beperkingen
Bridge to Kubernetes heeft de volgende beperkingen:
- Een pod mag slechts één container hebben die in die pod draait om met succes verbinding te maken met Bridge naar Kubernetes.
- Bridge to Kubernetes-pods moeten momenteel Linux-containers zijn. Windows-containers worden niet ondersteund.
- Bridge to Kubernetes heeft verhoogde machtigingen nodig om op uw ontwikkelcomputer uit te voeren om het hosts-bestand te kunnen bewerken.
- Bridge to Kubernetes kan niet worden gebruikt voor clusters waarvoor Azure Dev Spaces is ingeschakeld.
Volgende stappen
Als u Bridge to Kubernetes wilt gebruiken om verbinding te maken met uw lokale ontwikkelcomputer met uw cluster, raadpleegt u Bridge gebruiken voor Kubernetes (VS) of Bridge gebruiken voor Kubernetes (VS Code).