Så här fungerar Bridge to Kubernetes
Not
Bron till Kubernetes kommer att avvecklas den 30 april 2025. Mer information om alternativen för tillbakadragning och öppen källkod finns i GitHub-problem.
Bridge to Kubernetes är ett iterativt utvecklingsverktyg för redigering av mikrotjänstprogram som riktar sig till Kubernetes. Bridge to Kubernetes-tillägget är tillgängligt för Visual Studio och Visual Studio Code (VS Code).
Med Bridge to Kubernetes kan du köra och felsöka kod på utvecklingsdatorn. Datorn är fortfarande ansluten till ditt Kubernetes-kluster med resten av programmet eller tjänsterna. Om du har en stor mikrotjänstarkitektur med många beroende tjänster och databaser kan det vara svårt att replikera dessa beroenden på utvecklingsdatorn. Det kan vara långsamt, tidskrävande och svårt att skapa och distribuera kod till kubernetes-klustret för varje kodändring.
Bridge to Kubernetes skapar en anslutning mellan utvecklingsdatorn och klustret. Den här metoden undviker att behöva skapa och distribuera koden till klustret. Du kan testa och utveckla din tjänst i ett sammanhang som är anslutet till klustret. Med den här metoden kan du felsöka utan att skapa fler Docker- eller Kubernetes-konfigurationer.
Bridge to Kubernetes omdirigerar trafik mellan ditt anslutna Kubernetes-kluster och utvecklingsdatorn. Lokal kod och tjänster i kubernetes-klustret kan kommunicera som om de finns i samma Kubernetes-kluster.
Med Bridge to Kubernetes kan du replikera miljövariabler och monterade volymer i Kubernetes-klustret till utvecklingsdatorn. Med åtkomst till miljövariabler och monterade volymer kan du arbeta med din kod utan att behöva replikera dessa beroenden.
Krav
Not
Bridge to Kubernetes fungerar inte med Docker for Desktop Kubernetes-kluster. Om du vill använda Bridge to Kubernetes behöver du någon av följande konfigurationer:
- VS Code med Bridge till Kubernetes-tillägget installerat.
- Visual Studio 2019 version 16.7 eller senare som körs på Windows 10 eller senare. Se till att ASP.NET och webbutveckling arbetsbelastning är installerad. Installera Bridge för Kubernetes-förlängningen.
Du kan använda Bridge to Kubernetes för att upprätta en anslutning till ditt Kubernetes-kluster. Den här anslutningen omdirigerar trafik till och från en befintlig podd i klustret till din utvecklingsdator.
Not
När du använder Bridge to Kubernetes uppmanas du att ange namnet på tjänsten som ska omdirigeras till utvecklingsdatorn. Det här alternativet är ett praktiskt sätt att identifiera en podd för omdirigering. All omdirigering mellan Kubernetes-klustret och utvecklingsdatorn gäller en pod. Mer information finns i Gör en tjänst tillgänglig.
I VS Code stöder Bridge to Kubernetes alla språk så länge du kan köra dem lokalt. I Visual Studio stöder Bridge to Kubernetes .NET Core. Bridge to Kubernetes stöder inte .NET Framework i Visual Studio eftersom det kräver stöd för Windows-noder.
Försiktighet
Bridge to Kubernetes är endast avsett för användning i utvecklings- och testscenarier. Den är inte avsedd eller stöds inte för användning med produktionskluster eller livetjänster i aktiv användning.
Aktuella funktioner och framtida planer finns i översikten Bridge to Kubernetes.
Upprätta en anslutning
När Bridge to Kubernetes upprättar en anslutning till klustret vidtar den följande åtgärder:
- Föreslår att du konfigurerar tjänsten för att ersätta i ditt kluster, porten på din utvecklingsdator som ska användas för din kod och startuppgiften för din kod som en engångsåtgärd.
- Ersätter containern i podden i klustret med en fjärragent-container som omdirigerar trafiken till din utvecklingsdator.
- Kör kubectl port-forward på utvecklingsdatorn för att vidarebefordra trafik från utvecklingsdatorn till fjärragenten som körs i klustret.
- Samlar in miljöinformation från klustret med hjälp av fjärragenten. Den här miljöinformationen innehåller miljövariabler, synliga tjänster, volymmonteringar och hemliga monteringar.
- Konfigurerar miljön i Visual Studio så att tjänsten på utvecklingsdatorn kan komma åt samma variabler som om den kördes i klustret.
- Uppdaterar dina värdar fil för att mappa tjänster i klustret till lokala IP-adresser på utvecklingsdatorn. Dessa värdar med filer tillåter kod som körs på din utvecklingsdator att skicka begäranden till andra tjänster som körs i klustret. För att uppdatera dina värdars-fil behöver Bridge to Kubernetes administratörsåtkomst till utvecklingsdatorn.
- Börjar köra och felsöka koden på utvecklingsdatorn. Om det behövs frigör Bridge to Kubernetes nödvändiga portar på utvecklingsdatorn genom att stoppa tjänster eller processer som för närvarande använder dessa portar.
Använda Bridge till Kubernetes
När du har upprättat en anslutning till klustret kör och felsöker du kod internt på datorn, utan containerisering. Koden interagerar med klustret. All nätverkstrafik som fjärragenten tar emot omdirigeras till den lokala port som angavs under anslutningen. Din kod som körs internt kan acceptera och bearbeta trafiken. Miljövariabler, volymer och hemligheter från klustret görs tillgängliga för kod som körs på utvecklingsdatorn.
Bridge to Kubernetes lägger till hostfiler filposter och portvidarebefordring till din utvecklardator. Koden kan skicka nätverkstrafik till tjänster som körs i klustret med hjälp av tjänstnamnen från klustret. Trafiken vidarebefordras till de tjänster som körs i klustret. Trafiken dirigeras mellan utvecklingsdatorn och klustret hela tiden du är ansluten.
Dessutom tillhandahåller Bridge to Kubernetes ett sätt att replikera miljövariabler och monterade filer som är tillgängliga för poddar i klustret på utvecklingsdatorn via KubernetesLocalProcessConfig.yaml
-filen. Du kan också använda den här filen för att skapa nya miljövariabler och volymmonteringar.
Not
Under hela anslutningen till klustret, plus 15 minuter, kör Bridge to Kubernetes en process som heter EndpointManager med administratörsbehörighet på den lokala datorn.
Du kan felsöka parallellt med flera tjänster. Starta så många instanser av Visual Studio som tjänster som du vill felsöka. Se till att dina tjänster lyssnar på olika portar lokalt. Konfigurera och felsöka dem separat. Isolering stöds inte i det här scenariot.
Ytterligare konfiguration
Med filen KubernetesLocalProcessConfig.yaml kan du replikera miljövariabler och monterade filer som är tillgängliga för dina poddar i klustret. När du använder Visual Studio måste filen KubernetesLocalConfig.yaml finnas i samma katalog som projektfilen för tjänsten. Mer information finns i Konfigurera brygga till Kubernetes.
Använda routningsfunktioner för att utveckla isolerat
Som standard omdirigerar Bridge till Kubernetes all trafik för en tjänst till utvecklingsdatorn. Du kan i stället använda routningsfunktioner för att endast omdirigera begäranden från en underdomän till utvecklingsdatorn. Med de här routningsfunktionerna kan du använda Bridge to Kubernetes för att utvecklas isolerat och undvika att störa annan trafik i klustret.
Följande animering visar två utvecklare som arbetar med samma kluster isolerat:
När du aktiverar arbete i isolering utför Bridge to Kubernetes följande åtgärder utöver att ansluta till ditt Kubernetes-kluster:
- Verifierar att Kubernetes-klustret inte har Azure Dev Spaces aktiverat.
- Replikerar den valda tjänsten i klustret i samma namnområde och lägger till en routing.visualstudio.io/route-from=SERVICE_NAME tagg och en routing.visualstudio.io/route-on-header=kubernetes-route-as=GENERATED_NAME annotering.
- Konfigurerar och startar routningshanteraren i samma namnrymd i Kubernetes-klustret. Routningshanteraren använder en etikettselektor för att leta efter etiketten routing.visualstudio.io/route-from=SERVICE_NAME och routing.visualstudio.io/route-on-header=kubernetes-route-as=GENERATED_NAME när routningen konfigureras i ditt namnområde.
Not
Bridge to Kubernetes kontrollerar om Azure Dev Spaces är aktiverat i ditt Kubernetes-kluster. Du uppmanas att inaktivera Azure Dev Spaces innan du kan använda Bridge to Kubernetes.
Routningshanteraren utför följande åtgärder när den startas:
- Duplicerar alla ingresser, inklusive ingresser för lastbalanserare, som finns i namnrymden med hjälp av GENERATED_NAME för underdomänen.
- Skapar en envoy-pod för varje tjänst som är associerad med duplicerade ingresser med underdomänen GENERATED_NAME.
- Skapar en annan envoy-podd för den tjänst som du arbetar med isolerat. Med den här konfigurationen kan begäranden med underdomänen dirigeras till utvecklingsdatorn.
- Konfigurerar routningsregler för varje envoy-podd för att hantera routning för tjänster med underdomänen.
Följande diagram visar ett Kubernetes-kluster innan Bridge till Kubernetes ansluter till klustret:
Följande diagram visar samma kluster med Bridge to Kubernetes aktiverat i isoleringsläge. Här kan du se duplicerade tjänster och envoy-poddar som stöder routning isolerat.
När klustret tar emot en begäran med underdomänen GENERATED_NAME lägger det till en kubernetes-route-as=GENERATED_NAME-rubrik i begäran. Envoy-poddarna hanterar att routa denna begäran till lämplig tjänst i klustret. För en begäran till tjänsten som bearbetas i isolering omdirigerar klustret begäran till din utvecklingsdator via fjärragenten.
När klustret tar emot en begäran utan underdomänen GENERATED_NAME lägger det inte till ett huvud i begäran. Envoy-poddarna hanterar att routa denna begäran till lämplig tjänst i klustret. För en begäran av den tjänst som håller på att ersättas omdirigerar poddarna den till den ursprungliga tjänsten snarare än fjärragenten.
Viktig
Varje tjänst i klustret måste vidarebefordra kubernetes-route-as=GENERATED_NAME-huvudet när ytterligare begäranden görs. När en begäran tas emot av serviceA, skickar den till exempel en begäran till serviceB innan den returnerar ett svar. I det här exemplet måste serviceA vidarebefordra kubernetes-route-as=GENERATED_NAME-huvudet i begäran till serviceB. Vissa språk, till exempel ASP.NET, kan ha metoder för att hantera sidhuvudspridning.
När du kopplar från ditt kluster tar Bridge till Kubernetes bort alla envoy-poddar och den duplicerade tjänsten som standard.
Not
Distributionen och tjänsten för routningshanteraren körs fortfarande i ditt namnområde. Om du vill ta bort distributionen och tjänsten kör du följande kommandon för ditt namnområde.
kubectl delete deployment routingmanager-deployment -n NAMESPACE
kubectl delete service routingmanager-service -n NAMESPACE
Diagnostik och loggning
När du använder Bridge till Kubernetes för att ansluta till klustret loggar datorn diagnostik. Den lagrar dem i utvecklingsdatorns katalog TEMP i mappen Bridge to Kubernetes.
Kubernetes RBAC-auktorisering
Kubernetes tillhandahåller rollbaserad åtkomstkontroll (RBAC) för att hantera behörigheter för användare och grupper. Mer information finns i Kubernetes-dokumentationen. Du kan ange behörigheter för ett RBAC-aktiverat kluster genom att skapa en YAML-fil och använda kubectl
för att tillämpa den på klustret.
Om du vill ange behörigheter för klustret skapar eller ändrar du en YAML-fil, till exempel permissions.yml. Använd ditt namnområde för <namespace>
och de användare och grupper som behöver åtkomst.
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
Använd behörigheterna med hjälp av följande kommando:
kubectl -n <namespace> apply -f <yaml file name>
Begränsningar
Bridge to Kubernetes har följande begränsningar:
- En pod kan endast ha en enda container som körs för att Bridge till Kubernetes ska kunna ansluta.
- För närvarande måste Bridge to Kubernetes-poddar vara Linux-containrar. Windows-containrar stöds inte.
- Bridge to Kubernetes behöver utökade behörigheter för att köras på utvecklingsdatorn för att kunna redigera värdfilen.
- Bridge to Kubernetes kan inte användas i kluster med Azure Dev Spaces aktiverat.
Nästa steg
Om du vill komma igång med Bridge to Kubernetes för att ansluta din lokala utvecklingsdator till klustret kan du läsa Använda Bridge to Kubernetes (VS) eller Använda Bridge to Kubernetes (VS Code).