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

前提条件

启用Kiali for ASM

在创建ASM实例时启用Kiali for ASM

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

在编辑ASM实例时启用Kiali for ASM。

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

访问Kiali for ASM

使用Ingress Gateway访问Kiali for ASM

  1. 添加入口网关服务。具体操作,请参见添加入口网关服务自定义入口网关服务
  2. 为入口网关添加以下端口配置,以支持Kiali访问。具体操作,请参见修改入口网关服务
    - 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
    在网格管理详情页面 基本信息区域 启用Kiali右侧显示 通过入口网关访问链接,单击该链接,跳转到Kiali的登录页面。

使用Service访问Kiali for ASM

  1. 步骤二:选择集群凭证类型
  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

登录Kiali

通过ACK控制台获取Token,然后登录Kiali。

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

通过命令行获取Token,然后登录Kiali。

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