Använd Bridge to Kubernetes (VS Code)
Anteckning
Bron till Kubernetes dras tillbaka den 30 april 2025. Mer information om alternativen för tillbakadragning och öppen källkod finns i GitHub-problem.
Med Bridge to Kubernetes kan du köra och felsöka kod på utvecklingsdatorn medan du fortfarande är ansluten till Kubernetes-klustret med resten av programmet eller tjänsterna. I den här guiden får du lära dig hur du använder Bridge to Kubernetes för att omdirigera trafik mellan ditt Kubernetes-kluster och kod som körs på utvecklingsdatorn.
Innan du börjar
Den här artikeln förutsätter att du redan har ett eget kluster med en arkitektur för mikrotjänster och att du vill felsöka en av poddarna i klustret. Om du vill lära dig hur du använder Bridge till Kubernetes med ett befintligt exempelprogram kan du läsa Använda Bridge till Kubernetes med ett exempel. Om du använder Azure Kubernetes-tjänsten och vill använda ett mer komplext exempelprogram kan du läsa Bridge to Kubernetes (AKS).
Förutsättningar
- Ett Kubernetes-kluster med en app som du vill felsöka.
- Visual Studio Code körs på macOS, Windows 10 eller senare eller Linux.
Ansluta till klustret och felsöka en tjänst
Det finns ett par olika sätt att starta felsökningsprocessen med Bridge to Kubernetes. Om du börjar med Kubernetes-tillägget med öppen källkod, och Bridge to Kubernetes inte är installerat, går du till Installera och använd lokal tunnelfelsökning. Om du redan har Bridge to Kubernetes installerat fortsätter du med följande steg:
På utvecklingsdatorn kontrollerar du att den aktuella kontexten är inställd på klustret och namnområdet där programmet körs.
Öppna arbetsytan för den app som du vill felsöka i Visual Studio Code. I Kubernetes-tilläggsvyn under Klusterkontrollerar du att klustret och namnområdet är markerade. Öppna kommandopaletten (CTRL+SKIFT+P eller Cmd+Skift+P på en Mac) och kör kommandot Bridge till Kubernetes: Konfigurera för att starta konfigurationsprocessen.
Välj den Kubernetes-tjänst som du vill omdirigera till din lokala version.
All trafik i Kubernetes-klustret omdirigeras för tjänsten till den version av programmet som körs på utvecklingsdatorn. Bridge to Kubernetes dirigerar även all utgående trafik från programmet tillbaka till ditt Kubernetes-kluster.
Viktig
Du kan bara omdirigera tjänster som har en enda podd.
När du har valt din tjänst hoppar du över nästa avsnitt och fortsätter genom att följa stegen i Konfigurera felsökningsprogrammet för lokal tunnelfelsökning med Bridge to Kubernetes.
Installera och använda lokal tunnelfelsökning
Följ dessa steg för att börja använda lokal tunnelfelsökning när du har Kubernetes-tillägget med öppen källkod installerat och har ett Kubernetes-kluster med tjänster som du vill felsöka. Stegen i det här avsnittet tar dig igenom installationen av Bridge to Kubernetes och startar konfigurationsprocessen för lokal tunnelfelsökning.
Anteckning
Kubernetes-tillägget för VS Code tillhandahåller en API-startpunkt som gör att tilläggsförfattare kan bidra med andra lokala tunnellösningar från VS Code Marketplace. Bridge to Kubernetes är en möjlig implementering av funktionen för felsökning av lokal tunnel.
Det finns två sätt att börja använda lokal tunnelfelsökning i VS Code. Det första sättet är att öppna kommandopaletten (CTRL+SKIFT+P eller Cmd+Shift+P på en Mac) och skriva Kubernetes: Felsökning (lokal tunnel).
Du kan också gå till Kubernetes-klusterutforskaren. Öppna det aktiva klustrets resurser och leta upp en tjänst eller podd som du vill felsöka, högerklicka sedan på tjänsten och välj Felsökning: Lokal tunnel.
Om du nu inte har något VS Code-tillägg installerat som erbjuder lokala felsökningsfunktioner omdirigeras du till Marketplace för att välja ett tillägg som tillhandahåller lokal felsökning. Välj Bridge till Kubernetes-tillägget.
När Bridge to Kubernetes-tillägget har installerats hoppar du över installationssteget nästa gång du väljer Felsökning: Lokal tunneloch fortsätter direkt till nästa steg Konfigurera felsökningsprogrammet för lokal tunnelfelsökning med Bridge to Kubernetes.
Konfigurera felsökningsprogrammet för lokal tunnelfelsökning med Bridge to Kubernetes
Det första steget i att konfigurera felsökningsprogrammet för lokal tunnelfelsökning är att du uppmanas att ange den TCP-port som programmet använder för att köra lokalt:
Välj en konfiguration för felsökningsstart som du normalt använder när du kör programmet lokalt. Om du inte har någon startkonfiguration kan du antingen låta Bridge to Kubernetes skapa en eller välja att inte skapa en, i vilket fall du måste starta programmet eller tjänsten manuellt. Läs mer på Startkonfiguration.
Du kan köra i isolerat läge eller inte isolerat läge. Om du kör isolerad dirigeras endast dina begäranden till din lokala process. andra utvecklare kan använda klustret utan att påverkas. Om du inte kör isolerad omdirigeras all trafik till din lokala process. Mer information om det här alternativet finns i Använda routningsfunktioner för att utveckla isolerat.
Välj ikonen Felsök till vänster och välj den nyligen tillagda Kubernetes-startkonfigurationen, till exempel Starta via NPM med Kuberneteslängst upp. Den här startkonfigurationen skapas av Bridge to Kubernetes, om du väljer det alternativet.
Anteckning
Du uppmanas att tillåta EndpointManager att köras med förhöjda rättigheter och ändra värdfilen (hosts-filen).
Utvecklingsdatorn är ansluten när statusfältet för VS Code blir orange och Kubernetes-tillägget visar att du är ansluten.
När utvecklingsdatorn är ansluten börjar trafiken omdirigeras till utvecklingsdatorn för den tjänst som du ersätter.
Anteckning
Vid efterföljande uppskjutningar uppmanas du inte att ange tjänstnamn, port, startaktivitet eller om du vill köra isolerad. Dessa värden sparas i .vscode/tasks.json
. Om du vill ändra de här inställningarna senare öppnar du kommandopaletten (CTRL+SKIFT+P eller Cmd+Shift+P på en Mac) och kör kommandot Bridge to Kubernetes: Configure. Du kan öppna .vscode/launch.json och .vscode/tasks.json för att se de specifika konfigurationsinställningar som Bridge to Kubernetes lägger till i din startprofil.
Om ditt kluster använder gRPC C-kärnan, en implementering av gRPC som använder c-ares, läggs en miljövariabel till i din startprofil, GRPC_DNS_RESOLVER, med värdet native
. Den här variabeln anger att du ska använda en lösning för att undvika en tidsfördröjning på 2 minuter vid anslutning. Mer information finns i det här gRPC-problemet.
Ange en brytpunkt
Ange en brytpunkt med F9 eller välj Kör och sedan Växla brytpunkt.
Gå till exempelprogrammet genom att öppna den offentliga URL:en. När koden når brytpunkten bör den öppnas i felsökningsprogrammet. Om du vill återuppta tjänsten trycker du på Ctrl +F5 eller väljer Kör och sedan Fortsätt. Gå tillbaka till webbläsaren och kontrollera att du ser en platshållarbild för cykeln.
Uppdatera ditt program
Om du gör kodändringar lokalt, oavsett om de är synliga för andra som använder klustret eller inte, beror på om du kör isolerade eller inte. Om du kör isolerad kan du göra ändringar som inte påverkar andra användare.
Redigera koden, spara ändringarna och tryck på Ctrl+Skift+F5 (⇧⌘F5 på en Mac) eller välj Kör och sedan Starta om felsökning. När du har återanslutit uppdaterar du webbläsaren och verifierar ändringarna.
Välj Körstoppa felsökningen eller tryck på Skift+F5 för att stoppa felsökningsprogrammet.
Anteckning
Som standard kopplas din utvecklingsdator från Kubernetes-klustret när du stoppar felsökningsaktiviteten. Du kan ändra det här beteendet genom att söka efter Bridge till Kubernetes: Koppla från efter felsökning i Visual Studio Code-inställningarna och ta bort markeringen bredvid Koppla från automatiskt när felsökningen avslutas. När du har uppdaterat den här inställningen förblir utvecklingsdatorn ansluten när du stoppar och börjar felsöka. Om du vill koppla från utvecklingsdatorn från klustret klickar du på Bridge to Kubernetes-tillägget i statusfältet och väljer sedan Koppla från den aktuella sessionen.
Ytterligare konfiguration
Bridge to Kubernetes kan hantera routningstrafik och replikering av miljövariabler utan ytterligare konfiguration. Om du behöver ladda ned filer som är monterade på containern i kubernetes-klustret, till exempel en ConfigMap-fil, kan du skapa en KubernetesLocalProcessConfig.yaml
för att ladda ned filerna till utvecklingsdatorn. Mer information finns i Konfigurera brygga till Kubernetes.
Om du använder ett AKS-kluster som använder hanterad identitet, en säkerhetsfunktion som tillhandahålls av Microsoft Entra-ID, se Använda hanterad identitet med Bridge till Kubernetes för information om hur du konfigurerar Bridge till Kubernetes för det här scenariot.
Använda loggning och diagnostik
Loggningsutdata skrivs till fönstret Bridge till Kubernetes när utvecklingsdatorn är ansluten till ditt Kubernetes-kluster.
Klicka på Kubernetes statusfältet och välj Visa information om anslutningsdiagnostik. Det här kommandot skriver ut de aktuella miljövariablerna och DNS-posterna i loggningsutdata.
Dessutom hittar du diagnostikloggarna i katalogen Bridge to Kubernetes
i utvecklingsdatorns TEMP-katalog. I Windows 10 finns det i %TEMP%\Bridge to Kubernetes
. På en Mac kan temp-katalogen hittas genom att köra echo $TMPDIR
från ett terminalfönster. I Linux är det /tmp/Bridge to Kubernetes
.
Körs i isoleringsläge
Med Bridge to Kubernetes kan du också konfigurera en isolerad version av de tjänster som du arbetar med, vilket innebär att andra som använder klustret inte påverkas av dina ändringar. Det här isoleringsläget utförs genom att dirigera dina begäranden till din kopia av varje berörd tjänst, men dirigera all övrig trafik normalt. Om du vill komma åt den lokala slutpunkts-URL:en för den isolerade appen startar du felsökningsprogrammet i isoleringsläge, öppnar Kubernetes-menyn i statusfältet och väljer slutpunktsposten. Mer information om hur routning fungerar i isoleringsläge finns i How Bridge to Kubernetes Works.
Sidhuvudspridning
Om du vill använda Bridge to Kubernetes på det sätt som den är utformad måste du se till att sprida Bridge till Kubernetes-huvudet från inkommande begäranden till alla begäranden som dina tjänster gör till andra tjänster i klustret. Alla API:er för HTTP-begäranden, oavsett språk, tillhandahåller ett ramverksspecifikt sätt att göra detta. För .NET-kod i C#kan du till exempel använda kod som liknar följande:
var request = new HttpRequestMessage();
request.RequestUri = new Uri("http://mywebapi/api/values/1");
if (this.Request.Headers.ContainsKey("kubernetes-route-as"))
{
// Propagate the dev space routing header
request.Headers.Add("kubernetes-route-as", this.Request.Headers["kubernetes-route-as"] as IEnumerable<string>);
}
var response = await client.SendAsync(request);
Anteckning
För att undvika att påverka kod vid varje begäran kan du skapa en klass som ärver från System.Net.Http.DelegatingHandler och åsidosätta metoden SendAsync
med kod som liknar föregående exempel. Du hittar kod med hjälp av den här tekniken på webben. Ett exempel är korrekt spridning av "kubernetes-route-as" i Bridge to Kubernetes.
För Node.js tjänster kan du använda kod som liknar följande, hämtad från todo-app-exemplet i Bridge till Kubernetes-lagringsplatsen:
server.get("/api/stats", function (req, res) {
var options = {
host: process.env.STATS_API_HOST,
path: '/stats',
method: 'GET'
};
const val = req.get('kubernetes-route-as');
if (val) {
console.log('Forwarding kubernetes-route-as header value - %s', val);
options.headers = {
'kubernetes-route-as': val
}
}
var req = http.request(options, function(statResponse) {
res.setHeader('Content-Type', 'application/json');
var responseString = '';
//another chunk of data has been received, so append it to `responseString`
statResponse.on('data', function (chunk) {
responseString += chunk;
});
statResponse.on('end', function () {
res.send(responseString);
});
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
req.end();
});
Kommunicera med andra tjänster
När du kommunicerar med en annan tjänst i samma Kubernetes-kluster, till exempel med en HTTP-begäran, använder du vanligtvis det hårdkodade tjänstnamnet i URL:en för begäran, men det fungerar inte i vissa scenarier, till exempel när du använder Fjärr-SSH, WSL och Codespaces. Den här artikeln beskriver hur du använder Kubernetes-tjänstmiljövariablerna för att ange anslutnings-URL:en för dessa scenarier.
Felsökning
Om du får det här felet när du aktiverar Bridge to Kubernetes-tillägget:
"Det gick inte att uppdatera beroenden: maximalt antal återförsök har överskridits"
Försök först aktivera igen med hjälp av knappen . Om det inte lyckas flera gånger, se https://github.com/microsoft/mindaro/issues/32.
När du använder Bridge to Kubernetes i en fjärr-SSH-session kan problemet vara att Bridge to Kubernetes inte kan ändra värdfilen på grund av ett behörighetsproblem om EndpointManager misslyckas. Om du vill aktivera fjärr-SSH eller köra som icke-upphöjd användare bör du uppdatera koden så att den använder Kubernetes-tjänstmiljövariabler och konfigurera VS Code för att använda dem, enligt beskrivningen i Miljövariabler för tjänst.
Nästa steg
Läs mer om Bridge to Kubernetes på How Bridge to Kubernetes works.
Om du behöver felsöka flera tjänster samtidigt parallellt kan du läsa Felsöka flera tjänster samtidigt.