- README.md: перепиcан как компактный обзор (98 строк) с навигацией по docs/ - docs/: 13 файлов — getting-started, architecture, configuration, addons, storage, security, cicd, observability, networking, operations, make-reference, molecule-testing, troubleshooting - addons/*/README.md: 31 новый файл — описание, параметры, примеры кода для каждого из 34 аддонов (vault и external-secrets уже существовали)
3.0 KiB
3.0 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