Použijte Bridge to Kubernetes (VS Code)

Poznámka

Služba Bridge to Kubernetes bude vyřazena 30. dubna 2025. Podrobnosti o vyřazení a opensourcových alternativách najdete v předmětu GitHubu .

Nástroj Bridge to Kubernetes umožňuje spouštět a ladit kód na vašem vývojovém počítači, přičemž zůstáváte připojeni ke klastru Kubernetes se zbytkem vaší aplikace nebo služeb. V této příručce se dozvíte, jak pomocí nástroje Bridge to Kubernetes přesměrovat provoz mezi clusterem Kubernetes a kódem spuštěným na vývojovém počítači.

Než začnete

Tento článek předpokládá, že už máte vlastní cluster s architekturou mikroslužeb a chcete ladit jeden z podů v clusteru. Pokud chcete zjistit, jak používat Bridge to Kubernetes s ukázkovou aplikací, přečtěte si téma Použití Bridge to Kubernetes s ukázkovou aplikací. Pokud používáte službu Azure Kubernetes a chcete použít složitější ukázkovou aplikaci, podívejte se na Bridge to Kubernetes (AKS).

Požadavky

  • Kubernetes cluster s aplikací, kterou chcete ladit.
  • Visual Studio Code, který běží na macOS, Windows 10 a novějších verzích nebo Linuxu.

Připojení ke clusteru a ladění služby

Existuje několik různých způsobů, jak zahájit proces ladění pomocí Bridge to Kubernetes. Pokud začínáte s open-source rozšířením Kubernetes a nemáte nainstalovaný Bridge to Kubernetes, přejděte k Instalace a použití ladění místního tunelu. Pokud už máte most na Kubernetes nainstalovaný, pokračujte následujícími kroky:

  1. Na vývojovém počítači se ujistěte, že je váš aktuální kontext nastavený na cluster a obor názvů, ve kterém je vaše aplikace spuštěná.

  2. Otevřete pracovní prostor aplikace, kterou chcete ladit v editoru Visual Studio Code. V zobrazení rozšíření Kubernetes v části Clustersse ujistěte, že je vybraný váš cluster a obor názvů. Otevřete paletu příkazů (CTRL+SHIFT+P nebo Cmd+Shift+P na Macu) a spusťte příkaz Bridge do Kubernetes: Nakonfigurujte, aby se spustil proces konfigurace.

  3. Zvolte službu Kubernetes, kterou chcete přesměrovat na místní verzi.

    Vyberte službu, která se má připojit k

    Veškerý provoz v clusteru Kubernetes se přesměruje pro vaši službu na verzi vaší aplikace spuštěné ve vývojovém počítači. Přemostění na Kubernetes také směruje veškerý odchozí provoz z aplikace zpět do clusteru Kubernetes.

    Důležitý

    Pouze služby, které mají jeden pod, můžete přesměrovat.

  4. Jakmile vyberete službu, přeskočte další část a pokračujte podle kroků uvedených v Konfigurace ladicího programu pro ladění místního tunelu pomocí Bridge to Kubernetes.

Instalace a použití ladění místního tunelu

Pokud máte nainstalované opensourcové rozšíření Kubernetes a máte Kubernetes cluster se službami, které chcete ladit, postupujte podle těchto kroků, abyste mohli začít používat ladění lokálního tunelu. Kroky v této části vás provedou instalací Bridge to Kubernetes a spustí proces konfigurace pro ladění místního tunelu.

Poznámka

Rozšíření Kubernetes pro VS Code poskytuje vstupní bod rozhraní API, který autorům rozšíření umožňuje přidávat lokální tunelová řešení z tržiště VS Code. Bridge to Kubernetes je jedním z možných způsobů implementace funkce ladění místního tunelu.

V aplikaci VS Code můžete začít používat ladění lokálního tunelu dvěma způsoby. Prvním způsobem je otevřít paletu příkazů (CTRL+SHIFT+P nebo Cmd+Shift+P na Macu) a zadat Kubernetes: Ladění (místní tunel).

Snímek obrazovky s příkazem Ladění (místní tunel) v nástroji VS Code

Případně přejděte do Průzkumníka clusteru Kubernetes. Otevřete prostředky aktivního clusteru a vyhledejte službu nebo pod, který chcete ladit, a potom klikněte pravým tlačítkem na službu a vyberte Ladit: Místní tunel.

Pokud v tomto okamžiku nemáte nainstalované žádné rozšíření VS Code, které nabízí možnosti místního ladění, budete přesměrováni na Marketplace a vybrat rozšíření, které poskytuje místní ladění. Vyberte rozšíření Bridge to Kubernetes.

Snímek obrazovky s kontextovou nabídkou ladění místního tunelu ve VS Code

Po instalaci rozšíření Bridge to Kubernetes zvolíte příště Ladění: Místní tunel, přeskočíte krok instalace a přejdete přímo k dalšímu kroku, Nakonfigurujte ladicí program pro ladění místního tunelu pomocí příkazu Bridge to Kubernetes.

Nakonfigurujte debugger pro ladění místního tunelu pomocí Bridge to Kubernetes

Prvním krokem při konfiguraci ladicího programu pro ladění místního tunelu je zobrazení výzvy k zadání portu TCP, který vaše aplikace používá ke spuštění na místním počítači:

Zadejte číslo portu

Vyberte konfiguraci ladicího spuštění, kterou obvykle používáte při spuštění vaší aplikace místně. Pokud nemáte konfiguraci spuštění, můžete ji buď nechat přemostěním na Kubernetes vytvořit, nebo ji nevytvoříte, v takovém případě budete muset aplikaci nebo službu spustit ručně. Další informace o spouštěcích konfiguracích najdete v .

Zvolte konfiguraci spuštění ladicího programu

Máte možnost spustit proces izolovaně nebo neizolovaně. Pokud spustíte izolovanou službu, směrují se do místního procesu pouze vaše požadavky; ostatní vývojáři můžou cluster používat bez ovlivnění. Pokud neprovozujete izolovaný proces, veškerý síťový provoz se přesměruje do místního procesu. Další informace o této možnosti naleznete v tématu Použití možností směrování pro vývoj v izolaci.

Zvolit izolaci

Na levé straně vyberte ikonu Ladění a nahoře vyberte nově přidanou konfiguraci spuštění Kubernetes, například Spuštění přes NPM s Kubernetes. Tato konfigurace spuštění je vytvořena nástrojem Bridge to Kubernetes, pokud zvolíte tuto možnost.

Zvolit profil spuštění ladění

Poznámka

Zobrazí se výzva k povolení spuštění EndpointManager se zvýšenými oprávněními a úpravě souboru hostitelů.

Váš vývojový počítač je připojený, když stavový řádek VS Code změní oranžovou barvu a rozšíření Kubernetes ukazuje, že jste připojení.

Ladění s Bridge to Kubernetes

Po připojení vývojového počítače se provoz začne přesměrovávat na vývojový počítač pro službu, kterou nahrazujete.

Poznámka

Při dalších spuštěních se nezobrazí výzva k zadání názvu služby, portu, spouštěcí úlohy nebo jestli se má spustit izolovaně. Tyto hodnoty jsou uloženy v .vscode/tasks.json. Pokud chcete tato nastavení později změnit, otevřete paletu příkazů (CTRL+SHIFT+P nebo Cmd+Shift+P na Macu) a spusťte příkaz Bridge na Kubernetes: Konfigurace. Můžete otevřít .vscode/launch.json a .vscode/tasks.json, abyste viděli konkrétní nastavení konfigurace, která Bridge to Kubernetes přidává do vašeho spouštěcího profilu.

Pokud váš cluster používá gRPC C core , implementaci gRPC, která používá c-ares , do vašeho spouštěcího profilu se přidá proměnná prostředí GRPC_DNS_RESOLVER s hodnotou native. Tato proměnná určuje použití alternativního řešení, které zabrání 2minutové prodlevě při připojování. Další informace najdete v tomto problému gRPC.

Nastavit bod přerušení

Nastavte zarážku pomocí F9 nebo vyberte Spustit a pak Přepnout zarážku.

Otevřete veřejnou adresu URL a přejděte do ukázkové aplikace. Když váš kód dosáhne přerušení, měl by se otevřít v ladicím programu. Pokud chcete pokračovat ve službě, stiskněte Ctrl+F5 nebo vyberte Spustit a pak Pokračovat. Vraťte se do prohlížeče a ověřte, že se zobrazí zástupný obrázek kola.

Aktualizace aplikace

Když provedete změny kódu místně, jestli jsou viditelné ostatním uživatelům, kteří cluster používají, závisí na tom, jestli používáte izolovaný nebo ne. Pokud používáte izolovanou aplikaci, můžete provádět změny, které nemají vliv na ostatní uživatele.

Upravte kód, uložte změny a stiskněte Ctrl+Shift+F5 (⇧⌘F5 na Macu) nebo vyberte Spustit a pak Restartovat ladění. Po opětovném připojení aktualizujte prohlížeč a ověřte provedené změny.

Vyberte Spustit a potom Zastavit ladění, nebo stiskněte klávesy Shift+F5, abyste zastavili ladicí program.

Poznámka

Ve výchozím nastavení zastavení úlohy ladění také odpojí vývojový počítač od clusteru Kubernetes. Toto chování můžete změnit tak, že v editoru Visual Studio Code vyhledáte Most na Kubernetes: Po ladění odpojit a zrušíte zaškrtnutí vedle Odpojit automaticky, když se ladění zastaví. Po aktualizaci tohoto nastavení zůstane váš vývojový počítač po zastavení a spuštění ladění připojený. Chcete-li odpojit vývojový počítač od clusteru, klikněte na rozšíření Bridge to Kubernetes na stavovém řádku a potom zvolte Odpojit aktuální relaci.

Další konfigurace

Bridge to Kubernetes dokáže zpracovat směrování provozu a replikaci proměnných prostředí bez potřeby další konfigurace. Pokud potřebujete stáhnout všechny soubory připojené ke kontejneru v clusteru Kubernetes, například soubor ConfigMap, můžete vytvořit KubernetesLocalProcessConfig.yaml ke stažení těchto souborů do vývojového počítače. Další informace najdete v tématu Konfigurace bridge pro Kubernetes.

Pokud používáte cluster AKS, který využívá spravovanou identitu, což je bezpečnostní funkce poskytovaná službou Microsoft Entra ID, podívejte se na Použití spravované identity s Bridge to Kubernetes, kde najdete informace o tom, jak nakonfigurovat Bridge to Kubernetes pro tento scénář.

Použití protokolování a diagnostiky

Po připojení vývojového počítače ke clusteru Kubernetes se výstup protokolování zapíše do okna Bridge do Kubernetes.

Klikněte na stavový řádek Kubernetes a zvolte Zobrazit informace o diagnostice připojení. Tento příkaz vypíše aktuální proměnné prostředí a položky DNS ve výstupu protokolování.

Diagnostické protokoly najdete také v adresáři Bridge to Kubernetes v adresáři TEMP vašeho vývojového počítače. Ve Windows 10 je to na %TEMP%\Bridge to Kubernetes. Na Počítači Mac najdete adresář TEMP spuštěním echo $TMPDIR z okna terminálu. V Linuxu je to /tmp/Bridge to Kubernetes.

Provoz v režimu izolace

Pomocí bridge to Kubernetes můžete také nastavit izolovanou verzi služeb, na kterých pracujete, což znamená, že na vašich změnách nebudou mít vliv ostatní uživatelé, kteří cluster používají. Tento režim izolace je dosaženo směrováním vašich požadavků na kopii každé ovlivněné služby, zatímco ostatní provoz je směrován jako obvykle. Pokud chcete získat přístup k adrese URL místního koncového bodu izolované aplikace, spusťte ladicí program v režimu izolace, otevřete nabídku Kubernetes na stavovém řádku a zvolte položku koncového bodu. Další informace o tom, jak směrování funguje v režimu izolace, najdete v části Jak funguje propojení s Kubernetes.

Šíření hlaviček

Pokud chcete použít Bridge to Kubernetes tak, jak je navrženo, je potřeba zajistit, abyste přenesli hlavičku Bridge to Kubernetes z příchozích požadavků na všechny požadavky, které vaše služby v clusteru provádějí. Všechna rozhraní API požadavků HTTP bez ohledu na jazyk poskytují určitý způsob, jak to provést. Například pro kód .NET v jazyce C# můžete použít kód podobný následujícímu:

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

Poznámka

Abyste se vyhnuli ovlivnění kódu při každém požadavku, můžete vytvořit třídu, která dědí ze třídy System.Net.Http.DelegatingHandler a přepsat metodu SendAsync s kódem podobným kódu v předchozím příkladu. Kód pomocí této techniky najdete na webu; jedním z příkladů je správné šíření "kubernetes-route-as" v Bridge to Kubernetes.

Pro služby Node.js můžete použít kód podobný následujícímu kódu, který je převzatý z ukázky aplikace todo v úložišti Bridge do úložiště Kubernetes:

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

Komunikace s dalšími službami

Když komunikujete s jinou službou ve stejném clusteru Kubernetes, například s požadavkem HTTP, obvykle pro požadavek použijete pevně zakódovaný název služby, ale v některých scénářích, jako je použití vzdáleného SSH, WSL a Codespaces, to nebude fungovat. tento článek popisuje, jak pomocí proměnných prostředí služby Kubernetes určit adresu URL připojení pro tyto scénáře.

Řešení problémů

Pokud se při aktivaci rozšíření Bridge to Kubernetes zobrazí tato chyba:

Nepodařilo se aktualizovat závislosti: byl překročen maximální počet opakování.

Nejprve zkuste aktivaci zopakovat pomocí tlačítka. Pokud se to opakovaně nepodaří, přečtěte si https://github.com/microsoft/mindaro/issues/32.

Pokud ve vzdálené relaci SSH používáte Bridge to Kubernetes a EndpointManager selže, problémem může být, že Bridge to Kubernetes nemůže upravit soubor hosts kvůli problému s oprávněními. Pokud chcete povolit vzdálený SSH nebo spustit jako uživatele bez zvýšených oprávnění, měli byste aktualizovat svůj kód tak, aby využíval proměnné prostředí služby Kubernetes, a nakonfigurovat VS Code, aby je používal, jak je popsáno v tématu Service environment variables.

Další kroky

Další informace o Bridge to Kubernetes najdete v tématu Jak Bridge to Kubernetes funguje.

Pokud potřebujete souběžně ladit více služeb, přečtěte si Ladění více služeb najednou.