Azure Arc povolenou službou Open Service Mesh (Preview)
Open Service Mesh (OSM) je odlehčená, rozšiřitelná cloudová nativní síť služeb, která uživatelům umožňuje jednotně spravovat, zabezpečit a získat funkce pozorovatelnosti ve všech prostředích s vysokou dynamickou mikroslužbami.
OSM spouští řídicí rovinu založenou na Envoy v Kubernetes, je možné ji nakonfigurovat pomocí rozhraní SMI API a funguje tak, že do každé instance vaší aplikace vloží proxy server Envoy jako kontejner sa sidecar. Přečtěte si další informace o scénářích sítě služeb povolených službou Open Service Mesh.
Omezení podpory Azure Arc Open Service Mesh s povolenou službou Open Service Mesh
- Do clusteru Kubernetes připojeného ke clusteru Kubernetes připojenému ke clusteru Azure Arc service mesh je možné nasadit pouze jednu instanci služby Open Service Mesh.
- Verze Public Preview je dostupná pro Open Service Mesh verze 0.8.4 a novější. Nejnovější verzi této verze najdete tady. Podporované verze verzí jsou připojeny k poznámkám. Ignorujte značky přidružené k přechodných verzím.
- Aktuálně se podporují následující distribuce Kubernetes:
- Modul AKS
- AKS v HCI
- Rozhraní API clusteru Azure
- Modul Google Kubernetes
- Kanonická distribuce Kubernetes
- Rancher Kubernetes Engine
- OpenShift Kubernetes Distribution
- Amazon Elastic Kubernetes Service
- Azure Monitor integraci s Azure Arc povolenou službou Open Service Mesh je dostupná s omezenou podporou.
Důležité
Funkce Kubernetes ve verzi Preview s povolenou funkcí ARC Azure jsou k dispozici na samoobslužném základě výslovných přihlašovacích prvků. Verze Preview jsou k dispozici "tak jak jsou" a "jako dostupné" a jsou vyloučeny ze smluv o úrovni služeb a omezené záruky. Kubernetes verze Preview s podporou Azure ARC jsou částečně pokryté zákaznickou podporou na nejvyšší úrovni.
Požadavky
- Ujistěte se, že jste splnili všechny běžné požadavky na rozšíření clusteru uvedené tady.
- Použijte příkaz az k8s-extension CLI version >= v0.4.0.
Nainstalujte Azure Arc s povolenou službou Open Service Mesh (OSM) Azure Arc clusteru Kubernetes s povolenou službou Kubernetes.
Následující kroky předpokládají, že už máte cluster s podporovanou distribucí Kubernetes připojenou k Azure Arc.
Instalace konkrétní verze OSM
Ujistěte se, že proměnná prostředí KUBECONFIG odkazuje na kubeconfig clusteru Kubernetes, na který chcete nainstalovat rozšíření OSM.
Nastavte proměnné prostředí:
export VERSION=<osm-arc-version>
export CLUSTER_NAME=<arc-cluster-name>
export RESOURCE_GROUP=<resource-group-name>
Zatímco Azure Arc Open Service Mesh ve verzi Preview, příkaz az k8s-extension create přijímá pouze pilot příznak --release-train . --auto-upgrade-minor-version je vždy nastavená false na a musí být poskytnuta verze. Pokud máte cluster OpenShift, postupujte podle kroků v části.
az k8s-extension create --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --cluster-type connectedClusters --extension-type Microsoft.openservicemesh --scope cluster --release-train pilot --name osm --version $VERSION
Měl by se zobrazit výstup podobný následujícímu výstupu. Nasazení skutečného chartu OSM Helm do clusteru může trvat 3 až 5 minut. Dokud k tomuto nasazení ne dojde, bude stav installState dál ve stavu Čeká na vyřízení.
{
"autoUpgradeMinorVersion": false,
"configurationSettings": {},
"creationTime": "2021-04-29T17:50:11.4116524+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "microsoft.openservicemesh",
"id": "/subscriptions/<subscription-id>/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Kubernetes/connectedClusters/$CLUSTER_NAME/providers/Microsoft.KubernetesConfiguration/extensions/osm",
"identity": null,
"installState": "Pending",
"lastModifiedTime": "2021-04-29T17:50:11.4116525+00:00",
"lastStatusTime": null,
"location": null,
"name": "osm",
"releaseTrain": "pilot",
"resourceGroup": "$RESOURCE_GROUP",
"scope": {
"cluster": {
"releaseNamespace": "arc-osm-system"
},
"namespace": null
},
"statuses": [],
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "x.x.x"
}
Instalace konkrétní verze OSM v clusteru OpenShift
Zkopírujte a uložte následující obsah do souboru JSON. Pokud jste už vytvořili soubor nastavení konfigurace, přidejte do existujícího souboru následující řádek, aby se zachovaly předchozí změny.
{ "osm.OpenServiceMesh.enablePrivilegedInitContainer": "true" }Nastavte cestu k souboru jako proměnnou prostředí:
export SETTINGS_FILE=<json-file-path>Spusťte příkaz použitý k vytvoření rozšíření OSM a předejte soubor
az k8s-extension createnastavení pomocí nastavení konfigurace:az k8s-extension create --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --cluster-type connectedClusters --extension-type Microsoft.openservicemesh --scope cluster --release-train pilot --name osm --version $VERSION --configuration-settings-file $SETTINGS_FILEPřidejte omezení privilegovaného kontextu zabezpečení ke každému účtu služby pro aplikace v rámci sítě.
oc adm policy add-scc-to-user privileged -z <service account name> -n <service account namespace>
Nasazení skutečného chartu OSM Helm do clusteru může trvat 3 až 5 minut. Dokud k tomuto nasazení ne dojde, bude stav installState dál ve stavu Čeká na vyřízení.
Pokud chcete zajistit, aby se nastavení privilegovaného init kontejneru nevrátilo do výchozího stavu, předejte "osm". OpenServiceMesh.enablePrivilegedInitContainer: true – nastavení konfigurace pro všechny následné příkazy az k8s-extension create
Instalace Azure Arc s povoleným OSM pomocí šablony ARM
Po připojení clusteru k Azure Arc vytvořte soubor JSON v následujícím formátu a nezapomeňte aktualizovat <cluster-name> hodnoty <osm-arc-version> a :
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"ConnectedClusterName": {
"defaultValue": "<cluster-name>",
"type": "String",
"metadata": {
"description": "The Connected Cluster name."
}
},
"ExtensionInstanceName": {
"defaultValue": "osm",
"type": "String",
"metadata": {
"description": "The extension instance name."
}
},
"ExtensionVersion": {
"defaultValue": "<osm-arc-version>",
"type": "String",
"metadata": {
"description": "The extension type version."
}
},
"ExtensionType": {
"defaultValue": "Microsoft.openservicemesh",
"type": "String",
"metadata": {
"description": "The extension type."
}
},
"ReleaseTrain": {
"defaultValue": "Pilot",
"type": "String",
"metadata": {
"description": "The release train."
}
}
},
"functions": [],
"resources": [
{
"type": "Microsoft.KubernetesConfiguration/extensions",
"apiVersion": "2020-07-01-preview",
"name": "[parameters('ExtensionInstanceName')]",
"properties": {
"extensionType": "[parameters('ExtensionType')]",
"releaseTrain": "[parameters('ReleaseTrain')]",
"version": "[parameters('ExtensionVersion')]"
},
"scope": "[concat('Microsoft.Kubernetes/connectedClusters/', parameters('ConnectedClusterName'))]"
}
]
}
Teď nastavte proměnné prostředí:
export TEMPLATE_FILE_NAME=<template-file-path>
export DEPLOYMENT_NAME=<desired-deployment-name>
Nakonec spuštěním tohoto příkazu nainstalujte rozšíření OSM prostřednictvím az CLI:
az deployment group create --name $DEPLOYMENT_NAME --resource-group $RESOURCE_GROUP --template-file $TEMPLATE_FILE_NAME
Teď byste měli být schopni zobrazit prostředky OSM a použít rozšíření OSM ve vašem clusteru.
Ověření instalace Azure Arc Open Service Mesh s povolenou službou
Spusťte následující příkaz.
az k8s-extension show --cluster-type connectedClusters --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --name osm
Měl by se zobrazit výstup JSON podobný následujícímu výstupu:
{
"autoUpgradeMinorVersion": false,
"configurationSettings": {},
"creationTime": "2021-04-29T19:22:00.7649729+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "microsoft.openservicemesh",
"id": "/subscriptions/<subscription-id>/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Kubernetes/connectedClusters/$CLUSTER_NAME/providers/Microsoft.KubernetesConfiguration/extensions/osm",
"identity": null,
"installState": "Installed",
"lastModifiedTime": "2021-04-29T19:22:00.7649731+00:00",
"lastStatusTime": "2021-04-29T19:23:27.642+00:00",
"location": null,
"name": "osm",
"releaseTrain": "pilot",
"resourceGroup": "$RESOURCE_GROUP",
"scope": {
"cluster": {
"releaseNamespace": "arc-osm-system"
},
"namespace": null
},
"statuses": [],
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "x.x.x"
}
Konfigurace kontroleru OSM
OSM nasadí prostředek MeshConfig jako součást řídicí osm-mesh-config roviny v oboru názvů arc-osm-system. Účelem této služby MeshConfig je poskytnout vlastníkovi nebo operátorovi sítě možnost aktualizovat některé konfigurace sítě na základě jejich potřeb. Pokud chcete zobrazit výchozí hodnoty, použijte následující příkaz.
kubectl describe meshconfig osm-mesh-config -n arc-osm-system
Ve výstupu se zobrazí výchozí hodnoty:
Certificate:
Service Cert Validity Duration: 24h
Feature Flags:
Enable Egress Policy: true
Enable Multicluster Mode: false
Enable WASM Stats: true
Observability:
Enable Debug Server: false
Osm Log Level: info
Tracing:
Address: jaeger.osm-system.svc.cluster.local
Enable: false
Endpoint: /api/v2/spans
Port: 9411
Sidecar:
Config Resync Interval: 0s
Enable Privileged Init Container: false
Envoy Image: mcr.microsoft.com/oss/envoyproxy/envoy:v1.18.3
Init Container Image: mcr.microsoft.com/oss/openservicemesh/init:v0.9.1
Log Level: error
Max Data Plane Connections: 0
Resources:
Traffic:
Enable Egress: false
Enable Permissive Traffic Policy Mode: true
Inbound External Authorization:
Enable: false
Failure Mode Allow: false
Stat Prefix: inboundExtAuthz
Timeout: 1s
Use HTTPS Ingress: false
Další informace najdete v referenčních informacích k rozhraní Config API. Všimněte si, že vlastnost spec.traffic.enablePermissiveTrafficPolicyMode je nastavená na hodnotu true. Režim zásad vynucení provozu v OSM je režim, ve kterém se vynucování zásad provozu SMI obchází. V tomto režimu systém OSM automaticky zjišťuje služby, které jsou součástí pravidel zásad provozu sítě služeb a programů na každé savereni proxy serveru Envoy, aby bylo možné s těmito službami komunikovat.
Provádění změn konfigurace kontroleru OSM
Poznámka
Hodnoty v osm-mesh-config meshconfigu se uchová napříč upgrady.
Změny, osm-mesh-config které je možné provést, můžete provést pomocí příkazu kubectl patch. V následujícím příkladu se režim zásad mizivního provozu změní na false.
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"enablePermissiveTrafficPolicyMode":false}}}' --type=merge
Pokud se použije nesprávná hodnota, ověření v seznamu CRD MeshConfig zabrání změně s chybovou zprávou s vysvětlením, proč je hodnota neplatná. Například následující příkaz ukazuje, co se stane, když opravíme enableEgress na ne boolean hodnotu.
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"enableEgress":"no"}}}' --type=merge
# Validations on the CRD will deny this change
The MeshConfig "osm-mesh-config" is invalid: spec.traffic.enableEgress: Invalid value: "string": spec.traffic.enableEgress in body must be of type boolean: "string"
Konfigurace kontroleru OSM (verze v0.8.4)
V současné době můžete ke konfiguraci kontroleru OSM přistupovat a konfigurovat ji prostřednictvím nástroje ConfigMap. Pokud chcete zobrazit nastavení konfigurace kontroleru OSM, prostřednictvím dotazu osm-config na ConfigMap kubectl zobrazte jeho nastavení konfigurace.
kubectl get configmap osm-config -n arc-osm-system -o json
Výstup:
{
"egress": "false",
"enable_debug_server": "false",
"enable_privileged_init_container": "false",
"envoy_log_level": "error",
"permissive_traffic_policy_mode": "true",
"prometheus_scraping": "true",
"service_cert_validity_duration": "24h",
"tracing_enable": "false",
"use_https_ingress": "false"
}
Přečtěte si dokumentaci k OSM ConfigMap, abyste porozuměli jednotlivým dostupným konfiguracím.
Pokud chcete v mapě konfigurace OSM pro verzi v0.8.4 provést změny, použijte následující pokyny:
Zkopírujte a uložte změny, které chcete provést, do souboru JSON. V tomto příkladu změníme hodnotu permissive_traffic_policy_mode true na false. Pokaždé, když v souboru JSON změníte , budete muset zadat úplný seznam změn (ve srovnání s výchozím
osm-configosm-confignastavením).{ "osm.OpenServiceMesh.enablePermissiveTrafficPolicy" : "false" }Nastavte cestu k souboru jako proměnnou prostředí:
export SETTINGS_FILE=<json-file-path>Spusťte stejný
az k8s-extension createpříkaz, který jste použili k vytvoření rozšíření, ale teď předejte soubor nastavení konfigurace:az k8s-extension create --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --cluster-type connectedClusters --extension-type Microsoft.openservicemesh --scope cluster --release-train pilot --name osm --version $VERSION --configuration-settings-file $SETTINGS_FILEPoznámka
Pokud chcete zajistit, aby se změny ConfigMap nevrátily do výchozího stavu, předejte stejné nastavení konfigurace všem následným příkazům az k8s-extension create.
Použití Azure Arc Open Service Mesh
Pokud chcete začít používat funkce OSM, musíte nejprve do sítě služeb onboardovat obory názvů aplikace. Stáhněte si ROZHRANÍ PŘÍKAZOVÉHO řádku OSM ze GitHub verze OSM. Po přidání oborů názvů do sítě můžete nakonfigurovat zásady SMI, abyste dosáhli požadované funkce OSM.
Onboarding oborů názvů do sítě služeb
Přidejte do sítě obory názvů spuštěním následujícího příkazu:
osm namespace add <namespace_name>
Další informace o službách onboardingu najdete tady.
Konfigurace OSM se zásadami rozhraní Service Mesh Interface (SMI)
Můžete začít s ukázkou aplikace nebo použít testovací prostředí k vyzkoušení zásad SMI.
Poznámka
Ujistěte se, že verze aplikace bookstore, kterou spustíte, odpovídá verzi rozšíření OSM nainstalovaného ve vašem clusteru. Například pokud používáte rozšíření OSM verze 0.8.4, použijte ukázku knihkupce z větve release-v0.8 upstream úložiště OSM.
Konfigurace vlastních instancí Jageru, Prometheus a Grafany
Rozšíření OSM neinstaluje doplňky, jako je Jager, Prometheus a Grafana, aby uživatelé mohli integrovat OSM se svými vlastními spuštěných instancemi těchto nástrojů. Pokud chcete provést integraci s vlastními instancemi, projděte si následující dokumentaci:
Poznámka
Příkazy uvedené v dokumentaci k osmé GitHub používejte s opatrností. Ujistěte se, že při provádění změn v souboru používáte správný název oboru názvů arc-osm-system. osm-mesh-config
Monitorování aplikací pomocí Azure Monitor a aplikací Přehledy
Azure Monitor i Azure Application Insights pomáhají maximalizovat dostupnost a výkon vašich aplikací a služeb tím, že poskytují ucelené řešení pro shromažďování, analýzu a jednání telemetrie z vašeho cloudového a místního prostředí.
Otevřená síť s podporou ARC Azure bude mít hlubokou integraci do obou těchto služeb Azure a poskytnou nezdánlivě dostupné prostředí Azure pro zobrazení a reagování na kritické klíčové ukazatele výkonu, které poskytuje OSM metriky. Použijte následující postup, pokud chcete, aby Azure Monitor vyprometheus koncové body pro shromažďování metrik aplikací.
Ujistěte se, že obory názvů aplikace, které chcete monitorovat, jsou připojené do sítě. Postupujte podle pokynů, které jsou k dispozici zde.
Zveřejňujte koncové body Prometheus pro obory názvů aplikací.
osm metrics enable --namespace <namespace1> osm metrics enable --namespace <namespace2>V případě 0.8.4 zajistěte, aby
prometheus_scrapingbylatruev ConfigMap nastavena na hodnotuosm-config.Nainstalujte Azure Monitor rozšíření pomocí pokynů, které jsou k dispozici zde.
Přidejte obory názvů, které chcete monitorovat v kontejneru-AZM-MS-osmconfig ConfigMap. Stáhněte si ConfigMap odsud.
monitor_namespaces = ["namespace1", "namespace2"]Spusťte následující příkaz kubectl
kubectl apply -f container-azm-ms-osmconfig.yaml
Zobrazení metrik v Log Analytics může trvat až 15 minut. Můžete se pokusit zadat dotaz na tabulku InsightsMetrics.
InsightsMetrics
| where Name contains "envoy"
| extend t=parse_json(Tags)
| where t.app == "namespace1"
Přečtěte si další informace o integraci s Azure Monitor tady.
Navigace na řídicím panelu OSM
- Pomocí tohoto odkazuzískáte přístup ke clusteru Kubernetes připojenému k Arc Azure.
- Přejděte na Azure Monitor a přejděte na kartu sestavy, kde získáte přístup k OSM sešitu.
- Vyberte obor názvů s časovým rozsahem & k určení oboru služeb.

Karta žádosti
- Tato karta poskytuje souhrn všech požadavků HTTP odeslaných službou do služby v OSM.
- Výběrem služby v mřížce můžete zobrazit všechny služby a všechny služby, ke kterým komunikuje.
- Můžete si zobrazit celkový počet požadavků, počet chyb požadavků & latenci P90.
- Můžete přejít k podrobnostem cíle a zobrazit trendy pro kód chyby/úspěšnosti HTTP, míru úspěšnosti, pod využitím prostředků a latence na různých percentilech.
Karta Připojení
- Tato karta poskytuje souhrn všech připojení mezi vašimi službami v rámci otevřených sítí služby.
- Odchozí připojení: celkový počet připojení mezi zdrojovou a cílovou službou.
- Odchozí aktivní připojení: Poslední počet aktivních připojení mezi zdrojem a cílem ve vybraném časovém rozsahu.
- Odchozí nezdařená připojení: celkový počet neúspěšných připojení mezi zdrojovou a cílovou službou
Upgradovat instanci rozšíření OSM na konkrétní verzi
Během upgradu může dojít k výpadku roviny ovládacího prvku. Rovina dat bude ovlivněna pouze během CRD upgradu.
Podporované upgrady
Rozšíření OSM se dá upgradovat na další dílčí verzi. V tuto chvíli se nepodporují downgrade a inovace hlavních verzí.
CRD upgrady
Rozšíření OSM nelze upgradovat na novou verzi, pokud tato verze obsahuje aktualizace verze CRD, aniž byste nejprve odstranili existující CRDs. Můžete zkontrolovat, jestli upgrade OSM zahrnuje taky aktualizace verze CRD, a to zaškrtnutím oddílu CRD Updates v poznámkách k verzi osm.
Před odstraněním CRDs nezapomeňte zálohovat vlastní prostředky, aby je bylo možné po upgradu snadno znovu vytvořit. Potom postupujte podle pokynů pro upgrade, které jsou zachyceny níže.
Poznámka
Upgrade CRDs bude mít vliv na rovinu dat, protože zásady SMI neexistují mezi časem jejich odstranění a časem jejich opětovného vytvoření.
Pokyny k upgradu
Odstraňte staré CRDs a vlastní prostředky (spusťte z kořenového adresáře úložiště osm). Ujistěte se, že značka CRDs osm odpovídá nové verzi grafu.
kubectl delete --ignore-not-found --recursive -f ./charts/osm/crds/Install the updated CRDs.
kubectl apply -f charts/osm/crds/Nastavte novou verzi grafu jako proměnnou prostředí:
export VERSION=<chart version>Spuštění AZ k8s-Extension Create s novou verzí grafu
az k8s-extension create --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --cluster-type connectedClusters --extension-type Microsoft.openservicemesh --scope cluster --release-train pilot --name osm --version $VERSION --configuration-settings-file $SETTINGS_FILEOpětovné vytvoření vlastních prostředků pomocí New CRDs
Odinstalace sítě Open Service s povoleným ARC Azure
Použijte následující příkaz:
az k8s-extension delete --cluster-type connectedClusters --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --name osm -y
Ověřte, zda byla instance rozšíření odstraněna:
az k8s-extension list --cluster-type connectedClusters --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Tento výstup by neměl zahrnovat OSM. Pokud v clusteru nemáte nainstalovaná žádná další rozšíření, bude to jenom prázdné pole.
Když použijete příkaz AZ k8s-Extension k odstranění rozšíření OSM, obor názvů osm systému se neodebere a skutečné prostředky v oboru názvů (jako je třeba konfigurace Webhooku a osm-Controller pod) bude trvat asi 10 minut, než se odstraní.
Poznámka
Pomocí rozhraní příkazového řádku AZ k8s-Extension odinstalujte komponenty OSM spravované pomocí ARC. Použití rozhraní příkazového řádku OSM k odinstalaci není podporováno nástrojem ARC a může vést k nežádoucímu chování.
Řešení potíží
Informace najdete tadyv Průvodci odstraňováním potíží.
Další kroky
Chcete něco vyzkoušet?
Rychlé zprovoznění pomocí rozhraní API clusteru vám umožní rychle začít pracovat se scénářem Azure ARC .