При изменениях только в configMap, helm release не перезапускается. Это не очень удобно для GitOps систем и внешних чартов, где мы используем статичную версию автора.
Поэтому можно использовать проект reloader.
У меня fluxCD. На уровне apps добавляем следующее:
1. helmrelease
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: reloader
namespace: flux-system
spec:
interval: 5m
chart:
spec:
chart: reloader
version: "2.2.0"
sourceRef:
kind: HelmRepository
name: stakater
namespace: flux-system
interval: 5m
targetNamespace: reloader-system
install:
createNamespace: false
remediation:
retries: 3
upgrade:
remediation:
retries: 3
strategy: rollback
values:
image:
repository: ghcr.io/stakater/reloader
name: stakater/reloader
tag: v1.4.6
pullPolicy: IfNotPresent
reloader:
watchGlobally: true
autoReloadAll: false
namespacesToIgnore: "kube-system,kube-public,kube-node-lease,flux-system"
reloadStrategy: "annotations"
deployment:
replicas: 1
resources:
requests:
cpu: 10m
memory: 128Mi
limits:
cpu: 150m
memory: 512Mi
2. kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- repository.yaml
- helmrelease.yaml
3. repository.yaml
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: stakater
namespace: flux-system
spec:
interval: 30m
url: https://stakater.github.io/stakater-charts
Создание ns мы контролируем отдельно, также в структуре flux, его приводить не буду.
Далее на уровне кластера и соответственно приложения кластера просто добавляем аннотацию:
reloader.stakater.com/auto: "true"
reloader будет видеть изменения в configMap и то, поды какого релиза ее используют и перезапускать релиз.
#k8s