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.

Требования

  • Вы вошли в веб-консоль Alauda Container Platform под пользователем с ролью cluster-admin.

Процедура

  1. В веб-консоли Alauda Container Platform перейдите в раздел Administrator.
  2. Выберите Marketplace > OperatorHub.
  3. Найдите Alauda Build of Kiali.
  4. Выберите Alauda Build of Kiali.
  5. Нажмите Install.
  6. Подтвердите установку, нажав Install и Confirm.

Проверка

Убедитесь, что статус установки оператора отображается как Succeeded в разделе Installation Info.

Настройка мониторинга с Kiali

Ниже описано, как интегрировать Alauda Build of Kiali с мониторингом пользовательских нагрузок.

Требования

Процедура

Получите CA-сертификат для Alauda Container Platform в кластере Global:

NOTE

Выполните следующую команду в кластере Global

# CA certificate for ACP - base64-encoded
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}')

Создайте Secret с именем kiali в пространстве имён istio-system для аутентификации 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  # Since Grafana is not bundled in ACP anymore, it is disabled by default
    prometheus:
      # Only required in multi cluster
      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
      # only required when using VictoriaMetrics, remove this field when using 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_data — сертификат CA в формате base64, используемый erebus.
  5. issuer_uri — URL издателя OIDC для dex.
  6. client_id — клиентский ID OIDC для dex.
  7. replicas — количество реплик для развертывания Kiali, в продуктивных средах должно быть не менее 2.
  8. class_name — имя класса ingress для ingress Kiali.
  9. Требуется в мультикластерной сетке. <mesh_id> должен совпадать с .spec.values.global.meshId в ресурсе Istio.
  10. username ссылается на имя пользователя basic-auth для мониторинга, хранящееся в секрете kiali-monitoring-basic-auth.
  11. password ссылается на пароль basic-auth для мониторинга, хранящийся в секрете kiali-monitoring-basic-auth.
  12. thanos_proxy требуется только при использовании VictoriaMetrics, при использовании Prometheus это поле нужно удалить.
  13. url — конечная точка мониторинга для Prometheus или VictoriaMetrics.
  14. i18n задаёт язык по умолчанию и отображение селектора языка.

Примените конфигурацию, сгенерировав манифест с помощью envsubst:

# Замените <platform-ca> на реальный сертификат CA в формате base64, сохранённый ранее.
export PLATFORM_CA=<platform-ca>

envsubst < kiali.yaml | kubectl apply -f -
  1. Замените <platform-ca> на реальный сертификат CA в формате base64, сохранённый ранее.

Доступ к консоли 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. Обновите конфигурацию spec ресурса Kiali для трассирования:

    Пример конфигурации spec ресурса Kiali для трассирования

    spec:
      external_services:
        tracing:
          # Only required in multi cluster
          query_scope:
            istio.mesh_id: <mesh_id>
          enabled: true
          provider: jaeger
          use_grpc: true
          internal_url: "http://jaeger-prod-query.istio-system:16685/jaeger"
          # (Optional) Public facing URL of Jaeger
          # external_url: "<platform-url>/clusters/<cluster>/istio/jaeger"
          # When external_url is not defined, disable_version_check should be set to true
          disable_version_check: true
    1. Требуется в мультикластерной сетке. <mesh_id> должен совпадать с .spec.values.global.meshId в ресурсе Istio.
    2. Указывает, включено ли трассирование.
    3. Указывает провайдера трассирования (jaeger или tempo).
    4. Указывает внутренний URL API Jaeger.
  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. Перейдите в UI Kiali.
  2. Откройте вкладку Workload Traces, чтобы увидеть трассы в UI Kiali.