Jak funguje Přemostění na Kubernetes

Most na 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é.

Přemostit na 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 vyví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.

Přemostit na Kubernetes přesměruje provoz mezi připojeným clusterem Kubernetes a vývojový počítač. Místní kód a služby v clusteru Kubernetes můžou komunikovat, jako by byly ve stejném clusteru Kubernetes.

Přemíscení na Kubernetes umožňuje replikovat proměnné prostředí a připojené svazky v clusteru Kubernetes do vývojového počítače. 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ší běží ve Windows 10 nebo novějším. Ujistěte se, že je nainstalovaná úloha ASP.NET a vývoje webu. Nainstalujte most 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 je určené pro pod. 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 podporuje přemístit na Kubernetes .NET Core. Most na Kubernetes nepodporuje rozhraní .NET Framework v sadě Visual Studio, protože vyžaduje podporu uzlů Windows.

Upozornění

Most na Kubernetes je určený jenom ve scénářích 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 Přemístit na Kubernetes.

Vytvoření připojení

Když most na Kubernetes vytvoří připojení ke clusteru, provede následující akce:

  • 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 v clusteru kontejnerem vzdáleného agenta, který přesměruje provoz do vývojového počítače.
  • Spustí na vývojovém počítači přesměrování portu kubectl a přesměruje provoz z vývojového počítače do vzdáleného agenta spuštěné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.
  • Aktualizace soubor hostitelů pro mapování služeb v clusteru na místní IP adresy ve vašem vývojovém počítači. Tyto položky souborů hostitelů umožňují spuštění kódu ve vašem vývojovém počítači vyhovět jiným službám spuštěným v clusteru. Pokud chcete aktualizovat soubor hostitelů, přemýšlejte na Kubernetes, potřebujete na vývojovém počítači přístup správce.
  • Začne spouštět a ladit kód na vývojovém počítači. V případě potřeby přemístit na Kubernetes uvolní požadované porty ve vašem vývojovém počítači zastavením služeb nebo procesů, které tyto porty aktuálně používají.

Použití mostu do 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é kódy z vašeho clusteru jsou zpřístupněny kódu spuštěným na vývojovém počítači.

Přemísnění do Kubernetes přidá položky souborů hostitelů a přesměrování portů do počítače pro vývojáře. 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í.

Most na Kubernetes navíc poskytuje způsob replikace proměnných prostředí a připojených souborů dostupných pro pody ve vašem clusteru na vývojovém KubernetesLocalProcessConfig.yaml počítači prostřednictvím souboru. 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.

Můžete ladit paralelně s několika službami. Spusťte libovolný počet instancí sady Visual Studio jako služby, které chcete ladit. Ujistěte se, že vaše služby naslouchají na různých portech místně. Nakonfigurujte je a ladit 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 Konfigurace mostu na Kubernetes.

Použití možností směrování pro vývoj v izolaci

Přemístit na Kubernetes ve výchozím nastavení přesměruje veškerý provoz pro službu do vývojového počítače. 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ě:

Animation shows isolation, with two developers working with the same cluster.

Když povolíte práci v izolaci, přemostění na Kubernetes provede kromě připojení ke clusteru Kubernetes také následující akce:

  • 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 routing.visualstudio.io/route-on-header=kubernetes-route-as=GENERATED_NAME poznámky při konfiguraci směrování v oboru názvů.

Poznámka:

Přemýtění na Kubernetes zkontroluje, jestli je v clusteru Kubernetes povolená služba 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 příchozí přenosy dat, včetně příchozího přenosu dat nástroje pro vyrovnávání zatížení, které se nacházejí v oboru názvů 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 pro zpracování směrování pro služby s subdoménou.

Následující diagram znázorňuje cluster Kubernetes před připojením bridge do Kubernetes k vašemu clusteru:

Diagram of cluster without Bridge to Kubernetes.

Následující diagram znázorňuje stejný cluster s povoleným přemostěním na Kubernetes v režimu izolace. Tady vidíte duplicitní službu a pody envoy, které podporují směrování izolovaně.

Diagram of cluster with Bridge to Kubernetes enabled.

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 provádě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 žádost serviceB před vrácením odpovědi. V tomto příkladu potřebuje serviceA předat hlavičku kubernetes-route-as=GENERATED_NAME v požadavku 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, přemostění na Kubernetes ve výchozím nastavení odebere všechny pody envoy a duplicitní službu.

Poznámka:

Nasazení a služba správce směrování zůstanou v oboru názvů spuštěné. Pokud chcete odebrat nasazení a službu, spusťte následující příkazy pro váš obor názvů.

kubectl delete deployment routingmanager-deployment -n NAMESPACE
kubectl delete service routingmanager-service -n NAMESPACE

Diagnostika a protokolování

Při použití přemětu do Kubernetes pro připojení ke clusteru diagnostika protokolů počítače. Uloží je do adresáře TEMP vašeho vývojového počítače ve složce Bridge to Kubernetes.

Autorizace RBAC Kubernetes

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 k Kubernetes. Oprávnění pro cluster s podporou RBAC můžete nastavit tak, že vytvoříte soubor YAML a použijete kubectl ho pro cluster.

Pokud chcete nastavit oprávnění v clusteru, vytvořte nebo upravte soubor YAML, například permissions.yml. Použijte obor názvů pro <namespace> uživatele a skupiny, kteří 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 v daném podu spuštěný jenom jeden kontejner, aby se mohl úspěšně připojit Bridge do Kubernetes.
  • V současné době musí být přemístit na pody Kubernetes kontejnery Linuxu. Kontejnery Windows se nepodporují.
  • Aby bylo možné upravit soubor hostitelů, potřebuje most na Kubernetes zvýšená oprávnění ke spuštění na vývojovém počítači.
  • 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 k připojení k místnímu vývojovému počítači ke clusteru, přečtěte si téma Použití mostu na Kubernetes (VS) nebo Použití mostu na Kubernetes (VS Code).