使用 Bicep 在 Azure Kubernetes Service(AKS)中部署 Open Service Mesh 附加元件
本文示範如何使用 Bicep範本,將 Open Service Mesh (OSM) 附加元件部署到 Azure Kubernetes Service(AKS)。
注意
因為 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 版本支援期限的相關資訊,您可以檢查 AKS Kubernetes 發行版本行事曆。
Bicep 是使用宣告式語法來部署 Azure 資源的特定領域語言。 您可以使用 Bicep 來取代建立 Azure Resource Manager 範本,以部署基礎結構即程式碼 Azure 資源。
開始之前
開始之前,請先確認您已符合以下必要條件:
- Azure CLI 2.20.0 版或更新版本。 執行
az --version
以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI。 - 用於部署 AKS 的 SSH 公開金鑰。 如需詳細資訊,請參閱 使用 Azure CLI 建立 SSH 金鑰。
- Visual Studio Code 與 Bash 終端。
- Visual Studio Code Bicep 延伸模組。
使用 Bicep 為新的 AKS 叢集安裝 OSM 附加元件
若要部署新的 AKS 叢集,您可以在叢集建立時啟用 OSM 附加元件。 下列指示會使用泛型 Bicep 範本,使用暫時性磁碟和 kubenet
容器網路介面來部署 AKS 叢集,然後啟用 OSM 附加元件。 如需更進階的部署情節,請參閱何謂 Bicep?
建立資源群組
使用
az group create
命令建立資源群組。az group create --name <my-osm-bicep-aks-cluster-rg> --location <azure-region>
建立主要和參數 Bicep 檔案
建立目錄以儲存必要的 Bicep 部署檔案。 下列範例會建立名為 bicep-osm-aks-addon 的目錄,以及對目錄的變更:
mkdir bicep-osm-aks-addon cd bicep-osm-aks-addon
建立主要檔案和參數檔案。
touch osm.aks.bicep && touch osm.aks.parameters.json
開啟 osm.aks.bicep 檔案,並複製到以下內容:
// https://learn.microsoft.com/azure/aks/troubleshooting#what-naming-restrictions-are-enforced-for-aks-resources-and-parameters @minLength(3) @maxLength(63) @description('Provide a name for the AKS cluster. The only allowed characters are letters, numbers, dashes, and underscore. The first and last character must be a letter or a number.') param clusterName string @minLength(3) @maxLength(54) @description('Provide a name for the AKS dnsPrefix. Valid characters include alphanumeric values and hyphens (-). The dnsPrefix can\'t include special characters such as a period (.)') param clusterDNSPrefix string param k8Version string param sshPubKey string param location string param adminUsername string resource aksCluster 'Microsoft.ContainerService/managedClusters@2021-03-01' = { name: clusterName location: location identity: { type: 'SystemAssigned' } properties: { kubernetesVersion: k8Version dnsPrefix: clusterDNSPrefix enableRBAC: true agentPoolProfiles: [ { name: 'agentpool' count: 3 vmSize: 'Standard_DS2_v2' osDiskSizeGB: 30 osDiskType: 'Ephemeral' osType: 'Linux' mode: 'System' } ] linuxProfile: { adminUsername: adminUserName ssh: { publicKeys: [ { keyData: sshPubKey } ] } } addonProfiles: { openServiceMesh: { enabled: true config: {} } } } }
開啟 osm.aks.parameters.json 檔案,並複製到以下內容。 別忘了以自己的值,取代部署參數值。
注意
osm.aks.parameters.json 是 Bicep 部署所需的範例範本參數檔案。 特別針對您的部署環境更新參數。 您需要新增值的參數包括:
clusterName
、clusterDNSPrefix
、k8Version
、sshPubKey
、location
和adminUsername
。 若要在您的區域中尋找可支援 Kubernetes 版本的清單,請使用az aks get-versions --location <region>
命令。{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "clusterName": { "value": "<YOUR CLUSTER NAME HERE>" }, "clusterDNSPrefix": { "value": "<YOUR CLUSTER DNS PREFIX HERE>" }, "k8Version": { "value": "<YOUR SUPPORTED KUBERNETES VERSION HERE>" }, "sshPubKey": { "value": "<YOUR SSH KEY HERE>" }, "location": { "value": "<YOUR AZURE REGION HERE>" }, "adminUsername": { "value": "<YOUR ADMIN USERNAME HERE>" } } }
部署 Bicep 檔案
開啟終端,並使用
az login
命令向 Azure CLI 驗證您的 Azure 帳戶。使用
az deployment group create
命令部署 Bicep 檔案。az deployment group create \ --name OSMBicepDeployment \ --resource-group osm-bicep-test \ --template-file osm.aks.bicep \ --parameters @osm.aks.parameters.json
驗證 OSM 附加元件的安裝
查詢叢集的附加元件設定檔,以檢查已安裝附加元件的啟用狀態。 下列命令應該會傳回
true
:az aks list -g <my-osm-aks-cluster-rg> -o json | jq -r '.[].addonProfiles.openServiceMesh.enabled'
使用下列
kubectl
命令取得 osm-controller 的狀態。kubectl get deployments -n kube-system --selector app=osm-controller kubectl get pods -n kube-system --selector app=osm-controller kubectl get services -n kube-system --selector app=osm-controller
存取 OSM 附加元件設定
您可以使用 OSM MeshConfig 資源設定 OSM 控制器,也可以使用 Azure CLI 檢視 OSM 控制器的組態設定。
使用
kubectl get
命令檢視 OSM 控制器的組態設定。kubectl get meshconfig osm-mesh-config -n kube-system -o yaml
以下是 MeshConfig 輸出範例:
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 中,寬鬆流量原則模式會略過 SMI 流量原則強制執行。 在此模式中,OSM 會自動探索屬於服務網格一部分的服務。 探索到的服務會在每個 Envoy Proxy 側車上設定流量原則規則,以允許這些服務之間的通訊。警告
繼續之前,請確認您的寬鬆流量原則模式已設定為
true
。 如果還沒,請使用以下命令將其變更為true
:kubectl patch meshconfig osm-mesh-config -n kube-system -p '{"spec":{"traffic":{"enablePermissiveTrafficPolicyMode":true}}}' --type=merge
清除資源
若您不再需要 Azure 資源,請使用
az group delete
命令,刪除部署的測試資源群組。az group delete --name osm-bicep-test
或者,您可以從叢集卸載 OSM 附加元件和相關資源。 如需詳細資訊,請參閱從 AKS 叢集解除安裝 Open Service Mesh 附加元件。
下一步
本文已說明如何在 AKS 叢集上,安裝並確認 OSM 附加元件的安裝和執行。 在叢集上安裝 OSM 附加元件後,您可以部署範例應用程式或上架現有的應用程式,並使用 OSM 網格。