From b2db3edf4247a2bcf07e8db05d08f4407bd28c05 Mon Sep 17 00:00:00 2001 From: Khue Doan Date: Thu, 1 Jan 2026 19:47:36 +0700 Subject: [PATCH] refactor(platform)!: migrate from ArgoCD to Flux CD Need something more minimal, and I'm gonna build a custom UI later. --- infra/_modules/nixos/profiles/k3s-addons.nix | 4 +- platform/staging/cert-manager.yaml | 33 +++++++ platform/staging/forgejo.yaml | 98 ++++++++++++++++++++ platform/staging/istio.yaml | 86 +++++++++++++++++ 4 files changed, 219 insertions(+), 2 deletions(-) create mode 100644 platform/staging/cert-manager.yaml create mode 100644 platform/staging/forgejo.yaml create mode 100644 platform/staging/istio.yaml diff --git a/infra/_modules/nixos/profiles/k3s-addons.nix b/infra/_modules/nixos/profiles/k3s-addons.nix index 21b9303..4169b23 100644 --- a/infra/_modules/nixos/profiles/k3s-addons.nix +++ b/infra/_modules/nixos/profiles/k3s-addons.nix @@ -61,7 +61,7 @@ # url = "http://forgejo-http.forgejo.svc.cluster.local:3000/khuedoan/cloudlab"; url = "https://code.khuedoan.com/khuedoan/cloudlab"; ref = { - branch = "flux-migration"; # TODO switch back to master + branch = "master"; }; }; } @@ -74,7 +74,7 @@ }; spec = { interval = "1m"; - path = "platform/production"; + path = "platform/staging"; prune = true; sourceRef = { kind = "GitRepository"; diff --git a/platform/staging/cert-manager.yaml b/platform/staging/cert-manager.yaml new file mode 100644 index 0000000..26adbb5 --- /dev/null +++ b/platform/staging/cert-manager.yaml @@ -0,0 +1,33 @@ +apiVersion: source.toolkit.fluxcd.io/v1 +kind: HelmRepository +metadata: + name: jetstack + namespace: flux-system +spec: + interval: 1h + url: https://charts.jetstack.io +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: cert-manager + namespace: flux-system +spec: + interval: 30m + chart: + spec: + chart: cert-manager + version: 1.18.2 + sourceRef: + kind: HelmRepository + name: jetstack + releaseName: cert-manager + targetNamespace: cert-manager + install: + createNamespace: true + values: + config: + featureGates: + ACMEHTTP01IngressPathTypeExact: false + crds: + enabled: true diff --git a/platform/staging/forgejo.yaml b/platform/staging/forgejo.yaml new file mode 100644 index 0000000..8a9e4a9 --- /dev/null +++ b/platform/staging/forgejo.yaml @@ -0,0 +1,98 @@ +apiVersion: source.toolkit.fluxcd.io/v1 +kind: HelmRepository +metadata: + name: forgejo + namespace: flux-system +spec: + type: oci + url: oci://code.forgejo.org/forgejo-helm +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: forgejo + namespace: flux-system +spec: + interval: 30m + chart: + spec: + chart: forgejo + version: 15.0.3 + sourceRef: + kind: HelmRepository + name: forgejo + releaseName: forgejo + targetNamespace: forgejo + install: + createNamespace: true + values: + strategy: + type: Recreate + gitea: + config: + database: + DB_TYPE: sqlite3 + session: + PROVIDER: memory + cache: + ADAPTER: memory + queue: + TYPE: level + server: + LANDING_PAGE: explore + ROOT_URL: https://code.khuedoan.com + OFFLINE_MODE: true + repository: + DISABLED_REPO_UNITS: repo.wiki,repo.projects,repo.packages + DISABLE_STARS: true + DEFAULT_BRANCH: master + oauth2_client: + ENABLE_AUTO_REGISTRATION: true + OPENID_CONNECT_SCOPES: "email profile" + USERNAME: username + service: + ENABLE_INTERNAL_SIGNIN: false + ALLOW_ONLY_EXTERNAL_REGISTRATION: true + "service.explore": + DISABLE_USERS_PAGE: true + actions: + ENABLED: false + webhook: + ALLOWED_HOST_LIST: "private" + other: + SHOW_FOOTER_VERSION: false + SHOW_FOOTER_TEMPLATE_LOAD_TIME: false + SHOW_FOOTER_POWERED_BY: false + oauth: + - name: SSO + provider: 'openidConnect' + autoDiscoverUrl: https://dex.cloudlab.khuedoan.com/.well-known/openid-configuration + existingSecret: forgejo-oauth + admin: + email: admin@cloudlab.khuedoan.com + existingSecret: forgejo-admin + podAnnotations: + "istio.io/dataplane-mode": "ambient" + ingress: + enabled: true + className: nginx + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + nginx.ingress.kubernetes.io/proxy-body-size: "0" + hosts: + - host: code.khuedoan.com + paths: + - path: / + pathType: Prefix + tls: + - hosts: + - code.khuedoan.com + secretName: forgejo-tls-certificate + valkey-cluster: + enabled: false + valkey: + enabled: false + postgresql: + enabled: false + postgresql-ha: + enabled: false diff --git a/platform/staging/istio.yaml b/platform/staging/istio.yaml new file mode 100644 index 0000000..d45bb3a --- /dev/null +++ b/platform/staging/istio.yaml @@ -0,0 +1,86 @@ +apiVersion: source.toolkit.fluxcd.io/v1 +kind: HelmRepository +metadata: + name: istio + namespace: flux-system +spec: + interval: 1h + url: https://istio-release.storage.googleapis.com/charts +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: istio-base + namespace: flux-system +spec: + interval: 3m + chart: + spec: + chart: base + version: 1.25.1 + sourceRef: + kind: HelmRepository + name: istio + releaseName: istio-base + targetNamespace: istio-system + install: + createNamespace: true +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: istio-cni + namespace: flux-system +spec: + interval: 3m + chart: + spec: + chart: cni + version: 1.25.1 + sourceRef: + kind: HelmRepository + name: istio + releaseName: istio-cni + targetNamespace: istio-system + values: + global: + platform: k3s + profile: ambient +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: ztunnel + namespace: flux-system +spec: + interval: 3m + chart: + spec: + chart: ztunnel + version: 1.25.1 + sourceRef: + kind: HelmRepository + name: istio + releaseName: ztunnel + targetNamespace: istio-system + values: + profile: ambient +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: istiod + namespace: flux-system +spec: + interval: 3m + chart: + spec: + chart: istiod + version: 1.25.1 + sourceRef: + kind: HelmRepository + name: istio + releaseName: istiod + targetNamespace: istio-system + values: + profile: ambient -- 2.51.2