Jak funguje most na Kubernetes
Poznámka
Bridge to Kubernetes bude ukončen 30. dubna 2025. Podrobnosti o vyřazení z provozu a opensourcových alternativách najdete v části GitHubu issue.
bridge to Kubernetes je iterativní vývojový nástroj pro vytváření aplikací mikroslužeb, které cílí na Kubernetes. Rozšíření Bridge to Kubernetes je k dispozici pro Visual Studio a Visual Studio Code (VS Code).
Most na Kubernetes umožňuje spouštět a ladit kód na vývojovém počítači. Tento počítač je stále připojený ke clusteru Kubernetes se zbytkem vaší aplikace nebo služeb. Pokud máte rozsáhlou architekturu mikroslužeb s mnoha vzájemně závislými službami a databázemi, může být replikace těchto závislostí na vývojovém počítači obtížná. Sestavování a nasazování kódu do clusteru Kubernetes pro každou změnu kódu může být pomalé, časově náročné a obtížné.
Bridge to Kubernetes vytvoří propojení mezi vaším vývojovým počítačem a clusterem. Tento přístup se vyhne nutnosti sestavovat a nasazovat kód do clusteru. Službu můžete testovat a rozvíjet v kontextu, který je připojený k vašemu clusteru. Tento přístup umožňuje ladit bez nutnosti vytvářet další konfiguraci Dockeru nebo Kubernetes.
Bridge to Kubernetes přesměruje provoz mezi vaším připojeným clusterem Kubernetes a vaším vývojovým počítačem. Místní kód a služby v clusteru Kubernetes můžou komunikovat, jako by byly ve stejném clusteru Kubernetes.
Bridge to Kubernetes umožňuje replikovat proměnné prostředí a připojené svazky z vašeho clusteru Kubernetes na váš vývojový počítač. Přístup k proměnným prostředí a připojeným svazkům umožňuje pracovat na kódu bez nutnosti replikovat tyto závislosti.
Požadavky
Poznámka
Most na Kubernetes nefunguje s Dockerem pro desktopové clustery Kubernetes. Pokud chcete použít bridge na Kubernetes, potřebujete některou z následujících konfigurací:
- VS Code s nainstalovaným rozšířením Bridge to Kubernetes.
- Visual Studio 2019 verze 16.7 nebo novější ve Windows 10 nebo novější. Ujistěte se, že je nainstalovaná úloha ASP.NET a vývoj pro web. Nainstalujte rozšířeníBridge na rozšíření Kubernetes .
K navázání připojení ke clusteru Kubernetes můžete použít Bridge to Kubernetes. Toto připojení přesměruje provoz do a z existujícího podu v clusteru na vývojový počítač.
Poznámka
Pokud používáte Bridge to Kubernetes, zobrazí se výzva k zadání názvu služby, která vás přesměruje na vývojový počítač. Tato možnost představuje pohodlný způsob, jak identifikovat pod pro přesměrování. Veškeré přesměrování mezi clusterem Kubernetes a vaším vývojovým počítačem se týká podu. Další informace najdete v tématu Zpřístupnění služby.
V editoru VS Code podporuje most na Kubernetes všechny jazyky, pokud je můžete spustit místně. V sadě Visual Studio nástroj Bridge to Kubernetes podporuje .NET Core. Bridge to Kubernetes nepodporuje .NET Framework ve Visual Studiu, protože vyžaduje podporu pro uzly Windows.
Opatrnost
Most na Kubernetes je určený pouze pro scénáře vývoje a testování. Není určen nebo podporován pro použití s produkčními clustery nebo živými službami v aktivním použití.
Aktuální funkce a budoucí plány najdete v plánu Bridge to Kubernetes.
Vytvoření připojení
Když Bridge to Kubernetes vytvoří připojení ke clusteru, provede následující kroky:
- Vyzve vás, abyste službu nakonfigurovali tak, aby nahradila cluster, port ve vývojovém počítači, který se má použít pro váš kód, a spouštěcí úkol pro váš kód jako jednorázovou akci.
- Nahradí kontejner v podu na clusteru kontejnerem vzdáleného agenta, který přesměrovává síťový provoz na váš vývojový počítač.
- Spusťte kubectl port-forward na svém vývojovém počítači, abyste směrovali provoz z vašeho vývojového počítače na vzdáleného agenta běžícího ve vašem clusteru.
- Shromažďuje informace o prostředí z vašeho clusteru pomocí vzdáleného agenta. Tyto informace o prostředí zahrnují proměnné prostředí, viditelné služby, připojení svazků a připojení tajných kódů.
- Nastaví prostředí v sadě Visual Studio, aby služba ve vašem vývojovém počítači měla přístup ke stejným proměnným, jako kdyby byla spuštěna v clusteru.
- Aktualizuje váš soubor hosts, aby mapoval služby v clusteru na místní IP adresy ve vašem počítači pro vývoj. Tyto hostují položky souboru umožňují kódu spuštěném na vývojovém počítači vyhovět jiným službám spuštěným ve vašem clusteru. K aktualizaci souboru hostitelů potřebuje Bridge to Kubernetes přístup správce na vašem vývojovém počítači.
- Začne spouštět a ladit kód na vývojovém počítači. Pokud je to nutné, Bridge to Kubernetes uvolní potřebné porty na vašem vývojovém počítači tím, že zastaví služby nebo procesy, které tyto porty aktuálně používají.
Použití Bridge k Kubernetes
Po navázání připojení ke clusteru spusťte a laďte kód nativně v počítači bez kontejnerizace. Kód komunikuje s vaším clusterem. Veškerý síťový provoz, který vzdálený agent přijímá, se přesměruje na místní port zadaný během připojení. Nativně spuštěný kód může tento provoz přijmout a zpracovat. Proměnné prostředí, svazky a tajné údaje z vašeho clusteru jsou zpřístupněny vašemu kódu spuštěnému na vývojovém počítači.
Bridge ke Kubernetes přidává záznamy v souboru hosts a přesměrování portů na váš vývojářský počítač. Váš kód může odesílat síťový provoz do služeb spuštěných v clusteru pomocí názvů služeb z vašeho clusteru. Tento provoz se přesměruje do služeb spuštěných ve vašem clusteru. Provoz se směruje mezi vývojovým počítačem a clusterem po celou dobu, kdy jste připojení.
Bridge to Kubernetes navíc poskytuje způsob replikace proměnných prostředí a připojených souborů prostřednictvím souboru KubernetesLocalProcessConfig.yaml
, které jsou dostupné pro pody ve vašem clusteru na vašem vývojovém počítači. Tento soubor můžete použít také k vytvoření nových proměnných prostředí a připojení svazků.
Poznámka
Po dobu trvání připojení ke clusteru plus 15 minut spustí Bridge to Kubernetes proces s názvem EndpointManager s oprávněními správce na místním počítači.
Ladění může probíhat souběžně za použití několika služeb. Spusťte libovolný počet instancí sady Visual Studio jako služby, které chcete ladit. Zajistěte, že vaše služby naslouchají na různých portech lokálně. Nakonfigurujte je a laďte samostatně. Izolace není v tomto scénáři podporovaná.
Další konfigurace
Soubor KubernetesLocalProcessConfig.yaml umožňuje replikovat proměnné prostředí a připojené soubory dostupné pro vaše pody v clusteru. Při použití sady Visual Studio musí být soubor KubernetesLocalConfig.yaml ve stejném adresáři jako soubor projektu pro službu. Další informace najdete v tématu Konfigurovat Bridge to Kubernetes.
Použití možností směrování pro vývoj v izolaci
Ve výchozím nastavení Bridge to Kubernetes přesměruje veškerý provoz související se službou na váš vývojový počítač. Místo toho můžete použít možnosti směrování k přesměrování požadavků z subdomény na vývojový počítač. Tyto možnosti směrování umožňují používat Bridge to Kubernetes k vývoji v izolaci a zabránění narušení jiného provozu v clusteru.
Následující animace ukazuje dva vývojáře, kteří pracují na stejném clusteru izolovaně:
Když povolíte práci v izolaci, Bridge to Kubernetes kromě připojení ke clusteru Kubernetes provádí také následující úkoly:
- Ověřuje, že cluster Kubernetes nemá povolený Azure Dev Spaces.
- Replikuje vybranou službu v clusteru ve stejném oboru názvů a přidá popisek routing.visualstudio.io/route-from=SERVICE_NAME a routing.visualstudio.io/route-on-header=kubernetes-route-as=GENERATED_NAME poznámku.
- Nakonfiguruje a spustí správce směrování ve stejném oboru názvů v clusteru Kubernetes. Správce směrování používá selektor popisků k vyhledání popisku routing.visualstudio.io/route-from=SERVICE_NAME a anotace routing.visualstudio.io/route-on-header=kubernetes-route-as=GENERATED_NAME při konfiguraci směrování ve vašem oboru názvů.
Poznámka
Bridge to Kubernetes zkontroluje, jestli je v clusteru Kubernetes povolena Azure Dev Spaces. Před použitím bridge na Kubernetes vás vyzve k zakázání Azure Dev Spaces.
Při spuštění provede správce směrování následující akce:
- Duplikuje všechny ingressy, včetně těch nástroje pro vyrovnávání zatížení, které se nacházejí v daném jmenném prostoru pomocí GENERATED_NAME pro subdoménu.
- Vytvoří pod envoy pro každou službu přidruženou k duplicitním příchozím datům s GENERATED_NAME subdoménou.
- Vytvoří další pod envoy pro službu, na které pracujete izolovaně. Tato konfigurace umožňuje směrovat požadavky s subdoménou do vývojového počítače.
- Konfiguruje pravidla směrování pro každý pod Envoy ke zpracování směrování pro služby se subdoménou.
Následující diagram znázorňuje cluster Kubernetes předtím, než se Bridge to Kubernetes připojí k vašemu clusteru:
Následující diagram znázorňuje stejný cluster s povoleným Bridge to Kubernetes v izolačním režimu. Tady vidíte duplicitní službu a pody envoy, které podporují směrování izolovaně.
Když cluster obdrží požadavek s subdoménou GENERATED_NAME, přidá do požadavku hlavičku kubernetes-route-as=GENERATED_NAME. Pody envoy zpracovávají směrování této žádosti do příslušné služby v clusteru. V případě požadavku na službu, na které pracujete izolovaně, cluster přesměruje požadavek na vývojový počítač vzdáleným agentem.
Když cluster obdrží požadavek bez subdomény GENERATED_NAME, nepřidá do požadavku hlavičku. Pody envoy zpracovávají směrování této žádosti do příslušné služby v clusteru. V případě požadavku na službu, která se nahrazuje, pody ji místo vzdáleného agenta přesměrují do původní služby.
Důležitý
Při odesílání dalších požadavků musí každá služba v clusteru předávat hlavičku kubernetes-route-as=GENERATED_NAME. Když například serviceA obdrží požadavek, odešle požadavek na serviceB před vrácením odpovědi. V tomto příkladu potřebuje serviceA předat v požadavku hlavičku kubernetes-route-as=GENERATED_NAME na serviceB. Některé jazyky, například ASP.NET, mohou mít metody pro zpracování šíření hlaviček.
Když se od clusteru odpojíte, Bridge to Kubernetes ve výchozím nastavení odstraní všechny pody envoy a duplicitní službu.
Poznámka
Nasazení a služby správce směrování zůstanou ve jmenném prostoru spuštěné. Pokud chcete odebrat nasazení a službu, spusťte následující příkazy pro váš jmenný prostor.
kubectl delete deployment routingmanager-deployment -n NAMESPACE
kubectl delete service routingmanager-service -n NAMESPACE
Diagnostika a protokolování
Při použití Bridge to Kubernetes pro připojení ke clusteru počítač protokoluje diagnostiky. Uloží je do adresáře TEMP vašeho vývojového počítače ve složce Bridge do složky Kubernetes.
Autorizace Kubernetes RBAC
Kubernetes poskytuje řízení přístupu na základě role (RBAC) ke správě oprávnění pro uživatele a skupiny. Informace najdete v dokumentaci Kubernetes. Oprávnění ke clusteru s podporou RBAC můžete nastavit tak, že vytvoříte soubor YAML a použijete kubectl
k jeho použití na cluster.
Pokud chcete nastavit oprávnění v clusteru, vytvořte nebo upravte soubor YAML, například permissions.yml. Použijte svůj obor názvů pro <namespace>
a uživatele a skupiny, které potřebují přístup.
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
Použijte oprávnění pomocí následujícího příkazu:
kubectl -n <namespace> apply -f <yaml file name>
Omezení
Přemostění na Kubernetes má následující omezení:
- Pod může mít pouze jeden spuštěný kontejner, aby se Bridge to Kubernetes mohl úspěšně připojit.
- V současné době musí být pody Bridge to Kubernetes linuxové kontejnery. Kontejnery Windows se nepodporují.
- Aplikace Bridge to Kubernetes potřebuje zvýšená oprávnění ke spuštění na vašem vývojovém počítači, aby mohla upravit soubor hostitelů.
- Most na Kubernetes se nedá použít v clusterech s povoleným Azure Dev Spaces.
Další kroky
Pokud chcete začít používat Bridge to Kubernetes pro připojení svého místního vývojového počítače ke clusteru, viz Použití Bridge to Kubernetes (VS) nebo Použití Bridge to Kubernetes (VS Code).