From 4f64c5ec23c5b612a1276674b130d82e0b851235 Mon Sep 17 00:00:00 2001 From: Michael Thomson Date: Tue, 8 Sep 2026 14:17:56 -0400 Subject: [PATCH] emqx --- apps/emqx/release.yaml | 72 +++++++++++++++++++ apps/emqx/repository.yaml | 8 +++ bootstrap/apps/kustomization-emqx.yaml | 19 +++++ infrastructure/namespaces/namespace-emqx.yaml | 4 ++ 4 files changed, 103 insertions(+) create mode 100644 apps/emqx/release.yaml create mode 100644 apps/emqx/repository.yaml create mode 100644 bootstrap/apps/kustomization-emqx.yaml create mode 100644 infrastructure/namespaces/namespace-emqx.yaml diff --git a/apps/emqx/release.yaml b/apps/emqx/release.yaml new file mode 100644 index 0000000..4c12f67 --- /dev/null +++ b/apps/emqx/release.yaml @@ -0,0 +1,72 @@ +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: emqx + namespace: emqx +spec: + chart: + spec: + chart: emqx + version: 5.x + sourceRef: + kind: HelmRepository + name: emqx + interval: 15m + releaseName: emqx + values: + persistence: + enabled: true + size: 20Mi + storageClassName: longhorn + accessMode: ReadWriteOnce + + ## EMQX configuration item, see the documentation (https://hub.docker.com/r/emqx/emqx) + emqxConfig: + EMQX_CLUSTER__DISCOVERY_STRATEGY: "dns" + EMQX_DASHBOARD__DEFAULT_USERNAME: "admin" + EMQX_DASHBOARD__DEFAULT_PASSWORD: "public" + + ingress: + ## ingress for EMQX Dashboard + dashboard: + enabled: true + annotations: + cert-manager.io/cluster-issuer: "letsencrypt-prod" + traefik.ingress.kubernetes.io/router.entrypoints: websecure + traefik.ingress.kubernetes.io/router.tls: "true" + path: / + pathType: ImplementationSpecific + hosts: + - dashboard.emqx.michaelthomson.dev + tls: + - hosts: + - dashboard.emqx.michaelthomson.dev + secretName: emqx-tls + mqtt: + enabled: true + annotations: + cert-manager.io/cluster-issuer: "letsencrypt-prod" + traefik.ingress.kubernetes.io/router.entrypoints: websecure + traefik.ingress.kubernetes.io/router.tls: "true" + path: / + pathType: ImplementationSpecific + hosts: + - mqtt.emqx.michaelthomson.dev + tls: + - hosts: + - mqtt.emqx.michaelthomson.dev + secretName: emqx-tls + ws: + enabled: true + annotations: + cert-manager.io/cluster-issuer: "letsencrypt-prod" + traefik.ingress.kubernetes.io/router.entrypoints: websecure + traefik.ingress.kubernetes.io/router.tls: "true" + path: /mqtt + pathType: ImplementationSpecific + hosts: + - mqtt.emqx.michaelthomson.dev + tls: + - hosts: + - mqtt.emqx.michaelthomson.dev + secretName: emqx-tls diff --git a/apps/emqx/repository.yaml b/apps/emqx/repository.yaml new file mode 100644 index 0000000..033399a --- /dev/null +++ b/apps/emqx/repository.yaml @@ -0,0 +1,8 @@ +apiVersion: source.toolkit.fluxcd.io/v1 +kind: HelmRepository +metadata: + name: emqx + namespace: emqx +spec: + interval: 15m + url: https://repos.emqx.io/charts diff --git a/bootstrap/apps/kustomization-emqx.yaml b/bootstrap/apps/kustomization-emqx.yaml new file mode 100644 index 0000000..5340f77 --- /dev/null +++ b/bootstrap/apps/kustomization-emqx.yaml @@ -0,0 +1,19 @@ +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: emqx + namespace: flux-system +spec: + interval: 15m + path: ./apps/emqx + prune: true # remove any elements later removed from the above path + wait: true + sourceRef: + kind: GitRepository + name: flux-system + decryption: + provider: sops + secretRef: + name: sops-age + dependsOn: + - name: infra-configs diff --git a/infrastructure/namespaces/namespace-emqx.yaml b/infrastructure/namespaces/namespace-emqx.yaml new file mode 100644 index 0000000..ae88c02 --- /dev/null +++ b/infrastructure/namespaces/namespace-emqx.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: emqx