From 7462be79be12a289f55ca24cebc484a75d5d7bfc Mon Sep 17 00:00:00 2001 From: Andrei Kvapil Date: Wed, 26 Jun 2024 03:08:09 +0200 Subject: [PATCH] add fluxcd addon --- packages/apps/kubernetes/README.md | 2 + .../templates/helmreleases/delete.yaml | 4 + .../templates/helmreleases/fluxcd.yaml | 74 +++++++++++++++++++ packages/apps/kubernetes/values.schema.json | 10 +++ packages/apps/kubernetes/values.yaml | 7 ++ 5 files changed, 97 insertions(+) create mode 100644 packages/apps/kubernetes/templates/helmreleases/fluxcd.yaml diff --git a/packages/apps/kubernetes/README.md b/packages/apps/kubernetes/README.md index e3134e00..ea801630 100644 --- a/packages/apps/kubernetes/README.md +++ b/packages/apps/kubernetes/README.md @@ -44,3 +44,5 @@ kubectl get secret -n kubernetes--admin-kubeconfig -o g | `addons.certManager.enabled` | Enables the cert-manager | `false` | | `addons.ingressNginx.enabled` | Enable Ingress-NGINX controller (expect nodes with 'ingress-nginx' role) | `false` | | `addons.ingressNginx.hosts` | List of domain names that should be passed through to the cluster by upper cluster | `[]` | +| `addons.fluxcd.enabled` | Enables Flux CD | `false` | + diff --git a/packages/apps/kubernetes/templates/helmreleases/delete.yaml b/packages/apps/kubernetes/templates/helmreleases/delete.yaml index 5874e878..21925476 100644 --- a/packages/apps/kubernetes/templates/helmreleases/delete.yaml +++ b/packages/apps/kubernetes/templates/helmreleases/delete.yaml @@ -33,6 +33,8 @@ spec: {{ .Release.Name }}-csi {{ .Release.Name }}-cert-manager {{ .Release.Name }}-ingress-nginx + {{ .Release.Name }}-fluxcd-operator + {{ .Release.Name }}-fluxcd -p '{"spec": {"suspend": true}}' --type=merge --field-manager=flux-client-side-apply || true --- @@ -66,6 +68,8 @@ rules: - {{ .Release.Name }}-csi - {{ .Release.Name }}-cert-manager - {{ .Release.Name }}-ingress-nginx + - {{ .Release.Name }}-fluxcd-operator + - {{ .Release.Name }}-fluxcd --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding diff --git a/packages/apps/kubernetes/templates/helmreleases/fluxcd.yaml b/packages/apps/kubernetes/templates/helmreleases/fluxcd.yaml new file mode 100644 index 00000000..17c1e352 --- /dev/null +++ b/packages/apps/kubernetes/templates/helmreleases/fluxcd.yaml @@ -0,0 +1,74 @@ +{{- if .Values.addons.fluxcd.enabled }} +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: {{ .Release.Name }}-fluxcd-operator + labels: + cozystack.io/repository: system + coztstack.io/target-cluster-name: {{ .Release.Name }} +spec: + interval: 1m + releaseName: fluxcd-operator + chart: + spec: + chart: cozy-fluxcd-operator + reconcileStrategy: Revision + sourceRef: + kind: HelmRepository + name: cozystack-system + namespace: cozy-system + kubeConfig: + secretRef: + name: {{ .Release.Name }}-kubeconfig + targetNamespace: cozy-fluxcd + storageNamespace: cozy-fluxcd + install: + createNamespace: true + values: + flux-operator: + fullnameOverride: flux-operator + tolerations: [] + hostNetwork: false + dependsOn: + {{- if lookup "helm.toolkit.fluxcd.io/v2" "HelmRelease" .Release.Namespace .Release.Name }} + - name: {{ .Release.Name }} + namespace: {{ .Release.Namespace }} + {{- end }} + - name: {{ .Release.Name }}-cilium + namespace: {{ .Release.Namespace }} +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: {{ .Release.Name }}-fluxcd + labels: + cozystack.io/repository: system + coztstack.io/target-cluster-name: {{ .Release.Name }} +spec: + interval: 1m + releaseName: fluxcd + chart: + spec: + chart: cozy-fluxcd + reconcileStrategy: Revision + sourceRef: + kind: HelmRepository + name: cozystack-system + namespace: cozy-system + kubeConfig: + secretRef: + name: {{ .Release.Name }}-kubeconfig + targetNamespace: cozy-fluxcd + storageNamespace: cozy-fluxcd + install: + createNamespace: true + dependsOn: + {{- if lookup "helm.toolkit.fluxcd.io/v2" "HelmRelease" .Release.Namespace .Release.Name }} + - name: {{ .Release.Name }} + namespace: {{ .Release.Namespace }} + {{- end }} + - name: {{ .Release.Name }}-cilium + namespace: {{ .Release.Namespace }} + - name: {{ .Release.Name }}-fluxcd-operator + namespace: {{ .Release.Namespace }} +{{- end }} diff --git a/packages/apps/kubernetes/values.schema.json b/packages/apps/kubernetes/values.schema.json index 8d3fa1c7..cceff4d3 100644 --- a/packages/apps/kubernetes/values.schema.json +++ b/packages/apps/kubernetes/values.schema.json @@ -45,6 +45,16 @@ "items": {} } } + }, + "fluxcd": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enables Flux CD", + "default": false + } + } } } } diff --git a/packages/apps/kubernetes/values.yaml b/packages/apps/kubernetes/values.yaml index d591a107..548e344d 100644 --- a/packages/apps/kubernetes/values.yaml +++ b/packages/apps/kubernetes/values.yaml @@ -42,3 +42,10 @@ addons: ## - foo.example.net ## hosts: [] + + ## Flux CD + ## + fluxcd: + ## @param addons.fluxcd.enabled Enables Flux CD + ## + enabled: false