Delen via


Bridge gebruiken voor Kubernetes (VS Code)

Notitie

Bridge to Kubernetes wordt op 30 april 2025 buiten gebruik gesteld. Zie de GitHub-probleemvoor meer informatie over de buitengebruikstelling en opensource-alternatieven.

Met Bridge to Kubernetes kunt u code uitvoeren en fouten opsporen op uw ontwikkelcomputer, terwijl u nog steeds bent verbonden met uw Kubernetes-cluster met de rest van uw toepassing of services. In deze handleiding leert u hoe u Bridge naar Kubernetes gebruikt om verkeer om te leiden tussen uw Kubernetes-cluster en code die wordt uitgevoerd op uw ontwikkelcomputer.

Voordat u begint

In dit artikel wordt ervan uitgegaan dat u al uw eigen cluster hebt met een microservicesarchitectuur en dat u fouten wilt opsporen in een van de pods in uw cluster. Als u wilt weten hoe u Bridge to Kubernetes gebruikt met een bestaande voorbeeldtoepassing, raadpleegt u Bridge gebruiken voor Kubernetes met een voorbeeld. Als u azure Kubernetes-service gebruikt en een complexere voorbeeldtoepassing wilt gebruiken, raadpleegt u Bridge to Kubernetes (AKS).

Voorwaarden

  • Een Kubernetes-cluster met een app die u wilt debuggen.
  • Visual Studio Code uitgevoerd op macOS, Windows 10 of hoger of Linux.

Verbinding maken met uw cluster en fouten opsporen in een service

Er zijn verschillende manieren om het proces van foutopsporing met Bridge to Kubernetes te starten. Als u begint met de open source Kubernetes-extensie, zonder Bridge to Kubernetes geïnstalleerd, gaat u naar Lokale tunnel-foutopsporing installeren en gebruiken. Als u Bridge to Kubernetes al hebt geïnstalleerd, gaat u verder met de volgende stappen:

  1. Controleer op uw ontwikkelcomputer of uw huidige context is ingesteld op het cluster en de naamruimte waarin uw toepassing wordt uitgevoerd.

  2. Open de werkruimte voor de app die je wilt debuggen in Visual Studio Code. Controleer in de Kubernetes-extensieweergave onder Clustersof uw cluster en naamruimte zijn geselecteerd. Open het opdrachtenpalet (Ctrl+Shift+P of Cmd+Shift+P op een Mac) en voer de opdracht Bridge naar Kubernetes uit: Configureer om het configuratieproces te starten.

  3. Kies de Kubernetes-service die u wilt omleiden naar uw lokale versie.

    Selecteer de service om verbinding te maken met

    Al het verkeer in het Kubernetes-cluster wordt omgeleid voor uw service naar de versie van uw toepassing die wordt uitgevoerd op uw ontwikkelcomputer. Bridge to Kubernetes routeert ook al het uitgaande verkeer van de toepassing terug naar uw Kubernetes-cluster.

    Belangrijk

    U kunt alleen services omleiden die één pod hebben.

  4. Nadat u uw service hebt geselecteerd, slaat u de volgende sectie over en gaat u verder met de stappen in Het foutopsporingsprogramma configureren voor lokale tunnelopsporing met Bridge to Kubernetes.

Lokale tunnelopsporing installeren en gebruiken

Volg deze stappen om lokale tunneldiagnostiek te gebruiken wanneer u de opensource-Kubernetes-extensie hebt geïnstalleerd en een Kubernetes-cluster hebt met services die u wilt debuggen. Met de stappen in deze sectie doorloopt u de installatie van Bridge to Kubernetes en start u het configuratieproces voor lokale tunnelfoutopsporing.

Notitie

De Kubernetes-extensie voor VS Code biedt een API-toegangspunt waarmee auteurs van extensies andere lokale tunneloplossingen kunnen bijdragen vanuit vs Code Marketplace. Bridge to Kubernetes is één mogelijke implementatie van de mogelijkheid voor foutopsporing van lokale tunnel.

Er zijn twee manieren om te beginnen met het gebruik van lokale tunnelopsporing in VS Code. De eerste manier is om het opdrachtpalet te openen (Ctrl+Shift+P of Cmd+Shift+P op een Mac) te typen en Kubernetes: Debug (Local Tunnel)te typen.

Schermopname met de opdracht Debug (Local Tunnel) in VS Code

U kunt ook naar uw Kubernetes-clusterverkenner navigeren. Open de resources van het actieve cluster en zoek een service of pod die u wilt opsporen, klik met de rechtermuisknop op de service en selecteer Foutopsporing: Lokale tunnel.

Als u op dit moment geen VS Code-extensie hebt geïnstalleerd die lokale foutopsporingsmogelijkheden biedt, wordt u omgeleid naar Marketplace om een extensie te selecteren die lokale foutopsporing biedt. Selecteer de Bridge to Kubernetes extensie.

Schermopname van het contextmenu Voor foutopsporing in lokale tunnel in VS Code

Nadat de Bridge to Kubernetes-extensie is geïnstalleerd, gaat u de volgende keer dat u Foutopsporing kiest: Lokale tunnel, slaat u de installatiestap over en gaat u rechtstreeks verder met de volgende stap, Het foutopsporingsprogramma voor lokale tunnelfoutopsporing configureren met Bridge to Kubernetes.

Het foutopsporingsprogramma configureren voor foutopsporing in lokale tunnels met Bridge to Kubernetes

De eerste stap bij het configureren van het foutopsporingsprogramma voor lokale tunnelopsporing is dat u wordt gevraagd om de TCP-poort in te voeren die uw toepassing gebruikt om lokaal uit te voeren:

voer het poortnummer in

Kies een opstartconfiguratie voor foutopsporing die u normaal gesproken gebruikt bij het lokaal uitvoeren van uw toepassing. Als u geen startconfiguratie hebt, kunt u Bridge naar Kubernetes er een laten maken of ervoor kiezen om er geen te maken. In dat geval moet u uw toepassing of service handmatig starten. Meer informatie vindt u op startconfiguraties.

Kies de startconfiguratie van het foutopsporingsprogramma

U hebt de mogelijkheid om geïsoleerd of niet geïsoleerd uit te voeren. Als u geïsoleerd uitvoert, worden alleen uw aanvragen doorgestuurd naar uw lokale proces; andere ontwikkelaars kunnen het cluster gebruiken zonder dat dit wordt beïnvloed. Als u niet in een geïsoleerde modus werkt, wordt al het verkeer omgeleid naar uw lokale proces. Zie Het gebruik van routeringsmogelijkheden voor ontwikkelen in isolatievoor meer informatie over deze optie.

Isolatie kiezen

Selecteer het pictogram Foutopsporing aan de linkerkant en selecteer bovenaan de zojuist toegevoegde Kubernetes-startconfiguratie, zoals Starten via NPM met Kubernetes. Deze startconfiguratie wordt gemaakt door Bridge to Kubernetes als u deze optie kiest.

Foutopsporingsprofiel kiezen

Notitie

U wordt gevraagd om de EndpointManager met verhoogde rechten uit te voeren en uw hosts-bestand te wijzigen.

Uw ontwikkelcomputer is verbonden wanneer de VS Code-statusbalk oranje wordt en de Kubernetes-extensie laat zien dat u verbonden bent.

foutopsporing met Bridge to Kubernetes-

Zodra uw ontwikkelcomputer is verbonden, wordt verkeer omgeleid naar uw ontwikkelcomputer voor de service die u vervangt.

Notitie

Bij latere starten wordt u niet gevraagd om de servicenaam, poort, opstarttaak of of deze geïsoleerd moet worden uitgevoerd. Deze waarden worden opgeslagen in .vscode/tasks.json. Als u deze instellingen later wilt wijzigen, opent u het opdrachtpalet (Ctrl+Shift+P of Cmd+Shift+P op een Mac) en voert u de opdracht Bridge uit naar Kubernetes:configureren. U kunt .vscode/launch.json en .vscode/tasks.json openen om de specifieke configuratie-instellingen te zien die Bridge to Kubernetes toevoegt aan uw startprofiel.

Als uw cluster gebruikmaakt van gRPC C core, wordt er een implementatie van gRPC die gebruikmaakt van c-ares, een omgevingsvariabele toegevoegd aan uw startprofiel, GRPC_DNS_RESOLVER, met de waarde native. Deze variabele geeft aan om een tijdelijke oplossing te gebruiken om een vertraging van 2 minuten te voorkomen bij het verbinden. Zie dit gRPC-probleemvoor meer informatie.

Een onderbrekingspunt instellen

Stel een onderbrekingspunt in met F9- of selecteer Uitvoeren en vervolgens Onderbrekingspunt in-/uitschakelen.

Navigeer naar de voorbeeldtoepassing door de openbare URL te openen. Wanneer uw code het onderbrekingspunt bereikt, moet deze worden geopend in het foutopsporingsprogramma. Als u de service wilt hervatten, drukt u op Ctrl+F5- of selecteert u uitvoeren en vervolgens Doorgaan. Ga terug naar uw browser en controleer of u een tijdelijke aanduiding voor de fiets ziet.

Uw toepassing bijwerken

Wanneer u codewijzigingen lokaal aanbrengt, of deze wel of niet zichtbaar zijn voor anderen die het cluster gebruiken, is afhankelijk van of u wordt geïsoleerd of niet. Als u geïsoleerd werkt, kunt u wijzigingen aanbrengen die geen invloed hebben op andere gebruikers.

Bewerk de code, sla uw wijzigingen op en druk op Ctrl+Shift+F5 (⇧⌘F5 op een Mac) of selecteer uitvoeren en Foutopsporing opnieuw starten. Nadat u opnieuw verbinding hebt gemaakt, vernieuwt u uw browser en valideert u uw wijzigingen.

Selecteer uitvoeren en vervolgens Foutopsporing stoppen of druk op Shift+F5- om het foutopsporingsprogramma te stoppen.

Notitie

Als u de foutopsporingstaak stopt, wordt uw ontwikkelcomputer ook losgekoppeld van uw Kubernetes-cluster. U kunt dit gedrag wijzigen door te zoeken naar Bridge naar Kubernetes: Verbinding verbreken na foutopsporing in de Instellingen van Visual Studio Code en door de controle naast Automatisch verbreken te verwijderen wanneer foutopsporing stopt. Na het bijwerken van deze instelling blijft uw ontwikkelcomputer verbonden wanneer u stopt en foutopsporing start. Als u de verbinding van uw ontwikkelcomputer met uw cluster wilt verbreken, klikt u op de extensie Bridge to Kubernetes op de statusbalk en kiest u vervolgens Huidige sessie verbreken.

Aanvullende configuratie

Bridge to Kubernetes kan verkeer routeren en omgevingsvariabelen repliceren zonder extra configuratie. Als u bestanden wilt downloaden die zijn gekoppeld aan de container in uw Kubernetes-cluster, zoals een ConfigMap-bestand, kunt u een KubernetesLocalProcessConfig.yaml maken om deze bestanden te downloaden naar uw ontwikkelcomputer. Zie Bridge configureren voor Kubernetesvoor meer informatie.

Als u een AKS-cluster gebruikt dat gebruikmaakt van beheerde identiteit, een beveiligingsfunctie van Microsoft Entra ID, raadpleegt u Beheerde identiteit gebruiken met Bridge to Kubernetes voor informatie over het configureren van Bridge naar Kubernetes voor dit scenario.

Logboekregistratie en diagnostische gegevens gebruiken

Logboekuitvoer wordt naar het Bridge naar Kubernetes venster geschreven nadat uw ontwikkelcomputer verbinding heeft gemaakt met uw Kubernetes-cluster.

Klik op de Kubernetes-statusbalk en kies Diagnostische gegevens over verbindingen weergeven. Met deze opdracht worden de huidige omgevingsvariabelen en DNS-vermeldingen afgedrukt in de uitvoer van de logboekregistratie.

Daarnaast vindt u de diagnostische logboeken in de map Bridge to Kubernetes in de map TEMP van uw ontwikkelcomputer. In Windows 10 is dat in %TEMP%\Bridge to Kubernetes. Op een Mac kunt u de TEMP-map vinden door echo $TMPDIR vanuit een terminalvenster uit te voeren. Op Linux is het /tmp/Bridge to Kubernetes.

Wordt uitgevoerd in isolatiemodus

Met Bridge to Kubernetes kunt u ook een geïsoleerde versie instellen waaraan de services waaraan u werkt, wat betekent dat anderen die het cluster gebruiken, niet worden beïnvloed door uw wijzigingen. Deze isolatiemodus wordt bereikt door uw verzoeken naar uw kopie van elke betrokken service te routeren, terwijl al het andere verkeer normaal wordt gerouteerd. Als u toegang wilt krijgen tot de url van het lokale eindpunt voor de geïsoleerde app, start u het foutopsporingsprogramma in de isolatiemodus, opent u het Kubernetes-menu op de statusbalk en kiest u de eindpuntvermelding. Meer informatie over hoe routering werkt in de isolatiemodus vindt u in How Bridge to Kubernetes Works.

Koptekstoverdracht

Als u Bridge to Kubernetes wilt gebruiken zoals het is ontworpen, moet u ervoor zorgen dat u de Bridge to Kubernetes-header verder verspreidt van binnenkomende aanvragen naar aanvragen die uw services doen aan andere services in het cluster. Alle HTTP-aanvraag-API's, ongeacht de taal, bieden een frameworkspecifieke manier om dit te doen. Voor .NET-code in C# kunt u bijvoorbeeld code gebruiken die vergelijkbaar is met de volgende:

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);

Notitie

Als u wilt voorkomen dat code op elke aanvraag wordt beïnvloed, kunt u een klasse maken die wordt overgenomen van System.Net.Http.DelegatingHandler en de SendAsync-methode overschrijven met code die vergelijkbaar is met het voorgaande voorbeeld. U kunt code vinden met behulp van deze techniek op internet; een voorbeeld is 'kubernetes-route-as' correct doorgeven in Bridge naar Kubernetes.

Voor Node.js services kunt u code gebruiken die lijkt op het volgende, afkomstig uit het voorbeeld van de todo-app in de Bridge naar kubernetes-opslagplaats:

    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();
    });

Communiceren met andere services

Wanneer u communiceert met een andere service in hetzelfde Kubernetes-cluster, bijvoorbeeld met een HTTP-aanvraag, gebruikt u doorgaans de naam van de in code vastgelegde service in de URL voor de aanvraag, maar dat werkt niet in sommige scenario's, zoals bij het gebruik van externe SSH-, WSL- en Codespaces. In dit artikel wordt beschreven hoe u de omgevingsvariabelen van de Kubernetes-service gebruikt om de verbindings-URL voor deze scenario's op te geven.

Probleemoplossing

Als u deze fout krijgt bij het activeren van de Bridge to Kubernetes-extensie:

"Kan afhankelijkheden niet bijwerken: maximum aantal nieuwe pogingen is overschreden"

Voer eerst de activering opnieuw uit met behulp van de knop. Als het herhaaldelijk niet lukt, kijk dan naar https://github.com/microsoft/mindaro/issues/32.

Wanneer u Bridge to Kubernetes gebruikt in een externe SSH-sessie, kan het probleem, als EndpointManager faalt, zijn dat Bridge to Kubernetes het hosts-bestand niet kan wijzigen door een probleem met machtigingen. Als u externe SSH wilt inschakelen of als niet-verhoogde gebruiker wilt uitvoeren, moet u uw code bijwerken om omgevingsvariabelen van de Kubernetes-service te gebruiken en VS Code zo configureren dat deze worden gebruikt, zoals beschreven in de omgevingsvariabelen van de Service onderwerp.

Volgende stappen

Meer informatie over Bridge to Kubernetes vindt u op Hoe Bridge to Kubernetes werkt.

Als u tegelijkertijd fouten wilt opsporen in meerdere services, raadpleegt u Fouten opsporen in meerdere services tegelijk.