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.
Процедура
- В веб-консоли Alauda Container Platform перейдите в раздел Administrator.
- Выберите Marketplace > OperatorHub.
- Найдите Alauda Build of Kiali.
- Выберите Alauda Build of Kiali.
- Нажмите Install.
- Подтвердите установку, нажав Install и Confirm.
Проверка
Убедитесь, что статус установки оператора отображается как Succeeded
в разделе Installation Info.
Настройка мониторинга с Kiali
Ниже описано, как интегрировать Alauda Build of Kiali с мониторингом пользовательских нагрузок.
Требования
Процедура
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
с учётными данными для базы данных мониторинга:
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
web_port
— порт для доступа к панели Kiali.
web_root
— путь под URL платформы для доступа к панели Kiali.
api_proxy
указывает на erebus для сопоставления токенов пользователей ACP с токенами Kubernetes.
api_proxy_ca_data
— сертификат CA в формате base64, используемый erebus.
issuer_uri
— URL издателя OIDC для dex.
client_id
— клиентский ID OIDC для dex.
replicas
— количество реплик для развертывания Kiali, в продуктивных средах должно быть не менее 2
.
class_name
— имя класса ingress для ingress Kiali.
- Требуется в мультикластерной сетке.
<mesh_id>
должен совпадать с .spec.values.global.meshId
в ресурсе Istio
.
username
ссылается на имя пользователя basic-auth для мониторинга, хранящееся в секрете kiali-monitoring-basic-auth
.
password
ссылается на пароль basic-auth для мониторинга, хранящийся в секрете kiali-monitoring-basic-auth
.
thanos_proxy
требуется только при использовании VictoriaMetrics, при использовании Prometheus это поле нужно удалить.
url
— конечная точка мониторинга для Prometheus или VictoriaMetrics.
i18n
задаёт язык по умолчанию и отображение селектора языка.
Примените конфигурацию, сгенерировав манифест с помощью envsubst
:
# Замените <platform-ca> на реальный сертификат CA в формате base64, сохранённый ранее.
export PLATFORM_CA=<platform-ca>
envsubst < kiali.yaml | kubectl apply -f -
- Замените
<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.
Процедура
-
Обновите конфигурацию 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
- Требуется в мультикластерной сетке.
<mesh_id>
должен совпадать с .spec.values.global.meshId
в ресурсе Istio
.
- Указывает, включено ли трассирование.
- Указывает провайдера трассирования (
jaeger
или tempo
).
- Указывает внутренний URL API Jaeger.
-
Сохраните обновлённый spec в файле kiali_cr.yaml
.
-
Выполните команду для применения конфигурации:
kubectl -nistio-system patch kiali kiali --type merge -p "$(cat kiali_cr.yaml)"
Пример вывода:
kiali.kiali.io/kiali patched
Проверка
- Перейдите в UI Kiali.
- Откройте вкладку Workload Traces, чтобы увидеть трассы в UI Kiali.