使用 Azure CLI 安裝 Open Service Mesh (OSM) 附加元件
本文將說明如何使用 Azure CLI 命令,在 Azure Kubernetes Service (AKS) 叢集上,安裝 Open Service Mesh (OSM) 附加元件。 OSM 附加元件會在叢集上安裝 OSM 網格。 OSM 網格是一種服務網格,可為您的應用程式提供流量管理、原則強制執行和遙測收集。 如需 OSM 網格的詳細資訊,請參閱 Open Service Mesh。
注意
因為 Cloud Native Computing Foundation (CNCF) 淘汰了 Open Service Mesh (OSM) (英文),所以建議您找出 OSM 設定,並將其移轉至對等 Istio 設定。 如需從 OSM 移轉到 Istio 的資訊,請參閱 從 Open Service Mesh (OSM)設定移轉到 Istio 的指導。
重要
根據叢集執行的 Kubernetes 版本,OSM 附加元件會安裝不同版本的 OSM。
Kubernetes 版本 | 安裝的 OSM 版本 |
---|---|
1.24.0 以上 | 1.2.5 |
1.23.5 與 1.24.0 之間 | 1.1.3 |
早於 1.23.5 | 1.0.0 |
如果對應的 AKS 版本已達使用壽命年限,則可能無法安裝或主動支援舊版 OSM。 您可以檢查 AKS Kube 版本行事曆,以取得 AKS 版本支援視窗的相關資訊。
必要條件
- Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,您可以建立免費帳戶。
- Azure CLI 已安裝。
在叢集上安裝 OSM 附加元件
如果您還沒有 Azure 資源群組,請使用
az group create
命令建立 Azure 資源群組。az group create --name myResourceGroup --location eastus
使用
az aks create
命令來建立已安裝 OSM 附加元件的新 AKS 叢集,並為--enable-addons
參數指定open-service-mesh
。az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --enable-addons open-service-mesh \ --generate-ssh-keys
重要
如果您的叢集上已經有 OSM 網格,您就無法在現有叢集上啟用 OSM 附加元件。 在啟用 OSM 附加元件之前,請先卸載叢集上任何現有的 OSM 網格。
在現有的叢集上安裝時,請使用 az aks enable-addons
命令。 下列程式碼顯示一個範例:
az aks enable-addons \
--resource-group myResourceGroup \
--name myAKSCluster \
--addons open-service-mesh
取得叢集的認證
使用
az aks get-credentials
命令取得 AKS 叢集的認證。az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
確認叢集上已安裝 OSM 附加元件
使用
az aks show
命令搭配,並針對--query
參數指定'addonProfiles.openServiceMesh.enabled'
,驗證您的叢集已安裝 OSM 附加元件。 在輸出的addonProfiles
下方,enabled
值應該會對於openServiceMesh
顯示為true
。az aks show --resource-group myResourceGroup --name myAKSCluster --query 'addonProfiles.openServiceMesh.enabled'
確認 OSM 網狀結構正在您的叢集上執行
使用
kubectl get deployment
命令驗證叢集上執行的 OSM 網狀結構版本、狀態和設定,並顯示 osm-controller 部署的映像版本。kubectl get deployment -n kube-system osm-controller -o=jsonpath='{$.spec.template.spec.containers[:1].image}'
下列範例輸出顯示 OSM 網格 0.11.1 版:
mcr.microsoft.com/oss/openservicemesh/osm-controller:v0.11.1
使用下列
kubectl
命令以顯示app.kubernetes.io/name=openservicemesh.io
部署、Pod 和服務的狀態,驗證叢集上執行的 OSM 元件狀態。kubectl get deployments -n kube-system --selector app.kubernetes.io/name=openservicemesh.io kubectl get pods -n kube-system --selector app.kubernetes.io/name=openservicemesh.io kubectl get services -n kube-system --selector app.kubernetes.io/name=openservicemesh.io
重要
如果任何 Pod 的狀態不是
Running
(例如Pending
),您的叢集可能沒有足夠的資源可執行 OSM。 請檢閱叢集的調整大小,例如節點數目和虛擬機器的 SKU,再繼續使用叢集上的 OSM。使用
kubectl get meshconfig
命令驗證 OSM 網格的設定。kubectl get meshconfig osm-mesh-config -n kube-system -o yaml
下列範例輸出顯示 OSM 網格的設定:
apiVersion: config.openservicemesh.io/v1alpha1 kind: MeshConfig metadata: creationTimestamp: "0000-00-00A00:00:00A" generation: 1 name: osm-mesh-config namespace: kube-system resourceVersion: "2494" uid: 6c4d67f3-c241-4aeb-bf4f-b029b08faa31 spec: certificate: serviceCertValidityDuration: 24h featureFlags: enableEgressPolicy: true enableMulticlusterMode: false enableWASMStats: true observability: enableDebugServer: true osmLogLevel: info tracing: address: jaeger.osm-system.svc.cluster.local enable: false endpoint: /api/v2/spans port: 9411 sidecar: configResyncInterval: 0s enablePrivilegedInitContainer: false envoyImage: mcr.microsoft.com/oss/envoyproxy/envoy:v1.18.3 initContainerImage: mcr.microsoft.com/oss/openservicemesh/init:v0.9.1 logLevel: error maxDataPlaneConnections: 0 resources: {} traffic: enableEgress: true enablePermissiveTrafficPolicyMode: true inboundExternalAuthorization: enable: false failureModeAllow: false statPrefix: inboundExtAuthz timeout: 1s useHTTPSIngress: false
範例輸出顯示
enablePermissiveTrafficPolicyMode: true
,這表示 OSM 已啟用寬鬆的流量原則模式。 在 OSM 網格中啟用此模式:- 會略過 SMI 流量原則強制執行。
- OSM 會自動探索屬於服務網格一部分的服務。
- OSM 會在每個 Envoy Proxy Sidecar 上建立流量原則規則,以便與這些服務通訊。
刪除叢集
您不再需要叢集時,可以使用
az group delete
命令予以刪除,這會移除資源群組、叢集和全部相關資源。az group delete --name myResourceGroup --yes --no-wait
注意
或者,您可以從叢集卸載 OSM 附加元件和相關資源。 如需詳細資訊,請參閱從 AKS 叢集解除安裝 Open Service Mesh 附加元件。
下一步
本文已說明如何在 AKS 叢集上,安裝並確認 OSM 附加元件的安裝和執行。 在叢集上安裝 OSM 附加元件後,您可以部署範例應用程式或上架現有的應用程式,並使用 OSM 網格。