在 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)。
建立命名空間並部署應用程式服務
安裝 AGIC 輸入控制器。
使用
kubectl create ns
命令建立應用程式服務的命名空間。kubectl create ns httpbin
使用
osm namespace add
OSM CLI 命令將命名空間新增至網格。osm namespace add httpbin
使用
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
使用
kubectl get pods
命令驗證 Pod 已啟動並執行,並且插入 Envoy Sidecar。kubectl get pods -n httpbin
您的輸出看起來應類似下列的範例輸出:
NAME READY STATUS RESTARTS AGE httpbin-7c6464475-9wrr8 2/2 Running 0 6d20h
使用
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
部署輸入設定,並驗證應用程式服務的存取權
使用
kubectl apply
命令部署下列Ingress
和IngressBackend
設定,並允許外部用戶端存取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
使用
kubectl get ingress
命令驗證Ingress
物件已成功部署,並記下外部 IP 位址。kubectl get ingress -n httpbin
您的輸出看起來應類似下列的範例輸出:
NAME CLASS HOSTS ADDRESS PORTS AGE httpbin <none> * 20.85.173.179 80 6d20h
使用
kubectl get ingressbackend
命令驗證已成功部署IngressBackend
物件。kubectl get ingressbackend -n httpbin
您的輸出看起來應類似下列的範例輸出:
NAME STATUS httpbin committed
驗證您可以使用輸入服務的外部 IP 位址和下列
curl
命令存取httpbin
服務。curl -sI http://<external-ip>/get
確認您收到包含
status 200
的回應。
計量可檢視性
計量可檢視性能讓您檢視網格的計量及部署。 透過 OSM,您可使用 Prometheus 和 Grafana 取得計量可檢視性,但 AKS 支援原則並未涵蓋這些整合作業。
您也可整合 OSM 與 Azure 監視器。
您必須先在網格上啟用計量,才能整合 Azure 監視器,請確定您具備下列必要條件:
- 在叢集上啟用 Azure 監視器。
- 啟用 AKS 叢集的 OSM 附加元件。
- 啟用網格的應用程式命名空間。
使用
osm metrics enable
命令在網格中啟用命名空間的計量。osm metrics enable --namespace myappnamespace
在
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
使用
kubectl apply
命令套用 ConfigMap。kubectl apply -f monitor-configmap.yaml
瀏覽至 Azure 入口網站,並選取您的 AKS 叢集。
在 [監視] 底下,選取 [記錄]。
查詢 [監視] 區段的
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 Vault 和 cert-manager,但 AKS 支援原則並未涵蓋這些整合作業。
下一步
本文涵蓋的 Open Service Mesh (OSM) 附加元件可整合 Azure 所提供的功能及一些開放原始碼專案。 若要深入了解 OSM,請參閱關於 AKS 中的 OSM。