共用方式為


使用 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 版本支援視窗的相關資訊。

必要條件

在叢集上安裝 OSM 附加元件

  1. 如果您還沒有 Azure 資源群組,請使用 az group create 命令建立 Azure 資源群組。

    az group create --name myResourceGroup --location eastus
    
  2. 使用 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 網狀結構正在您的叢集上執行

  1. 使用 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
    
  2. 使用下列 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。

  3. 使用 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 網格。