共用方式為


在 Azure Kubernetes Service (AKS) 上整合 Open Service Mesh

Open Service Mesh (OSM) 附加元件可整合 Azure 所提供的功能及一些開放原始碼專案。

注意

因為 Cloud Native Computing Foundation (CNCF) 淘汰了 Open Service Mesh (OSM) (英文),所以建議您找出 OSM 設定,並將其移轉至對等 Istio 設定。 如需從 OSM 移轉到 Istio 的資訊,請參閱 從 Open Service Mesh (OSM)設定移轉到 Istio 的指導

重要

AKS 支援原則未涵蓋與開放原始碼專案的整合作業。

輸入

輸入可讓網格外的流量路由傳送至網格內的服務。 您可透過 OSM 來設定網格使用大部分的輸入解決方案,但 OSM 最適合使用下列其中一個解決方案:

注意

Azure 閘道輸入控制器 (AGIC) 目前僅適用於 HTTP 後端。 如果您將 OSM 設為使用 AGIC,AGIC 即不用於 HTTPS 和 mTLS 等後端。

搭配適用於 HTTP 輸入的 OSM 附加元件,使用 Azure 閘道輸入控制器 (AGIC)

重要

您無法設定適用於 HTTPS 輸入的 Azure 閘道輸入控制器 (AGIC)

建立命名空間並部署應用程式服務

  1. 安裝 AGIC 輸入控制器。

  2. 使用 kubectl create ns 命令建立應用程式服務的命名空間。

    kubectl create ns httpbin
    
  3. 使用 osm namespace add OSM CLI 命令將命名空間新增至網格。

    osm namespace add httpbin
    
  4. 使用 kubectl apply 命令將應用程式服務部署至命名空間。

    export RELEASE_BRANCH=release-v1.2
    kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm-docs/$RELEASE_BRANCH/manifests/samples/httpbin/httpbin.yaml -n httpbin
    
  5. 使用 kubectl get pods 命令驗證 Pod 已啟動並執行,並且插入 Envoy Sidecar。

    kubectl get pods -n httpbin
    

    您的輸出看起來應類似下列的範例輸出:

    NAME                      READY   STATUS    RESTARTS   AGE
    httpbin-7c6464475-9wrr8   2/2     Running   0          6d20h
    
  6. 使用 kubectl get svc 命令列出服務的詳細資料。

    kubectl get svc -n httpbin
    

    您的輸出看起來應類似下列的範例輸出:

    NAME      TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)     AGE
    httpbin   ClusterIP   10.0.92.135   <none>        14001/TCP   6d20h
    

部署輸入設定,並驗證應用程式服務的存取權

  1. 使用 kubectl apply 命令部署下列 IngressIngressBackend 設定,並允許外部用戶端存取 14001 連接埠上的 httpbin 服務。

    kubectl apply -f <<EOF
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: httpbin
      namespace: httpbin
      annotations:
        kubernetes.io/ingress.class: azure/application-gateway
    spec:
      rules:
     - http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: httpbin
                port:
                  number: 14001
    ---
    kind: IngressBackend
    apiVersion: policy.openservicemesh.io/v1alpha1
    metadata:
      name: httpbin
      namespace: httpbin
    spec:
      backends:
     - name: httpbin
        port:
          number: 14001 # targetPort of httpbin service
          protocol: http
      sources:
     - kind: IPRange
        name: 10.0.0.0/8
    EOF
    
  2. 使用 kubectl get ingress 命令驗證 Ingress 物件已成功部署,並記下外部 IP 位址。

    kubectl get ingress -n httpbin
    

    您的輸出看起來應類似下列的範例輸出:

    NAME      CLASS    HOSTS   ADDRESS         PORTS   AGE
    httpbin   <none>   *       20.85.173.179   80      6d20h
    
  3. 使用 kubectl get ingressbackend 命令驗證已成功部署 IngressBackend 物件。

    kubectl get ingressbackend -n httpbin
    

    您的輸出看起來應類似下列的範例輸出:

    NAME      STATUS
    httpbin   committed
    
  4. 驗證您可以使用輸入服務的外部 IP 位址和下列 curl 命令存取 httpbin 服務。

    curl -sI http://<external-ip>/get
    
  5. 確認您收到包含 status 200 的回應。

計量可檢視性

計量可檢視性能讓您檢視網格的計量及部署。 透過 OSM,您可使用 Prometheus 和 Grafana 取得計量可檢視性,但 AKS 支援原則並未涵蓋這些整合作業。

您也可整合 OSM 與 Azure 監視器

您必須先在網格上啟用計量,才能整合 Azure 監視器,請確定您具備下列必要條件:

  • 在叢集上啟用 Azure 監視器。
  • 啟用 AKS 叢集的 OSM 附加元件。
  • 啟用網格的應用程式命名空間。
  1. 使用 osm metrics enable 命令在網格中啟用命名空間的計量。

    osm metrics enable --namespace myappnamespace
    
  2. kube-system 命名空間中建立 ConfigMap,以便 Azure 監視器監視命名空間。 例如:使用下列內容建立 monitor-configmap.yaml,以監視 myappnamespace

    kind: ConfigMap
    apiVersion: v1
    data:
      schema-version: v1
      config-version: ver1
      osm-metric-collection-configuration: |-
        # OSM metric collection settings
        [osm_metric_collection_configuration]
          [osm_metric_collection_configuration.settings]
              # Namespaces to monitor
              monitor_namespaces = ["myappnamespace"]
    metadata:
      name: container-azm-ms-osmconfig
      namespace: kube-system
    
  3. 使用 kubectl apply 命令套用 ConfigMap。

    kubectl apply -f monitor-configmap.yaml
    
  4. 瀏覽至 Azure 入口網站,並選取您的 AKS 叢集。

  5. 在 [監視] 底下,選取 [記錄]

  6. 查詢 [監視] 區段的 InsightsMetrics 資料表,以檢視已啟用的命名空間計量。 例如:下列查詢顯示 default 命名空間的 envoy 計量:

    InsightsMetrics
    |     where Name contains "envoy"
    |     extend t=parse_json(Tags)
    |     where t.namespace == "default"
    

自動化和開發人員工具

OSM 可整合特定的自動化專案和開發人員工具,以便操作員和開發人員建置和發行應用程式。 例如:OSM 可與 Flagger 整合以進行漸進式傳遞,與 Dapr 整合以建置應用程式。 AKS 支援原則未涵蓋 OSM 與 Flagger 和 Dapr 的整合作業。

外部授權

外部授權可讓您將 HTTP 要求的授權轉至外部服務。 OSM 可與 OPEN Policy Agent (OPA) 整合以使用外部授權,但 AKS 支援原則未涵蓋該整合作業。

憑證管理

OSM 有幾種憑證類型可在您的 AKS 叢集上運作。 OSM 包含自己的憑證管理員,名稱為 Tresor;依預設會使用此管理員。 OSM 也可讓您整合 Hashicorp Vaultcert-manager,但 AKS 支援原則並未涵蓋這些整合作業。

下一步

本文涵蓋的 Open Service Mesh (OSM) 附加元件可整合 Azure 所提供的功能及一些開放原始碼專案。 若要深入了解 OSM,請參閱關於 AKS 中的 OSM