使用 Azure CLI 安装 Open Service Mesh (OSM) 加载项

本文介绍如何在 Azure Kubernetes 服务 (AKS) 群集上安装 Open Service Mesh (OSM) 加载项。 OSM 加载项在群集上安装 OSM 网格。 OSM 网格是一个服务网格,可为应用程序提供流量管理、策略强制实施和遥测收集。 有关 OSM 网格的详细信息,请参阅 Open Service Mesh

重要

根据群集运行的 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 发布日历

先决条件

在群集上安装 OSM 加载项

  1. 如果还没有 Azure 资源组,请使用 az group create 命令创建一个 Azure 资源组。

    az group create --name myResourceGroup --location chinaeast2
    
  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 命令验证 OSM 加载项是否已安装在群集上,并为 --query 参数指定 'addonProfiles.openServiceMesh.enabled'。 在输出的 addonProfiles 下面,openServiceMeshenabled 值应显示为 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}'
    

    以下示例输出显示 0.11.1 版 OSM 网格:

    mcr.azk8s.cn/oss/openservicemesh/osm-controller:v0.11.1
    
  2. 使用下列 kubectl 命令验证群集上运行的 OSM 组件的状态,以显示 app.kubernetes.io/name=openservicemesh.io 部署、pod 和服务的状态。

    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。 在群集上继续使用 OSM 之前,请查看群集的调整大小,例如节点数和虚拟机的 SKU。

  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.azk8s.cn/oss/envoyproxy/envoy:v1.18.3
        initContainerImage: mcr.azk8s.cn/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 代理挎斗上创建流量策略规则,以便能够与这些服务通信。

删除群集

  • 不再需要群集时,可以使用 az group delete 命令将其删除,此操作会删除资源组、群集和所有相关资源。

    az group delete --name myResourceGroup --yes --no-wait
    

注意

或者,可以从群集中卸载 OSM 加载项和相关资源。 有关详细信息,请参阅从 AKS 群集卸载 Open Service Mesh 加载项

后续步骤

本文介绍了如何在 AKS 群集上安装 OSM 加载项,并验证它是否已安装且正在运行。 使用群集上安装的 OSM 加载项,你可以部署示例应用程序载入现有应用程序,以使用你的 OSM 网格。