网格拓扑是一个服务网格可观测性工具,提供了查看相关服务与配置的可视化界面。ASM从1.7.5.25版本开始支持内置网格拓扑。本文介绍如何通过ASM控制台开启网格拓扑的可观测性。

前提条件

启用网格拓扑

在创建ASM实例时启用网格拓扑

  1. 登录ASM控制台
  2. 在左侧导航栏,选择服务网格 > 网格管理
  3. 网格管理页面,单击创建新网格
  4. 在创建新网格面板选中开启采集Prometheus监控指标,然后选中启用ASM网格拓扑提升网格可观测,其他参数配置,请参见创建ASM实例,最后单击确定
    说明
    • 选中开启采集Prometheus监控指标,只是开启采集服务网格实例指标功能,并不会自动创建ARMS实例或者自建的Prometheus实例。
    • 去掉选中开启采集Prometheus监控指标启用ASM网格拓扑提升网格可观测,就可以关闭网格拓扑。

在编辑ASM实例时启用网格拓扑

  1. 登录ASM控制台
  2. 在左侧导航栏,选择服务网格 > 网格管理
  3. 网格管理页面,找到待配置的实例,单击实例的名称或在操作列中单击管理
  4. 在网格管理详情页面右上角单击功能设置
  5. 功能设置更新对话框中选中开启采集Prometheus监控指标,然后选中启用ASM网格拓扑提升网格可观测,最后单击确定
    说明 去掉选中开启采集Prometheus监控指标启用ASM网格拓扑提升网格可观测,就可以关闭网格拓扑。此时再重新开启网格拓扑,将会是全新的网格拓扑。

访问网格拓扑

使用Ingress Gateway访问网格拓扑

  1. 添加入口网关服务。具体操作,请参见创建入口网关服务使用KubeAPI管理入口网关
  2. 为入口网关添加以下端口配置,以支持网格拓扑访问。具体操作,请参见网关CRD字段说明
    - name: http-kiali
      port: 20001
      protocol: TCP
      targetPort: 20001
    Kiali
  3. 创建网关规则,以下为网关规则配置。具体操作,请参见管理网关规则
    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
      name: kiali-gateway
      namespace: istio-system
    spec:
      selector:
        istio: ingressgateway
      servers:
        - hosts:
            - '*'
          port:
            name: http
            number: 20001
            protocol: HTTP
  4. 创建虚拟服务,以下为虚拟服务。具体操作,请参见管理虚拟服务
    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: kiali-vs
      namespace: istio-system
    spec:
      gateways:
        - kiali-gateway
      hosts:
        - '*'
      http:
        - route:
            - destination:
                host: kiali
                port:
                  number: 20001
    在网格管理详情页面基本信息区域启用ASM网格拓扑右侧显示通过入口网关访问链接,单击该链接,跳转到网格拓扑的登录页面。

使用Service访问网格拓扑

  1. 获取集群KubeConfig并通过kubectl工具连接集群
  2. 部署Service。
    1. 创建service.yaml
      apiVersion: v1
      kind: Service
      metadata:
        name: kiali-svc
        namespace: istio-system
        labels:
          app: kiali-svc
      spec:
        ports:
          - name: http
            port: 20001
            targetPort: 20001
            protocol: TCP
        selector:
          istio: kiali
        type: LoadBalancer
    2. 执行以下命令,部署Service。
      kubectl apply -f service.yaml

登录网格拓扑

通过ACK控制台获取Token,然后登录网格拓扑

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏,单击集群
  3. 集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情
  4. 在集群管理页左侧导航栏中,选择配置管理 > 保密字典
  5. 保密字典页面设置命名空间为istio-system,单击kiali-service-account-token-****,单击token行的token图标,获取Token。
  6. 在网格拓扑控制台登录页面输入Token,单击log in,登录网格拓扑控制台。

通过命令行获取Token,然后登录网格拓扑

  1. 执行以下命令,获取Token。
    alias k="kubectl --kubeconfig $USER_CONFIG"
    k get secrets -o jsonpath="{.items[?(@.metadata.annotations['kubernetes\.io/service-account\.name']=='kiali-service-account')].data.token}" -n istio-system | base64 --decode
  2. 在网格拓扑控制台登录页面输入Token,单击log in,登录网格拓扑控制台。