Переводим Cilium под управление FluxCD
Погнали!
Первым делом добавляем в каталог cluster файл 04-cilium.yaml следующего содержания:
1
2
3
4
5
6
7
8
9
10
11
12
13
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: cilium
namespace: flux-system
spec:
interval: 1m0s
wait: true
path: ./components/cilium
prune: true
sourceRef:
kind: GitRepository
name: flux-system
Здесь все стандартно, думаю после предыдущего поста пояснений не требует.
Добавляем его в kustomization.yaml, после этого файл выглядит следующим образом:
1
2
3
4
5
6
7
8
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- 00-prometheus-operator-crds.yaml
- 01-victoria-metrics-crds.yaml
- 02-flux-operator.yaml
- 03-flux-instance.yaml
- 04-cilium.yaml
Создаем каталог cilium внутри components и добавляем туда файл hr-cilium.yaml следующего содержания:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: cilium
namespace: kube-system
spec:
interval: 5m0s
url: https://helm.cilium.io
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: cilium
namespace: kube-system
spec:
chart:
spec:
chart: cilium
sourceRef:
kind: HelmRepository
name: cilium
version: '1.19.0'
interval: 5m0s
install:
timeout: 15m0s
upgrade:
timeout: 15m0s
values:
resources:
limits:
memory: 4Gi
requests:
cpu: 100m
memory: 512Mi
ipam:
mode: kubernetes
kubeProxyReplacement: false
securityContext:
capabilities:
ciliumAgent:
- CHOWN
- KILL
- NET_ADMIN
- NET_RAW
- IPC_LOCK
- SYS_ADMIN
- SYS_RESOURCE
- DAC_OVERRIDE
- FOWNER
- SETGID
- SETUID
cleanCiliumState:
- NET_ADMIN
- SYS_ADMIN
- SYS_RESOURCE
cgroup:
autoMount:
enabled: false
hostRoot: /sys/fs/cgroup
prometheus:
enabled: true
serviceMonitor:
enabled: true
operator:
resources:
limits:
memory: 1Gi
requests:
cpu: 100m
memory: 128Mi
prometheus:
enabled: true
serviceMonitor:
enabled: true
envoy:
prometheus:
enabled: true
serviceMonitor:
enabled: true
resources:
limits:
memory: 4Gi
requests:
cpu: 100m
memory: 512Mi
В процессе настройки я руководствовался документацией по установке cilium в кластер, который работает на Talos Linux.
На что стоит обратить внимание:
Здесь я увеличил timeout на установку и обновление приложения через helm. В маленьком кластере это не очень нужно, но в больших кластерах обновление на всех нодах может занять длительное время.
1
2
3
4
install:
timeout: 15m0s
upgrade:
timeout: 15m0s
В остальном все настройки были перенесены из документации, ссылку на которую я приводил выше, добавлены requests и limits для всех компонентов cilium и включены prometheus service monitor для них.
Делаем коммит и пуш в наш инфраструктурный репозиторий.
Проверяем состояние кластера через flux get all -A. После успешного обновления cilium картина должна быть примерно такая:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
NAMESPACE NAME REVISION SUSPENDED READY MESSAGE
flux-system ocirepository/flux-operator 0.35.0@sha256:f4491d1f False True stored artifact for digest '0.35.0@sha256:f4491d1f'
NAMESPACE NAME REVISION SUSPENDED READY MESSAGE
flux-system gitrepository/flux-system refs/heads/main@sha1:b8b38b22 False True stored artifact for revision 'refs/heads/main@sha1:b8b38b22'
NAMESPACE NAME REVISION SUSPENDED READY MESSAGE
flux-system helmrepository/prometheus-community sha256:b9d66f1c False True stored artifact: revision 'sha256:b9d66f1c'
flux-system helmrepository/vm sha256:e8789521 False True stored artifact: revision 'sha256:e8789521'
kube-system helmrepository/cilium sha256:e63dda21 False True stored artifact: revision 'sha256:e63dda21'
NAMESPACE NAME REVISION SUSPENDED READY MESSAGE
flux-system helmchart/flux-system-prometheus-operator-crds 25.0.0 False True pulled 'prometheus-operator-crds' chart with version '25.0.0'
flux-system helmchart/flux-system-victoria-metrics-crds 0.6.0 False True pulled 'victoria-metrics-operator-crds' chart with version '0.6.0'
kube-system helmchart/kube-system-cilium 1.19.0 False True pulled 'cilium' chart with version '1.19.0'
NAMESPACE NAME REVISION SUSPENDED READY MESSAGE
flux-system helmrelease/flux-operator 0.35.0+f4491d1fd68c False True Helm upgrade succeeded for release flux-system/flux-operator.v2 with chart flux-operator@0.35.0+f4491d1fd68c
flux-system helmrelease/prometheus-operator-crds 25.0.0 False True Helm install succeeded for release flux-system/prometheus-operator-crds.v1 with chart prometheus-operator-crds@25.0.0
flux-system helmrelease/victoria-metrics-crds 0.6.0 False True Helm install succeeded for release flux-system/victoria-metrics-crds.v1 with chart victoria-metrics-operator-crds@0.6.0
kube-system helmrelease/cilium 1.19.0 False True Helm upgrade succeeded for release kube-system/cilium.v3 with chart cilium@1.19.0
NAMESPACE NAME REVISION SUSPENDED READY MESSAGE
flux-system kustomization/cilium refs/heads/main@sha1:b8b38b22 False True Applied revision: refs/heads/main@sha1:b8b38b22
flux-system kustomization/flux-instance refs/heads/main@sha1:b8b38b22 False True Applied revision: refs/heads/main@sha1:b8b38b22
flux-system kustomization/flux-operator refs/heads/main@sha1:b8b38b22 False True Applied revision: refs/heads/main@sha1:b8b38b22
flux-system kustomization/flux-system refs/heads/main@sha1:b8b38b22 False True Applied revision: refs/heads/main@sha1:b8b38b22
flux-system kustomization/prometheus-operator-crds refs/heads/main@sha1:b8b38b22 False True Applied revision: refs/heads/main@sha1:b8b38b22
flux-system kustomization/victoria-metrics-crds refs/heads/main@sha1:b8b38b22 False True Applied revision: refs/heads/main@sha1:b8b38b22
Если по каким-то причинам cilium обновлялся дольше, чем 15 минут, то FluxCD покажет, что обновление не удалось. При этом все поды могут быть успешно запущены и находиться в статусе Ready (Проверяем командой kubectl get po -n kube-system | grep cilium):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
cilium-2b2g5 1/1 Running 0 99m
cilium-6mlcs 1/1 Running 0 77m
cilium-96tph 1/1 Running 0 76m
cilium-envoy-2df5r 1/1 Running 0 90m
cilium-envoy-5lrcp 1/1 Running 0 90m
cilium-envoy-n4wnw 1/1 Running 0 77m
cilium-envoy-pqlpw 1/1 Running 0 77m
cilium-envoy-qmwtw 1/1 Running 0 100m
cilium-envoy-xmhmz 1/1 Running 0 90m
cilium-operator-5b55dbbb66-6qgsp 1/1 Running 0 77m
cilium-operator-5b55dbbb66-mrsl9 1/1 Running 0 100m
cilium-skxkw 1/1 Running 0 76m
cilium-tksgq 1/1 Running 0 77m
cilium-tnjp2 1/1 Running 0 99m
Рассказать FluxCD, что все ок можно следующими командами:
- Перезаписываем аннотацию
helmreleasefluxcd.io/reconcileAtтекущей датой
kubectl -n kube-system annotate helmrelease cilium fluxcd.io/reconcileAt="$(date +%s)" --overwrite
- Производим принудительный
reconcile
flux reconcile helmrelease cilium -n kube-system --force
При успехе выполнения данной команды - видим следующую картину:
1
2
3
4
► annotating HelmRelease cilium in kube-system namespace
✔ HelmRelease annotated
◎ waiting for HelmRelease reconciliation
✔ applied revision 1.19.0
Теперь FluxCD тоже видит, что все прошло успешно.
Видео, где наглядно показан материал данного поста:
Комментировать можно тут - пост в telegram канале