From b1ec7bbca7c51b635292d24efc264e1cb4d49442 Mon Sep 17 00:00:00 2001 From: Ian Keane Date: Thu, 17 Sep 2026 17:08:48 -0400 Subject: [PATCH 1/2] Add opengist --- charts/opengist/Chart.yaml | 5 ++ .../opengist/templates/external-secret.yaml | 22 +++++ charts/opengist/templates/namespace.yaml | 4 + charts/opengist/templates/opengist.yaml | 90 +++++++++++++++++++ charts/opengist/values.yaml | 6 ++ manifests/services/opengist.yaml | 33 +++++++ terraform/opengist-dns.tf | 13 +++ 7 files changed, 173 insertions(+) create mode 100644 charts/opengist/Chart.yaml create mode 100644 charts/opengist/templates/external-secret.yaml create mode 100644 charts/opengist/templates/namespace.yaml create mode 100644 charts/opengist/templates/opengist.yaml create mode 100644 charts/opengist/values.yaml create mode 100644 manifests/services/opengist.yaml create mode 100644 terraform/opengist-dns.tf diff --git a/charts/opengist/Chart.yaml b/charts/opengist/Chart.yaml new file mode 100644 index 0000000..25cf2fa --- /dev/null +++ b/charts/opengist/Chart.yaml @@ -0,0 +1,5 @@ +apiVersion: v2 +name: opengist +description: OpenGist - self-hosted pastebin/gist service +type: application +version: 0.1.0 diff --git a/charts/opengist/templates/external-secret.yaml b/charts/opengist/templates/external-secret.yaml new file mode 100644 index 0000000..c00e0f5 --- /dev/null +++ b/charts/opengist/templates/external-secret.yaml @@ -0,0 +1,22 @@ +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: opengist-secrets + namespace: opengist + annotations: + argocd.argoproj.io/sync-wave: "-1" +spec: + refreshInterval: 1h + secretStoreRef: + name: aws-secrets-manager + kind: ClusterSecretStore + target: + name: opengist-secrets + template: + data: + OG_DB_URI: "postgres://postgres:{{ `{{ .postgres_password }}` }}@postgres.postgres.svc.cluster.local:5432/opengist" + data: + - secretKey: postgres_password + remoteRef: + key: dumpnet + property: postgres.password diff --git a/charts/opengist/templates/namespace.yaml b/charts/opengist/templates/namespace.yaml new file mode 100644 index 0000000..414cdb3 --- /dev/null +++ b/charts/opengist/templates/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: opengist diff --git a/charts/opengist/templates/opengist.yaml b/charts/opengist/templates/opengist.yaml new file mode 100644 index 0000000..40c36d7 --- /dev/null +++ b/charts/opengist/templates/opengist.yaml @@ -0,0 +1,90 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: opengist + namespace: opengist +spec: + replicas: 1 + selector: + matchLabels: + app: opengist + template: + metadata: + labels: + app: opengist + spec: + containers: + - name: opengist + image: "ghcr.io/thomiceli/opengist:1" + env: + - name: OG_GIT_DEFAULT_BRANCH + value: "main" + - name: OG_EXTERNAL_URL + value: "https://{{ .Values.gistSubdomain }}.{{ .Values.gistDomain }}" + envFrom: + - secretRef: + name: opengist-secrets + ports: + - name: http + containerPort: 6157 + - name: ssh + containerPort: 2222 + volumeMounts: + - name: data + mountPath: /opengist + readinessProbe: + httpGet: + path: /healthcheck + port: 6157 + initialDelaySeconds: 5 + livenessProbe: + httpGet: + path: /healthcheck + port: 6157 + initialDelaySeconds: 15 + volumes: + - name: data + hostPath: + path: /var/local/appdata/opengist + type: DirectoryOrCreate +--- +apiVersion: v1 +kind: Service +metadata: + name: opengist + namespace: opengist +spec: + selector: + app: opengist + ports: + - name: http + port: 80 + targetPort: 6157 + - name: ssh + port: 2222 + targetPort: 2222 +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: opengist + namespace: opengist + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod +spec: + ingressClassName: nginx + tls: + - hosts: + - "{{ .Values.gistSubdomain }}.{{ .Values.gistDomain }}" + secretName: opengist-tls + rules: + - host: "{{ .Values.gistSubdomain }}.{{ .Values.gistDomain }}" + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: opengist + port: + number: 80 diff --git a/charts/opengist/values.yaml b/charts/opengist/values.yaml new file mode 100644 index 0000000..6c1687c --- /dev/null +++ b/charts/opengist/values.yaml @@ -0,0 +1,6 @@ +domain: dumpnet.chat +gistDomain: keane.sh +gistSubdomain: gist +registry: + host: forge.keane.sh + user: ian diff --git a/manifests/services/opengist.yaml b/manifests/services/opengist.yaml new file mode 100644 index 0000000..df21b51 --- /dev/null +++ b/manifests/services/opengist.yaml @@ -0,0 +1,33 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: opengist + namespace: argocd +spec: + project: default + sources: + - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + targetRevision: HEAD + path: charts/opengist + helm: + valueFiles: + - $values/values.yaml + - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + targetRevision: HEAD + ref: values + destination: + server: https://kubernetes.default.svc + namespace: opengist + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + ignoreDifferences: + - group: external-secrets.io + kind: ExternalSecret + jsonPointers: + - /spec/target/template/mergePolicy + - /spec/target/template/engineVersion + - /spec/target/template/type diff --git a/terraform/opengist-dns.tf b/terraform/opengist-dns.tf new file mode 100644 index 0000000..927ba07 --- /dev/null +++ b/terraform/opengist-dns.tf @@ -0,0 +1,13 @@ +# gist.keane.sh -> OpenGist, running on the same k8s cluster (different +# hosted zone than dumpnet.chat, so this is separate from dns_records/dns.tf) +data "aws_route53_zone" "keane_sh" { + name = "keane.sh" +} + +resource "aws_route53_record" "opengist" { + zone_id = data.aws_route53_zone.keane_sh.zone_id + name = "gist.keane.sh" + type = "A" + ttl = 300 + records = [aws_eip.controlplane.public_ip] +} From 6a719c2e698f440efafa53c5b85df68cb4c182e8 Mon Sep 17 00:00:00 2001 From: Ian Keane Date: Thu, 17 Sep 2026 17:19:33 -0400 Subject: [PATCH 2/2] Migrate argo to new git host --- apps/apps.yaml | 2 +- apps/cluster.yaml | 2 +- apps/data.yaml | 2 +- apps/mcp.yaml | 2 +- apps/services.yaml | 2 +- manifests/cluster/argocd.yaml | 2 +- manifests/cluster/cert-manager.yaml | 6 +++--- manifests/cluster/external-secrets.yaml | 4 ++-- manifests/cluster/fluent-bit.yaml | 4 ++-- manifests/cluster/ingress-nginx.yaml | 4 ++-- manifests/cluster/tailscale.yaml | 4 ++-- manifests/mcp/forgejo-mcp.yaml | 2 +- manifests/mcp/mcp-auth-proxy.yaml | 2 +- manifests/services/kan.yaml | 2 +- manifests/services/mediamtx.yaml | 4 ++-- manifests/services/opengist.yaml | 4 ++-- manifests/services/repertory-api.yaml | 4 ++-- values.yaml | 4 +++- 18 files changed, 29 insertions(+), 27 deletions(-) diff --git a/apps/apps.yaml b/apps/apps.yaml index ad102e3..7bc3a1e 100644 --- a/apps/apps.yaml +++ b/apps/apps.yaml @@ -6,7 +6,7 @@ metadata: spec: project: default source: - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD path: apps destination: diff --git a/apps/cluster.yaml b/apps/cluster.yaml index 8382748..4bf97c3 100644 --- a/apps/cluster.yaml +++ b/apps/cluster.yaml @@ -6,7 +6,7 @@ metadata: spec: project: default source: - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD path: manifests/cluster destination: diff --git a/apps/data.yaml b/apps/data.yaml index ac54a7e..a723890 100644 --- a/apps/data.yaml +++ b/apps/data.yaml @@ -6,7 +6,7 @@ metadata: spec: project: default source: - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD path: manifests/data destination: diff --git a/apps/mcp.yaml b/apps/mcp.yaml index b33c1a5..ebd68d0 100644 --- a/apps/mcp.yaml +++ b/apps/mcp.yaml @@ -6,7 +6,7 @@ metadata: spec: project: default source: - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD path: manifests/mcp destination: diff --git a/apps/services.yaml b/apps/services.yaml index 833e1f3..bb693b1 100644 --- a/apps/services.yaml +++ b/apps/services.yaml @@ -6,7 +6,7 @@ metadata: spec: project: default source: - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD path: manifests/services destination: diff --git a/manifests/cluster/argocd.yaml b/manifests/cluster/argocd.yaml index 0e89561..16e2991 100644 --- a/manifests/cluster/argocd.yaml +++ b/manifests/cluster/argocd.yaml @@ -6,7 +6,7 @@ metadata: spec: project: default sources: - - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + - repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD ref: values - repoURL: https://argoproj.github.io/argo-helm diff --git a/manifests/cluster/cert-manager.yaml b/manifests/cluster/cert-manager.yaml index 4f6e6b7..cd6edc2 100644 --- a/manifests/cluster/cert-manager.yaml +++ b/manifests/cluster/cert-manager.yaml @@ -6,7 +6,7 @@ metadata: spec: project: default sources: - - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + - repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD ref: values - repoURL: https://charts.jetstack.io @@ -33,10 +33,10 @@ metadata: spec: project: default sources: - - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + - repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD ref: values - - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + - repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD path: charts/cert-manager helm: diff --git a/manifests/cluster/external-secrets.yaml b/manifests/cluster/external-secrets.yaml index cda03dc..32ae2ef 100644 --- a/manifests/cluster/external-secrets.yaml +++ b/manifests/cluster/external-secrets.yaml @@ -6,7 +6,7 @@ metadata: spec: project: default sources: - - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + - repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD ref: values - repoURL: https://charts.external-secrets.io @@ -34,7 +34,7 @@ metadata: spec: project: default source: - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD path: charts/external-secrets destination: diff --git a/manifests/cluster/fluent-bit.yaml b/manifests/cluster/fluent-bit.yaml index 705bd0f..e15407d 100644 --- a/manifests/cluster/fluent-bit.yaml +++ b/manifests/cluster/fluent-bit.yaml @@ -6,7 +6,7 @@ metadata: spec: project: default source: - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD path: charts/fluent-bit destination: @@ -27,7 +27,7 @@ metadata: spec: project: default sources: - - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + - repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD ref: values - repoURL: https://fluent.github.io/helm-charts diff --git a/manifests/cluster/ingress-nginx.yaml b/manifests/cluster/ingress-nginx.yaml index 1ba6726..3c2830d 100644 --- a/manifests/cluster/ingress-nginx.yaml +++ b/manifests/cluster/ingress-nginx.yaml @@ -6,7 +6,7 @@ metadata: spec: project: default source: - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD path: charts/ingress-nginx destination: @@ -27,7 +27,7 @@ metadata: spec: project: default sources: - - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + - repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD ref: values - repoURL: https://kubernetes.github.io/ingress-nginx diff --git a/manifests/cluster/tailscale.yaml b/manifests/cluster/tailscale.yaml index df5f4b7..4350f79 100644 --- a/manifests/cluster/tailscale.yaml +++ b/manifests/cluster/tailscale.yaml @@ -6,7 +6,7 @@ metadata: spec: project: default sources: - - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + - repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD ref: values - repoURL: https://pkgs.tailscale.com/helmcharts @@ -15,7 +15,7 @@ spec: helm: valueFiles: - $values/charts/tailscale/values.yaml - - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + - repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD path: charts/tailscale destination: diff --git a/manifests/mcp/forgejo-mcp.yaml b/manifests/mcp/forgejo-mcp.yaml index 34d679c..9bc7bd3 100644 --- a/manifests/mcp/forgejo-mcp.yaml +++ b/manifests/mcp/forgejo-mcp.yaml @@ -6,7 +6,7 @@ metadata: spec: project: default source: - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD path: charts/forgejo-mcp destination: diff --git a/manifests/mcp/mcp-auth-proxy.yaml b/manifests/mcp/mcp-auth-proxy.yaml index 2c7220a..f0c6b80 100644 --- a/manifests/mcp/mcp-auth-proxy.yaml +++ b/manifests/mcp/mcp-auth-proxy.yaml @@ -6,7 +6,7 @@ metadata: spec: project: default source: - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD path: charts/mcp-auth-proxy destination: diff --git a/manifests/services/kan.yaml b/manifests/services/kan.yaml index 26af81d..8879812 100644 --- a/manifests/services/kan.yaml +++ b/manifests/services/kan.yaml @@ -6,7 +6,7 @@ metadata: spec: project: default source: - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD path: charts/kan destination: diff --git a/manifests/services/mediamtx.yaml b/manifests/services/mediamtx.yaml index a14bceb..3651dc4 100644 --- a/manifests/services/mediamtx.yaml +++ b/manifests/services/mediamtx.yaml @@ -6,13 +6,13 @@ metadata: spec: project: default sources: - - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + - repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD path: charts/mediamtx helm: valueFiles: - $values/values.yaml - - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + - repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD ref: values destination: diff --git a/manifests/services/opengist.yaml b/manifests/services/opengist.yaml index df21b51..5d332f0 100644 --- a/manifests/services/opengist.yaml +++ b/manifests/services/opengist.yaml @@ -6,13 +6,13 @@ metadata: spec: project: default sources: - - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + - repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD path: charts/opengist helm: valueFiles: - $values/values.yaml - - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + - repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD ref: values destination: diff --git a/manifests/services/repertory-api.yaml b/manifests/services/repertory-api.yaml index 3b84a86..fe86459 100644 --- a/manifests/services/repertory-api.yaml +++ b/manifests/services/repertory-api.yaml @@ -6,13 +6,13 @@ metadata: spec: project: default sources: - - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + - repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD path: charts/repertory-api helm: valueFiles: - $values/values.yaml - - repoURL: https://forge.keane.sh/ian/dumpnet-argo.git + - repoURL: https://git.keane.sh/ian/dumpnet-argo.git targetRevision: HEAD ref: values destination: diff --git a/values.yaml b/values.yaml index f67866e..742d8d4 100644 --- a/values.yaml +++ b/values.yaml @@ -2,11 +2,13 @@ # Override any of these in terraform.tfvars or by forking the repo. # NOTE: repoURL in apps/apps.yaml and manifests/*.yaml must be updated manually — # ArgoCD Application spec fields cannot be templated via Helm values. +# (registry.host below is the container image registry, a separate +# concern from repoURL / the git hosting itself.) clusterName: dumpnet domain: dumpnet.chat publicIp: "32.195.88.32" -repoURL: https://forge.keane.sh/ian/dumpnet-argo.git +repoURL: https://git.keane.sh/ian/dumpnet-argo.git certEmail: dumpnetcerts@keane.sh awsRegion: us-east-1 registry: