Compare commits

...
Author SHA1 Message Date
whyredfire 0c07d967a4 feat(bootstrap): Add healthcheck before moving forward 2026-08-08 09:11:11 +05:30
whyredfire 7d001e81c2 feat(argocd): Add sync waves 2026-08-03 00:10:51 +05:30
whyredfire 0f3c329066 fix(apps): Add extras prefix to source path 2026-06-30 21:14:04 +05:30
whyredfire 607c6855ea feat(applications): Add stirling-pdf 2026-06-30 21:14:00 +05:30
whyredfire 6aa52f631a feat(applications): Add seaweedfs for object storage 2026-06-30 19:47:45 +05:30
whyredfire 10f08c656b refactor: Restructure the extras 2026-05-31 00:53:30 +05:30
whyredfire 4915d4ef03 feat(apps): Track legislative summarization application 2026-05-18 02:41:34 +05:30
whyredfire d7144e1988 feat(apps): Add CNPG operator 2026-05-18 00:56:11 +05:30
whyredfire 6ff94158a3 feat(apps): Add qbit app and argocd repo secret 2026-05-03 22:09:44 +05:30
whyredfire 32544e6465 feat(apps): Add bitnami sealed secrets operator 2026-05-02 22:21:33 +05:30
whyredfire ab58b46e9d chore(treewide): Sunset whyredfire.tech 2026-05-02 13:38:02 +05:30
whyredfire 335c3ca145 chore(apps): Update repo URL for cert manager and jellyfin service 2026-03-14 11:43:13 +05:30
whyredfire 0b77f43556 chore(bootstrap): Update root app repo URL 2026-03-14 11:39:34 +05:30
whyredfire 2151f077b2 chore(add-ons): Update traefik externalIP 2026-03-13 00:37:07 +05:30
whyredfire 52b2769268 apps(services): Add jellyfin 2026-02-22 16:58:25 +05:30
whyredfire 6806f87f4b apps(services): Enable scriptscribe application 2026-02-22 00:29:20 +05:30
whyredfire 51b412bd55 fix(traefik): Separate listeners for -dev and -tech domains 2026-02-22 00:29:20 +05:30
whyredfire aaeaa8a01f apps(services): Enable betterslcm service 2026-02-22 00:29:17 +05:30
whyredfire bdb8217735 add-ons(cert-manager): Enable GatewayAPI support for cert-manager 2026-02-21 20:45:31 +05:30
whyredfire b14cecb3e4 add-ons: Add cert manager configuration 2026-02-21 12:16:12 +05:30
whyredfire b2a0a2628c add-ons: Install traefik API gateway 2026-02-21 02:03:01 +05:30
whyredfire 0f158d8f8f [REVERTME] bootstrap: Switch argocd remote to local 2026-02-14 00:34:52 +05:30
whyredfire 7abd5065fb bootstrap: Patch argocd server service 2026-01-26 20:38:41 +05:30
whyredfire 826af0ca68 bootstrap: Add .git to the repo to handle redirect errors
{"grpc.code":"Unknown","grpc.component":"server","grpc.error":"failed to list refs: unexpected client error: unexpected requesting \"https://gitlab.com/whyredfire/gitops/info/refs?service=git-upload-pack\" status code: 301","grpc.method":"GenerateManifest","grpc.method_type":"unary","grpc.request.deadline":"2026-01-26T14:31:42Z","grpc.service":"repository.RepoServerService","grpc.start_time":"2026-01-26T14:30:42Z","grpc.time_ms":"883.443","level":"error","msg":"finished call","peer.address":"10.42.0.30:49920","protocol":"grpc","time":"2026-01-26T14:30:43Z"}
2026-01-26 20:02:57 +05:30
whyredfire f20bf3ee29 bootstrap: Create the namespace manually 2026-01-26 19:56:00 +05:30
whyredfire 70e2794599 treewide: Cleanup for new cluster 2026-01-25 18:37:45 +05:30
whyredfire 4b82385d7b refactor: Restructure the repo 2026-01-12 15:21:04 +05:30
whyredfire 2e95982073 apps: Remove sample nginx app 2026-01-03 22:37:34 +05:30
whyredfire 6b6fc2e9b8 apps: Track betterslcm project 2026-01-03 09:01:27 +05:30
whyredfire f9023a0f94 infra/cert-manager: Import cert-manager manifest v1.19.2
Failed to load target state: failed to generate manifest for source 1 of 1:
rpc error: code = Unknown desc = Manifest generation error (cached): `kustomize
build <path to cached source>/infra/cert-manager` failed exit status 1: Error:
accumulating resources: accumulation err='accumulating resources from
'https://github.com/cert-manager/cert-manager/releases/download/v1.19.2/cert-manager.yaml'
: Get "https://github.com/cert-manager/cert-manager/releases/download/v1.19.2/cert-manager.yaml"
: dial tcp: lookup github.com on 10.43.0.10:53: server misbehaving': failed to run
'/usr/bin/git fetch --depth=1 https://github.com/cert-manager/cert-manager HEAD':
fatal: unable to access 'https://github.com/cert-manager/cert-manager/': Could
not resolve host: github.com : exit status 128
2025-12-29 03:28:29 +05:30
whyredfire efdf4a6801 apps/telegram-autoregexbot: Point to upstream repo 2025-12-29 02:29:23 +05:30
36 changed files with 554 additions and 112 deletions
+35
View File
@@ -0,0 +1,35 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: cert-manager
namespace: argocd
annotations:
argocd.argoproj.io/sync-wave: "1"
spec:
project: default
sources:
- repoURL: https://charts.jetstack.io
chart: cert-manager
targetRevision: v1.19.3
helm:
values: |
crds:
enabled: true
config:
apiVersion: controller.config.cert-manager.io/v1alpha1
kind: ControllerConfiguration
featureGates:
ExperimentalGatewayAPISupport: true
- repoURL: https://gitea.whyredfire.dev/whyredfire/gitops.git
targetRevision: main
path: extras/add-ons/cert-manager
destination:
server: https://kubernetes.default.svc
namespace: cert-manager
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- ServerSideApply=true
+40
View File
@@ -0,0 +1,40 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: cnpg
namespace: argocd
annotations:
argocd.argoproj.io/sync-wave: "0"
spec:
project: default
sources:
- repoURL: https://cloudnative-pg.github.io/charts
chart: cloudnative-pg
targetRevision: 0.28.2
helm:
values: |
replicaCount: 1
config:
clusterWide: true
- repoURL: https://cloudnative-pg.github.io/charts
chart: cluster
targetRevision: 0.6.1
helm:
values: |
cluster:
instances: 1
enablePDB: false
storage:
size: 500Mi
backups:
enabled: false
destination:
server: https://kubernetes.default.svc
namespace: default
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- ServerSideApply=true
+23
View File
@@ -0,0 +1,23 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: sealed-secrets
namespace: argocd
annotations:
argocd.argoproj.io/sync-wave: "0"
spec:
project: default
source:
repoURL: https://bitnami-labs.github.io/sealed-secrets
chart: sealed-secrets
targetRevision: 2.18.5
destination:
server: https://kubernetes.default.svc
namespace: sealed-secrets
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- ServerSideApply=true
+53
View File
@@ -0,0 +1,53 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: traefik
namespace: argocd
annotations:
argocd.argoproj.io/sync-wave: "2"
spec:
project: default
sources:
- repoURL: https://traefik.github.io/charts
chart: traefik
targetRevision: v39.0.2
helm:
values: |
providers:
kubernetesGateway:
enabled: true
kubernetesIngress:
enabled: false
service:
type: ClusterIP
externalIPs:
- 192.168.2.5
gateway:
listeners:
web:
namespacePolicy:
from: All
websecure:
port: 8443
protocol: HTTPS
mode: Terminate
hostname: "*.whyredfire.dev"
namespacePolicy:
from: All
certificateRefs:
- kind: Secret
name: wildcard-whyredfire-dev
group: ""
- repoURL: https://gitea.whyredfire.dev/whyredfire/gitops.git
targetRevision: main
path: extras/add-ons/traefik
destination:
server: https://kubernetes.default.svc
namespace: traefik
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- ServerSideApply=true
+18
View File
@@ -0,0 +1,18 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
# add-ons
- add-ons/traefik.yaml
- add-ons/cert-manager.yaml
- add-ons/sealed-secrets.yaml
- add-ons/cnpg.yaml
# services
- services/app-argocd-repos.yaml
- services/app-autoregexbot.yaml
- services/app-betterslcm.yaml
- services/app-jellyfin.yaml
- services/app-legislative-summarization.yaml
- services/app-scriptscribe.yaml
- services/app-seaweedfs.yaml
- services/app-qbit.yaml
- services/app-stirling-pdf.yaml
@@ -1,17 +1,22 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: sealed-secrets
name: argocd-repos
namespace: argocd
annotations:
argocd.argoproj.io/sync-wave: "1"
spec:
project: default
source:
repoURL: https://gitea.whyredfire.tech/whyredfire/gitops
repoURL: https://gitea.whyredfire.dev/whyredfire/gitops.git
targetRevision: main
path: infra/sealed-secrets
path: extras/add-ons/argocd-repos
destination:
server: https://kubernetes.default.svc
namespace: argocd
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
@@ -2,16 +2,18 @@ apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: telegram-autoregexbot
annotations:
argocd.argoproj.io/sync-wave: "3"
namespace: argocd
spec:
project: default
source:
repoURL: https://gitea.whyredfire.tech/whyredfire/telegram-autoregexbot
repoURL: https://github.com/santarl/telegram-autoregexbot
targetRevision: main
path: k8s
destination:
server: https://kubernetes.default.svc
namespace: telegram
namespace: telegram-bot
syncPolicy:
automated:
prune: true
+22
View File
@@ -0,0 +1,22 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: betterslcm
annotations:
argocd.argoproj.io/sync-wave: "3"
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/DK10WS/SLCM_APP.git
targetRevision: web
path: k8s
destination:
server: https://kubernetes.default.svc
namespace: betterslcm
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
+40
View File
@@ -0,0 +1,40 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: jellyfin
annotations:
argocd.argoproj.io/sync-wave: "3"
namespace: argocd
spec:
project: default
sources:
- repoURL: https://jellyfin.github.io/jellyfin-helm
chart: jellyfin
targetRevision: "2.7.0"
helm:
values: |
service:
type: ClusterIP
port: 8096
ingress:
enabled: false
persistence:
config:
enabled: true
size: 2Gi
media:
enabled: true
type: hostPath
hostPath: /srv/media
- repoURL: https://gitea.whyredfire.dev/whyredfire/gitops.git
targetRevision: main
path: extras/services/jellyfin
destination:
server: https://kubernetes.default.svc
namespace: jellyfin
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
@@ -0,0 +1,22 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: legislative-summarization
annotations:
argocd.argoproj.io/sync-wave: "3"
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/whyredfire/legislative-summarization
targetRevision: main
path: k8s
destination:
server: https://kubernetes.default.svc
namespace: legislative-summarization
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
@@ -1,17 +1,19 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: nginx
name: qbit
annotations:
argocd.argoproj.io/sync-wave: "3"
namespace: argocd
spec:
project: default
source:
repoURL: https://gitea.whyredfire.tech/whyredfire/gitops
repoURL: https://gitea.whyredfire.dev/whyredfire/gitops-private.git
targetRevision: main
path: manifests/nginx
path: qbit
destination:
server: https://kubernetes.default.svc
namespace: nginx
namespace: qbit
syncPolicy:
automated:
prune: true
@@ -2,6 +2,8 @@ apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: scriptscribe
annotations:
argocd.argoproj.io/sync-wave: "3"
namespace: argocd
spec:
project: default
+36
View File
@@ -0,0 +1,36 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: seaweedfs
annotations:
argocd.argoproj.io/sync-wave: "3"
namespace: argocd
spec:
project: default
sources:
- repoURL: https://seaweedfs.github.io/seaweedfs/helm
chart: seaweedfs
targetRevision: 4.33.0
helm:
values: |
allInOne:
enabled: true
master:
enabled: false
volume:
enabled: false
filer:
enabled: false
- repoURL: https://gitea.whyredfire.dev/whyredfire/gitops.git
targetRevision: main
path: extras/services/seaweedfs
destination:
server: https://kubernetes.default.svc
namespace: seaweedfs
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- ServerSideApply=true
@@ -0,0 +1,40 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: stirling-pdf
annotations:
argocd.argoproj.io/sync-wave: "3"
namespace: argocd
spec:
project: default
sources:
- repoURL: https://docs.stirlingpdf.com/Stirling-PDF-chart
chart: stirling-pdf-chart
targetRevision: "3.1.0"
helm:
values: |
fullnameOverride: stirling-pdf
persistence:
enabled: true
size: 512Mi
deployment:
extraVolumeMounts:
- name: storage-volume
mountPath: /configs
probes:
liveness:
initialDelaySeconds: 90
readiness:
initialDelaySeconds: 60
- repoURL: https://gitea.whyredfire.dev/whyredfire/gitops.git
targetRevision: main
path: extras/services/stirling-pdf
destination:
server: https://kubernetes.default.svc
namespace: stirling-pdf
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
-17
View File
@@ -1,17 +0,0 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: cert-manager
namespace: argocd
spec:
project: default
source:
repoURL: https://gitea.whyredfire.tech/whyredfire/gitops
targetRevision: main
path: infra/cert-manager
destination:
server: https://kubernetes.default.svc
syncPolicy:
automated:
prune: true
selfHeal: true
-9
View File
@@ -1,9 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- nginx-app.yaml
- scriptscribe.yaml
- sealed-secrets.yaml
- cert-manager.yaml
- telegram-autoregexbot.yaml
@@ -0,0 +1,18 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-cm
data:
resource.customizations.health.argoproj.io_Application: |
hs = {}
hs.status = "Progressing"
hs.message = ""
if obj.status ~= nil then
if obj.status.health ~= nil then
hs.status = obj.status.health.status
if obj.status.health.message ~= nil then
hs.message = obj.status.health.message
end
end
end
return hs
@@ -1,7 +1,5 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- namespace.yaml
- root-app.yaml
- ssh-known-hosts-cm.yaml
@@ -6,9 +6,9 @@ metadata:
spec:
project: default
source:
repoURL: https://gitea.whyredfire.tech/whyredfire/gitops
repoURL: https://gitea.whyredfire.dev/whyredfire/gitops.git
targetRevision: main
path: apps
path: applications
destination:
server: https://kubernetes.default.svc
namespace: argocd
@@ -0,0 +1,12 @@
apiVersion: v1
kind: Service
metadata:
name: argocd-server
spec:
type: NodePort
ports:
- name: https
port: 443
protocol: TCP
targetPort: 8080
nodePort: 30443
-16
View File
@@ -1,16 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-ssh-known-hosts-c
namespace: argocd
data:
known_hosts: |
# gitea-ssh.whyredfire.tech:22 SSH-2.0-OpenSSH_10.0
gitea-ssh.whyredfire.tech ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIANyEkbFQN5Yl8Vb6EAwzh2EveEj3yKXirFfXyuFqIV+
# gitea-ssh.whyredfire.tech:22 SSH-2.0-OpenSSH_10.0
gitea-ssh.whyredfire.tech ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDCfixWweiVHuHDOOSzzqqsVjMMDXcl+dawNjezD7FOLraHapimb2j+omJ4evSWCNYG5usjmokgUntQ5wNTrsrWr7XlKOuBNjelleXBsjDba09IzfSRYA+pnbrcpgVjgQ647KJeULbD653oDL/cSEFV6r1NNWWlYVK139k0gsMw0JToMDp0LzNsTJytSFLvVg7st7fW/qoBI/RNq9qRC6okJJhldfpuraRVia1GhUiB79g4t9ylCvDlLXe+V3XdeMEEz8VY1bxVR5FHsRSuJqCPP1TbD9XnWWFZOBl6xjbcr2kDrnaAVocQJDkZLoKAZIR3lRaEjdFtz9v+Z4oAdIEVPNBWvE15bZdFHuCsB7eFpVuVzy7rDos9pGqXdK4h97oxU/edoRjMTDoDPHyl36154yiGAn4J55j1A8cWp97eyvTpRYYwr1Zab9M0AohJC8v69eprk4TZgL1TWGvchMDTHkd/RE2tEV1pv+cLe8bayV+BoE1Nx1plqIHTkSIu9e8=
# gitea-ssh.whyredfire.tech:22 SSH-2.0-OpenSSH_10.0
gitea-ssh.whyredfire.tech ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDLoFqTU09bU6ONUr9XvJT8G3zfwOviHw+ZM1EwPWVL5HEotYssWEjyteZGws5I0mXIuNJljL0BY1QSPoJaeAU8=
# gitea-ssh.whyredfire.tech:22 SSH-2.0-OpenSSH_10.0
# gitea-ssh.whyredfire.tech:22 SSH-2.0-OpenSSH_10.0
+11 -4
View File
@@ -1,8 +1,15 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: argocd
resources:
- https://raw.githubusercontent.com/argoproj/argo-cd/v3.2.0/manifests/install.yaml
- argocd
- https://raw.githubusercontent.com/argoproj/argo-cd/v3.2.6/manifests/install.yaml
- argocd-root-app
patches:
- target:
kind: Service
name: argocd-server
path: argocd-server-nodeport-patch.yaml
- target:
kind: ConfigMap
name: argocd-cm
path: argocd-cm-application-health-patch.yaml
@@ -0,0 +1,17 @@
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
name: repo-gitops-private
namespace: argocd
spec:
encryptedData:
password: AgCYFWUZmqWTYbutOvQr0GJ87zvVwW/GYanXC4Qdlqo1nkYC0u/ve88UonB0UklJPfMq59/jefbrl80fg4JUMLJMBnNUiIfUIJ2gN07n5P1UqQGTFwo8iHFD4XwKlCfSD75wQXBhccWO1zS1lVZEIzbUdom7rI45bG2Q+u5NQBC/bs3NxrrzYqrHFsbE2jEeu0hG33JOoikvLOwih96Xxgadrvbdw/WpY2bbqM/BSA35u8fzeDF4ZZ98x7LPzflP04DxKJZLh5U3H1//RjWaKeNkDwp/dtNm63NPJrh7+rD+EOHu4undBwNHIW4vrv4bRQeP4xBERNFquiwwmQsi2Wwd4kpD+kgbGhezYMDgk8FOBwS04DJJJpvYdJdGTZoCwML1C+iwMoKhwk7WFvg4vkW3DBpRh+w9Otdq4odsklqgwp1o8OXL1hcd/iQqp8TiuwUFlmJhTs841xvqRMuCBQ0SnAwQ/u9kEsY6C6r/EvdaOciRoEWa0pMk3zvkaCrSkoAElYtXh30MhGfd1rbWT09Xvh/ACRjarBvLHUa7fPSc9Po9t+6eRuFR1cqT2jwUtHMuAqFA4XDC+oHkLsz8WD8qm4K9dwfOXME1rT2OoByaSdlSDsV6uKWRlMxxrzBGzihUBp1TSI8X+ux90hp5vQ30BKqGCC0Y3aRHprndDcHvdP4ASJ6++uu3ZkD6cY/he87w21ETl9+zxo8=
type: AgBWyIT44g9RaY/2dyznsXqQ3lVS0q/zJ5MeQhqkREsCn37U8ZxUrVqrmYq+RJU+cPVDWSl2tnmnfjvzV6+SEroVPAaTduRSFYxP6X4xsFuarJ21GSOAvt4Zc1ODZXYxCKfEAB+K7djc+g4+WOp/RihxKue9sevsM2krxnBXouNn7gXOog2Vd7mHbenuuGNVzV6ROJU7tw3uzZ/KETqr+5Jr1bKf64URkcN1njxb9lJHmK+VJbWPLcIbaGCfel07QqX0+EQXjIMwvpHoiWF25dJfPtbADlF/UIjWRXRRh5pCoppXpte39S4nrkkyOKCe2l7IctYF6+pvg5xNOmPeYnqIxpgZwWlWg2TcI5pn4aTxyXA+COJs5VQYgGDxPyNmm2lqh77hzHFceTxlFjtS5u5UQBzjagClXg2lYi2YRcnMTLUHDJyisT9Gr7bpgRK1BU19yxMg5f+vhzL5GmPMtOE6r9dZXwbi5660Okrn7x1MEgHb7poiXbG920yEC3mqVB6+1HLzoY5603b44VafDCTh2AtslSEW8n4Dt1gBm8DAOcDvq1e3NMn8Aq7cyGF5L7x0WwXLjgjr26nf6XiyZ9NAOD2upyJDCZvvVqcFypqOFsFOyhZXU86vuRW35tNqq6N3ppL2OFmm84ies04InHGTJHS3ps8KCyXWow1PgGhn/spB73JSjW4nsUztQPThOQ2c2JY=
url: AgDV+GO2ccs/uj87TNXbhSA18Y8amZiqmasZcijd/Zpjv8LPw94f9PORC1v9DhautblXF+Y39MnBjQm3pYLEbIU7FBDpx/Kkk34+F/tTfJqmQOcvGjEZLs73I7kvvy9Uy2Wme/uJt4PpR3UyJEAwJKNudC2NAJz2gfS7lsk+6AUpc+Z6MBoETdUQuaYlk/cxliWnPbJx8EYOS0TEaLezZ27w1OeN2kYEtnZ+qRd/+6g68MpM6UeoL53kOwNOcXN67+IdPE17zD05I0SPIKJy760Ukw/S1sphUpfQgOueHpmgpQanzJWZDCyudLpgnWS/cVWmZY0tDcgmiWCVJwYVFML8Qse3oXWRixIIunhMSS8jFk8Sa/v0agY8SOeIEWIx7n6G6jGkBLK5QZ8Y689UqsfsuKy3aUxno3gqzz4WibjdwAJfNsWCb3P6ZH2AfeTw7gz9HD/AiMRGuSTlzZpGS4acyltwbkKKz1WwLZF/qXtL0hi7QrYIPK82hKF7s458s0KQG2lE+bWOUG0WGjMWys6FwEbe5p3OTT2ea45+OyL0BlFQFkXHeIlxpq86Iz2KVxy4age5SghpSBn3+S3NM4voo9QDIeLXF++EOLCQXRXHgp4vOnb/nAVkbfQ6cvs2HBVg4lSYaNlBlznkPORiUNvXuu2JKHeKzXEJWhwIvmXrnac629MEaCCONEiBaTAy3B08WjSzvWUkxXYuBrRvrcm/JOP8K2yNgtJTRGGbH9SbMTJ8RoqgMC+GjokIFvlButxh0MeXlQLk0huV
username: AgBB0XO+j5xoMAgvbIKEf0/ghe9rPwoTnzZvm4lbakuCc4BEKl1Zm5bkNQilEBpxl/TsfnxdhhGnNvF9DXbIJjoEfEU8wzX5LpBMXt5qWC1Oquul4qvEHw6kMCu3oJ7hQ54yBVIhM5W9n1c6UWhJ6ttwZJ/ymqGLFWh1r/3KhoiInfU2EkPJ7bte085rUuyT524mwH9pfGEwte6VjuHPXBQt22i4fP+BBT3pV443PISshGfQC28bpt8vMi83kE/ICkwg21AQUImvfcHXojUJE5dks4mbrA49532R4uDVseVxCrW5fCtevQmgHbkyOke3FQG1AspXx7gdLldKVeW7QBgDP6O9DuEZgNzrxY6T4jf2dNUi1y5W00A4hJVMvIyBy4wENGIj1JJto6D1pRbYPzugKzUhb529UHS6Oxy3H2GqoE5L+mTbrQ2Nm8OhLeaSXUqQtJreZg9GYDZ3sjTe5tlqmcRisM43D5Aw/vV9wu40pRB0OTKM6nIHw1emg/Bq7ZAlZ9S8OpJYitO4SU9J1sOjnI1K3O1QLWB3buGoMnH/1k+Tt7rvYajWyqBM4ODV9O3yN1G9zEEXxzK7sz84JPGAevNJo7fiu8YdaMXhxVywhN43q6PpPQqTdqwQ0muJ5FqJbAzmOiDSQtF18OfpORrKJXVOwD/iFUS4V/6WKqn9HDAc1Dff1CgqJ8IOqxO43Jj4gpvkH2Owzdyf
template:
metadata:
labels:
argocd.argoproj.io/secret-type: repository
name: repo-gitops-private
namespace: argocd
@@ -2,6 +2,8 @@ apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
annotations:
argocd.argoproj.io/sync-wave: "1"
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
@@ -9,6 +11,8 @@ spec:
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
class: traefik
- dns01:
cloudflare:
apiTokenSecretRef:
name: cloudflare-api-token
key: api-token
@@ -0,0 +1,14 @@
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: wildcard-whyredfire-dev
namespace: traefik
spec:
secretName: wildcard-whyredfire-dev
privateKey:
rotationPolicy: Always
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
dnsNames:
- "*.whyredfire.dev"
@@ -0,0 +1,23 @@
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: jellyfin-local
namespace: jellyfin
annotations:
argocd.argoproj.io/sync-wave: "1"
spec:
parentRefs:
- name: traefik-gateway
namespace: traefik
kind: Gateway
sectionName: websecure
hostnames:
- jellyfin-local.whyredfire.dev
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: jellyfin
port: 8096
+23
View File
@@ -0,0 +1,23 @@
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: jellyfin
namespace: jellyfin
annotations:
argocd.argoproj.io/sync-wave: "1"
spec:
parentRefs:
- name: traefik-gateway
namespace: traefik
kind: Gateway
sectionName: websecure
hostnames:
- jellyfin.whyredfire.dev
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: jellyfin
port: 8096
@@ -0,0 +1,27 @@
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: seaweedfs-filer
namespace: seaweedfs
annotations:
argocd.argoproj.io/sync-wave: "1"
spec:
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: traefik-gateway
namespace: traefik
sectionName: websecure
hostnames:
- seaweedfs.whyredfire.dev
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- group: ""
kind: Service
name: seaweedfs-all-in-one
port: 8888
weight: 1
@@ -0,0 +1,27 @@
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: seaweedfs-master
namespace: seaweedfs
annotations:
argocd.argoproj.io/sync-wave: "1"
spec:
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: traefik-gateway
namespace: traefik
sectionName: websecure
hostnames:
- seaweedfs-master.whyredfire.dev
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- group: ""
kind: Service
name: seaweedfs-all-in-one
port: 9333
weight: 1
@@ -0,0 +1,24 @@
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: stirling-pdf
namespace: stirling-pdf
annotations:
argocd.argoproj.io/sync-wave: "1"
spec:
parentRefs:
- name: traefik-gateway
namespace: traefik
kind: Gateway
sectionName: websecure
hostnames:
- pdf.whyredfire.dev
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: stirling-pdf
port: 8080
-6
View File
@@ -1,6 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- https://github.com/cert-manager/cert-manager/releases/download/v1.19.2/cert-manager.yaml
- letsencrypt-issuer.yaml
-6
View File
@@ -1,6 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.33.1/controller.yaml
-21
View File
@@ -1,21 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.29-alpine-slim
ports:
- containerPort: 80
-6
View File
@@ -1,6 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml
-11
View File
@@ -1,11 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
selector:
app: nginx
ports:
- port: 80
targetPort: 80
type: ClusterIP