Alauda Build of Kiali

目录

使用 Alauda Build of Kiali

Alauda Build of Kiali 为部署在服务网格中的应用提供可观测性和可视化功能。在将应用添加到网格后,可以使用 Alauda Build of Kiali 检查流量流动并监控网格行为。

关于 Kiali

Alauda Build of Kiali 源自开源的 Kiali project,是 Alauda Service Mesh 的管理控制台。

它提供:

  • 网格拓扑和实时流量流的可视化
  • 应用健康状态和性能指标的洞察
  • 配置和验证工具的集中访问
  • 与 Grafana 的指标仪表盘集成
  • 通过 Jaeger 或 OpenTelemetry 支持分布式追踪

这些功能使用户能够诊断服务行为、识别潜在问题,并从统一界面优化网格配置。

安装 Alauda Build of Kiali

以下步骤展示如何安装 Alauda Build of Kiali。

前提条件

  • 您已以 cluster-admin 身份登录 Alauda Container Platform Web 控制台。

操作步骤

  1. 在 Alauda Container Platform Web 控制台中,导航到 Administrator
  2. 选择 Marketplace > OperatorHub
  3. 搜索 Alauda Build of Kiali。
  4. 找到 Alauda Build of Kiali 并点击选择。
  5. 点击 Install
  6. 点击 InstallConfirm 以安装 Operator。

验证

确认在 Installation Info 区域中 Operator 安装状态显示为 Succeeded

使用 Kiali 配置监控

以下步骤展示如何将 Alauda Build of Kiali 与用户工作负载监控集成。

前提条件

操作步骤

Global 集群中获取 Alauda Container Platform 的 CA 证书:

NOTE

Global 集群中运行以下命令

# ACP 的 CA 证书 - base64 编码
kubectl -ncpaas-system get secret dex.tls -o jsonpath='{.data.ca\.crt}'

输出为 base64 编码的证书,请保存该值以备后续步骤使用。

从业务集群获取平台配置信息:

export PLATFORM_URL=$(kubectl -nkube-public get configmap global-info -o jsonpath='{.data.platformURL}')
export CLUSTER_NAME=$(kubectl -nkube-public get configmap global-info -o jsonpath='{.data.clusterName}')
export ALB_CLASS_NAME=$(kubectl -nkube-public get configmap global-info -o jsonpath='{.data.systemAlbIngressClassName}')

export OIDC_ISSUER=$(kubectl -nkube-public get configmap global-info -o jsonpath='{.data.oidcIssuer}')
export OIDC_CLIENT_ID=$(kubectl -nkube-public get configmap global-info -o jsonpath='{.data.oidcClientID}')
export OIDC_CLIENT_SECRET=$(kubectl -nkube-public get configmap global-info -o jsonpath='{.data.oidcClientSecret}')

export MONITORING_URL=$(kubectl get feature monitoring -o jsonpath='{.spec.accessInfo.database.address}')

istio-system 命名空间中创建名为 kialiSecret 用于 OpenID 认证:

kubectl create secret generic kiali --from-literal="oidc-secret=$OIDC_CLIENT_SECRET" -nistio-system

示例输出:

secret/kiali created

创建用于监控数据库凭据的 Secret

SECRET_NAME=$(kubectl get feature monitoring -o jsonpath='{.spec.accessInfo.database.basicAuth.secretName}')

AUTH_USERNAME=$(kubectl -ncpaas-system get secret "$SECRET_NAME" -o jsonpath="{.data.username}" | base64 -d)
AUTH_PASSWORD=$(kubectl -ncpaas-system get secret "$SECRET_NAME" -o jsonpath="{.data.password}" | base64 -d)

kubectl create secret generic "kiali-monitoring-basic-auth" \
  --from-literal="username=$AUTH_USERNAME" \
  --from-literal="password=$AUTH_PASSWORD" \
  -n istio-system

示例输出:

secret/kiali-monitoring-basic-auth created

创建名为 kiali.yaml 的文件,内容如下。根据需要替换占位符:

kiali.yaml
apiVersion: kiali.io/v1alpha1
kind: Kiali
metadata:
  name: kiali
  namespace: istio-system
spec:
  server:
    web_port: 443
    web_root: /clusters/${CLUSTER_NAME}/kiali
  auth:
    openid:
      api_proxy: ${PLATFORM_URL}/kubernetes/${CLUSTER_NAME}
      api_proxy_ca_data: ${PLATFORM_CA}
      insecure_skip_verify_tls: true
      issuer_uri: ${OIDC_ISSUER}
      client_id: ${OIDC_CLIENT_ID}
      username_claim: email
    strategy: openid
  deployment:
    view_only_mode: false
    replicas: 1
    resources:
      requests:
        cpu: "100m"
        memory: "64Mi"
      limits:
        memory: "1Gi"
    ingress:
      enabled: true
      class_name: ${ALB_CLASS_NAME}
  external_services:
    grafana:
      enabled: false  # 由于 Grafana 不再内置于 ACP,默认禁用
    prometheus:
      # 仅多集群时需要
      query_scope:
         mesh_id: <mesh_id>
      auth:
        type: basic
        username: secret:kiali-monitoring-basic-auth:username
        password: secret:kiali-monitoring-basic-auth:password
        insecure_skip_verify: true
      # 仅使用 VictoriaMetrics 时需要,使用 Prometheus 时请删除此字段
      thanos_proxy:
        enabled: true
        retention_period: 30d
        scrape_interval: 60s
      url: ${MONITORING_URL}
  kiali_feature_flags:
    ui_defaults:
      i18n:
        language: en
        show_selector: true
  1. web_port 是访问 Kiali 监控面板的端口。
  2. web_root 是平台 URL 下访问 Kiali 监控面板的路径。
  3. api_proxy 指向 erebus,用于将 ACP 用户令牌映射为 Kubernetes 令牌。
  4. api_proxy_ca_dataerebus 使用的 base64 编码 CA 证书。
  5. issuer_uridex 的 OIDC 发行者 URL。
  6. client_iddex 的 OIDC 客户端 ID。
  7. replicas 指定 Kiali 部署的副本数,生产环境建议至少为 2
  8. class_name 是 Kiali ingress 的 ingress class 名称。
  9. 多集群网格中必需。<mesh_id> 应与 Istio 资源中 .spec.values.global.meshId 相同。
  10. username 引用存储在 kiali-monitoring-basic-auth Secret 中的监控 basic-auth 用户名。
  11. password 引用存储在 kiali-monitoring-basic-auth Secret 中的监控 basic-auth 密码。
  12. thanos_proxy 仅在使用 VictoriaMetrics 时需要,使用 Prometheus 时请删除此字段。
  13. url 是 Prometheus 或 VictoriaMetrics 的监控端点。
  14. i18n 指定默认语言及是否显示语言选择器。

应用配置,使用 envsubst 渲染清单:

# 将 <platform-ca> 替换为之前保存的真实 base64 编码 CA 证书。
export PLATFORM_CA=<platform-ca>

envsubst < kiali.yaml | kubectl apply -f -
  1. <platform-ca> 替换为之前保存的真实 base64 编码 CA 证书。

访问 Kiali 控制台:

Kiali 资源准备就绪后,访问 Kiali 监控面板地址为 <platform-url>/clusters/<cluster>/kiali

将分布式追踪平台集成到 Alauda Build of Kiali

集成分布式追踪平台后,Alauda Build of Kiali 可在 Kiali 控制台中直接可视化请求追踪。这些追踪提供了服务网格内服务间通信的洞察,有助于识别请求路径中的延迟、失败或瓶颈。

此功能支持请求流行为分析,帮助定位根因并优化网格中各服务的性能。

前提条件

  • 已安装 Alauda Service Mesh。
  • 已安装并成功配置分布式追踪平台,如 Alauda Build of Jaeger。

操作步骤

  1. 更新 Kiali 资源的 spec 配置以启用追踪:

    追踪相关的 Kiali 资源 spec 配置示例

    spec:
      external_services:
        tracing:
          # 仅多集群时需要
          query_scope:
            istio.mesh_id: <mesh_id>
          enabled: true
          provider: jaeger
          use_grpc: true
          internal_url: "http://jaeger-prod-query.cpaas-system:16685/jaeger"
          # (可选)Jaeger 的公网访问 URL
          # external_url: "http://my-jaeger-host/jaeger"
          # 当未定义 external_url 时,应将 disable_version_check 设置为 true
          disable_version_check: true
    1. 多集群网格中必需。<mesh_id> 应与 Istio 资源中 .spec.values.global.meshId 相同。
    2. 指定是否启用追踪。
    3. 指定追踪提供者(jaegertempo)。
    4. 指定 Jaeger API 的内部 URL。
  2. 将更新后的 spec 保存为 kiali_cr.yaml

  3. 运行以下命令应用配置:

    kubectl -nistio-system patch kiali kiali --type merge -p "$(cat kiali_cr.yaml)"

    示例输出:

    kiali.kiali.io/kiali patched

验证

  1. 进入 Kiali UI。
  2. 导航至 WorkloadTraces 标签页,查看 Kiali UI 中的追踪信息。