Open Service Mesh (OSM) 加载项与 Azure 和某些开源项目提供的功能集成。
重要
AKS 支持策略未涵盖与开源项目的集成。
入口允许将网格外部的流量路由到网格内的服务。 借助 OSM,可以将大多数入口解决方案配置为使用网格,但 OSM 最适合以下解决方案之一:
备注
目前, Azure 网关入口控制器(AGIC) 仅适用于 HTTP 后端。 如果将 OSM 配置为使用 AGIC,则 AGIC 不会用于其他后端,例如 HTTPS 和 mTLS。
重要
无法为 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
验证 Pod 是否已启动并运行,并使用
kubectl get pods
命令注入 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
部署以下配置
Ingress
和IngressBackend
,以允许外部客户端使用kubectl apply
命令访问运行在端口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
验证
Ingress
对象是否已成功部署,使用kubectl get 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 Monitor 集成。
在网格上启用指标以与 Azure Monitor 集成之前,请确保满足以下先决条件:
- 在群集上启用 Azure Monitor。
- 为 AKS 群集启用 OSM 加载项。
- 将应用程序命名空间加入网格。
使用
osm metrics enable
命令为网格中的命名空间启用指标。osm metrics enable --namespace myappnamespace
在命名空间中创建
kube-system
ConfigMap,使 Azure Monitor 能够监视命名空间。 例如,创建一个包含以下内容的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
表以查看已启用命名空间中的指标。 例如,以下查询显示默认命名空间的 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 可以通过与 开放策略代理(OPA)集成来使用外部授权,但 AKS 支持策略未涵盖该集成。
OSM 具有几种用于在 AKS 群集上运行的证书类型。 OSM 包括自己的名为 Tresor 的证书管理器,默认情况下使用。 或者,OSM 允许与 Hashicorp Vault 和 证书管理器集成,但 AKS 支持策略未涵盖这些集成。
本文介绍了开放服务网格(OSM)加载项与 Azure 和某些开源项目提供的功能集成。 若要了解有关 OSM 的详细信息,请参阅 AKS 中的关于 OSM。