diff --git a/kubernetes/apps/database/dragonfly-operator/app/helmrelease.yaml b/kubernetes/apps/database/dragonfly-operator/app/helmrelease.yaml new file mode 100644 index 0000000..55ba571 --- /dev/null +++ b/kubernetes/apps/database/dragonfly-operator/app/helmrelease.yaml @@ -0,0 +1,38 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: dragonfly-operator +spec: + interval: 1h + chartRef: + kind: OCIRepository + name: dragonfly-operator + values: + # CRD (dragonflydb.io) идут обычным шаблоном чарта, а не каталогом crds/, + # поэтому обновляются вместе с релизом; keep: true не даёт Helm удалить их + # при удалении релиза (иначе вместе с CRD уехали бы все Dragonfly CR). + crds: + install: true + keep: true + # Метрики оператора отдаются напрямую на :8080, а не через kube-rbac-proxy. + # Prometheus Operator в кластере нет, поэтому ServiceMonitor и дашборд Grafana + # не включаем: без их CRD релиз бы не встал. + rbacProxy: + enabled: false + serviceMonitor: + enabled: false + grafanaDashboard: + enabled: false + manager: + # Дефолт чарта — docker.dragonflydb.io/dragonflydb/operator; берём тот же + # образ из ghcr и фиксируем дайджестом. + image: + repository: ghcr.io/dragonflydb/operator + tag: v1.6.1@sha256:b11411142935f92ed0ec30a5ddeb31680e09ab66beecb827cb0224f1c4238638 + resources: + requests: + cpu: 10m + memory: 128Mi + limits: + memory: 256Mi diff --git a/kubernetes/apps/database/dragonfly-operator/app/kustomization.yaml b/kubernetes/apps/database/dragonfly-operator/app/kustomization.yaml new file mode 100644 index 0000000..10bfeb9 --- /dev/null +++ b/kubernetes/apps/database/dragonfly-operator/app/kustomization.yaml @@ -0,0 +1,6 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./ocirepository.yaml + - ./helmrelease.yaml diff --git a/kubernetes/apps/database/dragonfly-operator/app/ocirepository.yaml b/kubernetes/apps/database/dragonfly-operator/app/ocirepository.yaml new file mode 100644 index 0000000..7b813ca --- /dev/null +++ b/kubernetes/apps/database/dragonfly-operator/app/ocirepository.yaml @@ -0,0 +1,15 @@ +--- +apiVersion: source.toolkit.fluxcd.io/v1 +kind: OCIRepository +metadata: + name: dragonfly-operator +spec: + interval: 15m + layerSelector: + mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip + operation: copy + ref: + # Версия чарта dragonfly-operator. В самом Chart.yaml version/appVersion + # записаны как v1.6.1, поэтому тег идёт с префиксом v. + tag: v1.6.1 + url: oci://ghcr.io/dragonflydb/dragonfly-operator/helm/dragonfly-operator diff --git a/kubernetes/apps/database/dragonfly-operator/ks.yaml b/kubernetes/apps/database/dragonfly-operator/ks.yaml new file mode 100644 index 0000000..d1ec8d4 --- /dev/null +++ b/kubernetes/apps/database/dragonfly-operator/ks.yaml @@ -0,0 +1,24 @@ +--- +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: dragonfly-operator +spec: + interval: 1h + path: ./kubernetes/apps/database/dragonfly-operator/app + prune: true + sourceRef: + kind: GitRepository + name: flux-system + namespace: flux-system + targetNamespace: database + # wait + healthCheck: Kustomization считается Ready только когда оператор + # действительно поднялся. На неё будут ссылаться через dependsOn те + # Kustomization, которые создают Dragonfly CR (ns потребителя), + # поэтому без этого dependsOn не гейтил бы ничего. + wait: true + healthChecks: + - apiVersion: helm.toolkit.fluxcd.io/v2 + kind: HelmRelease + name: dragonfly-operator + namespace: database diff --git a/kubernetes/apps/database/kustomization.yaml b/kubernetes/apps/database/kustomization.yaml new file mode 100644 index 0000000..d94479e --- /dev/null +++ b/kubernetes/apps/database/kustomization.yaml @@ -0,0 +1,11 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: database + +components: + - ../../components/sops + +resources: + - ./namespace.yaml + - ./dragonfly-operator/ks.yaml diff --git a/kubernetes/apps/database/namespace.yaml b/kubernetes/apps/database/namespace.yaml new file mode 100644 index 0000000..4c34a8f --- /dev/null +++ b/kubernetes/apps/database/namespace.yaml @@ -0,0 +1,5 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: database