Розширене налаштування Helm Chart
Передумови
Перед початком перевірте наступні передумови:
- Завантажте реліз Istio.
- Виконайте будь-які необхідні специфічні налаштування платформи.
- Перевірте Вимоги до Podʼів та Сервісів.
- Використання helm для установки Istio.
- Версія Helm, яка підтримує пост-рендеринг (>= 3.1).
- kubectl або kustomize.
Розширені налаштування Helm Chart
Helm chart для Istio намагається включити більшість атрибутів, необхідних користувачам для їх специфічних вимог. Однак він не містить кожного можливого значення Kubernetes, яке ви можете захотіти налаштувати. Хоча практично неможливо реалізувати такий механізм, в цьому документі ми покажемо метод, який дозволить вам здійснювати розширене налаштування Helm чарту без необхідності безпосередньо модифікувати Helm чарт Istio.
Використання Helm з kustomize для пост-рендерингу Istio charts
Використовуючи можливість post-renderer
Helm, ви можете легко налаштувати маніфести установки відповідно до ваших вимог. Пост-рендеринг
надає гнучкість для маніпулювання, налаштування і/або перевірки створених маніфестів перед їх установкою за допомогою Helm. Це дозволяє користувачам з розширеними потребами в конфігурації використовувати такі інструменти, як Kustomize, для застосування змін конфігурації без потреби у додатковій підтримці від оригінальних розробників чартів.
Додавання значення до наявного чарту
У цьому прикладі ми додамо значення sysctl
до розгортання ingress-gateway
Istio. Ми збираємось:
- Створити шаблон патча налаштування
sysctl
для розгортання. - Застосувати патч за допомогою пост-рендерингу Helm.
- Перевірити, що патч
sysctl
був правильно застосований до podʼів.
Створення Kustomization
Спочатку створимо файл патча sysctl
, додавши securityContext
до podʼа ingress-gateway
з додатковим атрибутом:
$ cat > sysctl-ingress-gw-customization.yaml <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: istio-ingress
namespace: istio-ingress
spec:
template:
spec:
securityContext:
sysctls:
- name: net.netfilter.nf_conntrack_tcp_timeout_close_wait
value: "10"
EOF
Нижче наведений сценарій оболонки допомагає зʼєднати Helm post-renderer
та Kustomize, оскільки перший працює з stdin/stdout
, а другий працює з файлами.
$ cat > kustomize.sh <<EOF
#!/bin/sh
cat > base.yaml
exec kubectl kustomize # також можна використовувати "kustomize build .", якщо у вас його встановлено.
EOF
$ chmod +x ./kustomize.sh
Нарешті, створимо файл kustomization.yaml
, який є вхідним для kustomize
зі списком ресурсів та супутніми деталями налаштування.
$ cat > kustomization.yaml <<EOF
resources:
- base.yaml
patchesStrategicMerge:
- sysctl-ingress-gw-customization.yaml
EOF
Застосування Kustomization
Тепер, коли файл Kustomization готовий, використаємо Helm, щоб переконатися, що він буде застосований належним чином.
Додати репозиторій Helm для Istio
$ helm repo add istio https://istio-release.storage.googleapis.com/charts
$ helm repo update
Рендеринг та перевірка за допомогою Helm Template
Ми можемо використовувати Helm post-renderer
, щоб перевірити створені маніфести перед їх установкою за допомогою Helm.
$ helm template istio-ingress istio/gateway --namespace istio-ingress --post-renderer ./kustomize.sh | grep -B 2 -A 1 netfilter.nf_conntrack_tcp_timeout_close_wait
У виводі перевірте новий атрибут sysctl
для podʼа ingress-gateway
:
securityContext:
sysctls:
- name: net.netfilter.nf_conntrack_tcp_timeout_close_wait
value: "10"
Застосування патча за допомогою Helm Post-Renderer
Використовуйте наступну команду для установки ingress-gateway Istio, застосовуючи наше налаштування за допомогою Helm post-renderer
:
$ kubectl create ns istio-ingress
$ helm upgrade -i istio-ingress istio/gateway --namespace istio-ingress --wait --post-renderer ./kustomize.sh
Перевірка Kustomization
Перевірте розгортання ingress-gateway, ви побачите нове змінене значення sysctl
:
$ kubectl -n istio-ingress get deployment istio-ingress -o yaml
apiVersion: apps/v1
kind: Deployment
metadata:
…
name: istio-ingress
namespace: istio-ingress
spec:
template:
metadata:
…
spec:
securityContext:
sysctls:
- name: net.netfilter.nf_conntrack_tcp_timeout_close_wait
value: "10"
Додаткова інформація
Для отримання детальнішої інформації про концепції та техніки, описані в цьому документі, будь ласка, зверніться до: