Обновлена документация под новые аддоны (gitlab, redis, mongodb, kafka, kafka-ui, rabbitmq) и новую модель явного выбора зависимостей. Добавлены и унифицированы описания переключателей *_database_mode и *_redis_mode, обновлена таблица зависимостей аддонов, примеры конфигурации и список vault-секретов.
3.4 KiB
3.4 KiB
Istio + Kiali
Service mesh с mutual TLS, traffic management, observability. Kiali — веб-интерфейс для визуализации mesh-топологии.
Быстрый старт
# group_vars/all/addons.yml
addon_istio: true
kiali_enabled: true
kiali_ingress_enabled: true
kiali_ingress_host: "kiali.example.com"
Секрет в vault.yml:
vault_kiali_token: "" # заполнишь после первой установки
make addon-istio
Параметры
| Переменная | Умолч. | Описание |
|---|---|---|
istio_mtls_mode |
STRICT |
STRICT | PERMISSIVE | DISABLE |
istio_install_gateway |
true |
Istio Ingress Gateway (LoadBalancer) |
kiali_enabled |
false |
Установить Kiali UI |
kiali_ingress_enabled |
false |
Ingress для Kiali |
Токен Kiali
При первой установке Ansible выводит токен в конце плейбука. Сохрани в vault:
make vault-edit
# vault_kiali_token: "eyJhbGci..."
Включить sidecar injection в namespace
kubectl label namespace my-app istio-injection=enabled
Или в манифесте Namespace:
apiVersion: v1
kind: Namespace
metadata:
name: my-app
labels:
istio-injection: enabled
VirtualService — traffic routing
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: my-app
namespace: my-app
spec:
hosts:
- myapp.local
gateways:
- istio-system/istio-ingressgateway
http:
- match:
- uri:
prefix: /api
route:
- destination:
host: my-app-api
port:
number: 8080
- route:
- destination:
host: my-app-frontend
port:
number: 80
Canary deployment
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: my-app
spec:
hosts: [my-app]
http:
- route:
- destination:
host: my-app
subset: v1
weight: 90
- destination:
host: my-app
subset: v2
weight: 10
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: my-app
spec:
host: my-app
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
Circuit breaker
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: my-app
spec:
host: my-app
trafficPolicy:
outlierDetection:
consecutive5xxErrors: 5
interval: 30s
baseEjectionTime: 30s
Интеграция с Prometheus + Grafana
kiali_prometheus_enabled: true
kiali_prometheus_url: "http://prometheus-operated.monitoring:9090"
kiali_grafana_enabled: true
kiali_grafana_url: "http://kube-prometheus-stack-grafana.monitoring:80"
Диагностика
istioctl proxy-status
istioctl analyze -n my-app
kubectl logs -n istio-system deployment/istiod -f
Официальные ресурсы
- Официальный сайт: https://istio.io/
- Официальная документация: https://istio.io/latest/docs/
- Версии Helm chart / ПО: https://artifacthub.io/packages/helm/istio-official/base