Топология k3s: 1 мастер + 2 воркера (убран k3s-worker-3 с томом).
Vault ↔ k3s. Vault живёт в compose, вне кластера, поэтому получает
статический IP 172.28.0.13, DNS-мост в namespace vault и token reviewer
(SA vault-auth + system:auth-delegator). Ansible включает auth/kubernetes,
передавая адрес apiserver, CA и JWT ревьюера явно, и заводит политику с
ролями. Секрет token reviewer'а читается целиком в JSON: вариант
-o jsonpath={.data.ca\.crt} НЕ работает — модуль command разбирает строку
через shlex, съедает обратный слэш, kubectl возвращает пустую строку с
кодом 0, и отказ остаётся незамеченным до падения vault write.
Синхронизация репозитория в gitea. Нужное подмножество путей (замыкание
ссылок clusters/aero) едет архивом на хост и коммитится там: gitea не
публикуется дальше самого хоста, контур остаётся замкнутым. flux-bootstrap
вынесен в отдельную волну — до неё Vault получает auth/kubernetes, а
репозиторий наполняется, иначе первая реконсиляция падает на пустом репо.
Инфраструктура: vault-agent-injector (чарт vault-contour в режиме внешнего
Vault), local-path-provisioner взамен встроенного в k3s (--disable=
local-storage; путь данных прежний), rabbitmq и minio с кредами из Vault.
Выход наружу: порты 80/443 k3s-server опубликованы (istio ingressgateway
занимает эти hostPort), общий contour-gateway на wildcard-хост, сертификат
Let's Encrypt через http01. Имена в сертификате перечислены явно —
http01 не выдаёт wildcard, для них нужен dns01.
Разорваны два дедлока Flux: infra-configs больше не зависит от
infra-controllers (издатели не должны зависеть от здоровья чартов, которые
их используют), istio-config получил disableWait.
Модули ядра iptable_nat и смежные грузятся на хосте: ноды k3s —
контейнеры, istio-init правит iptables через ядро хоста, а на RED OS 8
(nf_tables) legacy-модули не загружены, из-за чего любой под с
istio-injection навсегда вставал в Init:Error.
Собственные Gateway/VirtualService/Certificate чартов rabbitmq и dashboard
отключены — маршрутизация описана централизованно. У rabbitmq это сделано
postRenderers, а не values: kustomize нормализует null в {}, а пустую карту
Helm сливает с дефолтами, возвращая их целиком.
63 lines
2.2 KiB
YAML
63 lines
2.2 KiB
YAML
apiVersion: helm.toolkit.fluxcd.io/v2
|
||
kind: HelmRelease
|
||
metadata:
|
||
name: local-path-provisioner
|
||
namespace: local-path-provisioner
|
||
spec:
|
||
interval: 5m
|
||
timeout: 10m
|
||
values:
|
||
replicaCount: 1
|
||
image:
|
||
repository: cr.yandex/crp3ccidau046kdj8g9q/contour/local-path-provisioner-nn/local-path-provisioner
|
||
tag: v0.0.24
|
||
pullPolicy: IfNotPresent
|
||
helperImage:
|
||
repository: cr.yandex/crp3ccidau046kdj8g9q/contour/local-path-provisioner-nn/busybox
|
||
tag: latest
|
||
imagePullSecrets:
|
||
- name: regcred
|
||
defaultSettings:
|
||
registrySecret: null
|
||
privateRegistry:
|
||
registryUrl: null
|
||
registryUser: null
|
||
registryPasswd: null
|
||
storageClass:
|
||
create: true
|
||
# Класс по умолчанию: встроенный в k3s провижинер отключён
|
||
# (--disable=local-storage в docker-compose.yaml), и default-класса в
|
||
# кластере иначе не остаётся — PVC без явного storageClassName висели бы
|
||
# в Pending.
|
||
defaultClass: true
|
||
name: local-path
|
||
reclaimPolicy: Delete
|
||
# Путь ВНУТРИ контейнера ноды. Взят тот же, что использовал встроенный
|
||
# провижинер, потому что он уже смонтирован с хоста:
|
||
# ./k3s-storage/<нода> -> /var/lib/rancher/k3s/storage
|
||
# Благодаря этому данные PVC переживают пересоздание контейнеров нод и
|
||
# доступны для бэкапа обычными средствами хоста. Дефолт чарта
|
||
# (/opt/local-path-provisioner) никуда не смонтирован — данные исчезли бы
|
||
# вместе с контейнером ноды.
|
||
nodePathMap:
|
||
- node: DEFAULT_PATH_FOR_NON_LISTED_NODES
|
||
paths:
|
||
- /var/lib/rancher/k3s/storage
|
||
rbac:
|
||
create: true
|
||
serviceAccount:
|
||
create: true
|
||
name: ""
|
||
resources: {}
|
||
nodeSelector: {}
|
||
tolerations: []
|
||
affinity: {}
|
||
configmap:
|
||
name: local-path-config
|
||
setup: |-
|
||
set -eu
|
||
mkdir -m 0777 -p "$VOL_DIR"
|
||
teardown: |-
|
||
set -eu
|
||
rm -rf "$VOL_DIR"
|