summaryrefslogtreecommitdiff
path: root/playbooks.d/k3s-master/manifests
diff options
context:
space:
mode:
authorPatrick Spek <p.spek@tyil.nl>2022-10-06 14:06:23 +0200
committerPatrick Spek <p.spek@tyil.nl>2022-10-06 14:12:18 +0200
commit1116a2ff4adb52cb8a9a7017095e29cc6caf0713 (patch)
tree1a8d48bca86add3ca042f7364bb5deffdd6fe474 /playbooks.d/k3s-master/manifests
parent6078b12b26a039410c67b6d541aeb69f81eaecf4 (diff)
Place manifests directly into playbook dir
Diffstat (limited to 'playbooks.d/k3s-master/manifests')
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/kustomization.yaml9
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/media/dirlist/deployment.yaml77
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/media/dirlist/ingress.yaml25
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/media/dirlist/kustomization.yaml8
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/media/dirlist/service.yaml22
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/media/kustomization.yaml6
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/personal-services/kustomization.yaml6
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/personal-services/nextcloud/kustomization.yaml8
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/personal-services/nextcloud/release.yaml47
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/personal-services/nextcloud/secret.yaml17
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/personal-services/nextcloud/volume.yaml14
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/invidious/kustomization.yaml7
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/invidious/release.yaml41
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/invidious/values.yaml17
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/kustomization.yaml10
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/nitter/kustomization.yaml6
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/nitter/release.yaml33
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/omgur/deployment.yaml31
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/omgur/ingress.yaml25
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/omgur/kustomization.yaml8
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/omgur/service.yaml22
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/searx/deployment.yaml54
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/searx/ingress.yaml25
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/searx/kustomization.yaml8
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/searx/service.yaml22
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/teddit/deployment.yaml41
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/teddit/ingress.yaml25
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/teddit/kustomization.yaml8
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/teddit/service.yaml22
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/bazarr/deployment.yaml36
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/bazarr/ingress.yaml20
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/bazarr/kustomization.yaml8
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/bazarr/service.yaml17
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/configmap.yaml12
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/jellyseerr/deployment.yaml42
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/jellyseerr/ingress.yaml25
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/jellyseerr/kustomization.yaml8
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/jellyseerr/service.yaml22
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/kustomization.yaml26
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/lidarr/deployment.yaml63
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/lidarr/ingress.yaml35
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/lidarr/kustomization.yaml8
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/lidarr/service.yaml22
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/prowlarr/deployment.yaml36
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/prowlarr/ingress.yaml35
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/prowlarr/kustomization.yaml8
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/prowlarr/service.yaml17
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/radarr/deployment.yaml75
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/radarr/ingress.yaml35
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/radarr/kustomization.yaml8
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/radarr/service.yaml22
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/readarr/deployment.yaml69
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/readarr/ingress.yaml35
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/readarr/kustomization.yaml8
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/readarr/service.yaml22
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/sonarr/deployment.yaml63
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/sonarr/ingress.yaml35
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/sonarr/kustomization.yaml8
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/sonarr/service.yaml22
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-lidarr/deployment.yaml74
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-lidarr/kustomization.yaml7
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-lidarr/service.yaml35
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-radarr/deployment.yaml74
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-radarr/kustomization.yaml7
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-radarr/service.yaml35
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-sonarr/deployment.yaml74
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-sonarr/kustomization.yaml7
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-sonarr/service.yaml35
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/unpackerr/deployment.yaml40
-rw-r--r--playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/unpackerr/kustomization.yaml6
-rw-r--r--playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/kustomization.yaml6
-rw-r--r--playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/public-services/kustomization.yaml6
-rw-r--r--playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/public-services/searxng/deployment.yaml31
-rw-r--r--playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/public-services/searxng/ingress.yaml26
-rw-r--r--playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/public-services/searxng/kustomization.yaml8
-rw-r--r--playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/public-services/searxng/service.yaml17
-rw-r--r--playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/applications.yaml14
-rw-r--r--playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/flux-system/gotk-sync.yaml27
-rw-r--r--playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/flux-system/kustomization.yaml5
-rw-r--r--playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/infrastructure-configuration.yaml17
-rw-r--r--playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/infrastructure-releases.yaml17
-rw-r--r--playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/infrastructure-sources.yaml17
-rw-r--r--playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/namespaces.yaml14
-rw-r--r--playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/applications.yaml14
-rw-r--r--playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/flux-system/gotk-components.yaml5583
-rw-r--r--playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/flux-system/gotk-sync.yaml27
-rw-r--r--playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/flux-system/kustomization.yaml5
-rw-r--r--playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/infrastructure-configuration.yaml17
-rw-r--r--playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/infrastructure-releases.yaml17
-rw-r--r--playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/infrastructure-sources.yaml17
-rw-r--r--playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/namespaces.yaml14
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/configuration/cluster-issuers/kustomization.yaml7
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/configuration/cluster-issuers/letsencrypt-production.yaml16
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/configuration/cluster-issuers/letsencrypt-staging.yaml17
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/configuration/kustomization.yaml6
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/releases/cert-manager/kustomization.yaml6
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/releases/cert-manager/release.yaml20
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/releases/external-dns/kustomization.yaml7
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/releases/external-dns/release.yaml24
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/releases/external-dns/values.yaml17
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/releases/ingress-nginx/kustomization.yaml6
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/releases/ingress-nginx/release.yaml26
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/releases/kustomization.yaml9
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/releases/sealed-secrets/kustomization.yaml6
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/releases/sealed-secrets/release.yaml19
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/releases/seaweedfs-csi-driver/kustomization.yaml6
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/releases/seaweedfs-csi-driver/release.yaml22
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/sources/bitnami.yaml10
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/sources/ingress-nginx.yaml10
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/sources/jetstack.yaml10
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/sources/kustomization.yaml12
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/sources/nextcloud.yaml10
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/sources/seaweedfs.yaml12
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/sources/tyil-invidious.yaml12
-rw-r--r--playbooks.d/k3s-master/manifests/infrastructure/sources/tyil-nitter.yaml12
-rw-r--r--playbooks.d/k3s-master/manifests/namespaces/base-system.yaml6
-rw-r--r--playbooks.d/k3s-master/manifests/namespaces/kustomization.yaml10
-rw-r--r--playbooks.d/k3s-master/manifests/namespaces/media.yaml6
-rw-r--r--playbooks.d/k3s-master/manifests/namespaces/personal-services.yaml6
-rw-r--r--playbooks.d/k3s-master/manifests/namespaces/public-services.yaml6
-rw-r--r--playbooks.d/k3s-master/manifests/namespaces/servarr.yaml6
121 files changed, 8121 insertions, 0 deletions
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/kustomization.yaml
new file mode 100644
index 0000000..c5b9583
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/kustomization.yaml
@@ -0,0 +1,9 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- media
+- personal-services
+- public-services
+- servarr
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/media/dirlist/deployment.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/media/dirlist/deployment.yaml
new file mode 100644
index 0000000..9e5acd9
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/media/dirlist/deployment.yaml
@@ -0,0 +1,77 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: dirlist
+ namespace: media
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: dirlist
+ app.kubernetes.io/part-of: media
+ template:
+ metadata:
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: dirlist
+ app.kubernetes.io/part-of: media
+ spec:
+ containers:
+ - name: miniserve
+ image: docker.io/svenstaro/miniserve:latest
+ args:
+ - "--enable-tar-gz"
+ - "--qrcode"
+ - "--enable-tar"
+ - "/var/www"
+ ports:
+ - containerPort: 8080
+ volumeMounts:
+ - name: anime-movies
+ mountPath: /var/www/anime-movies
+ readOnly: true
+ - name: anime-series
+ mountPath: /var/www/anime-series
+ readOnly: true
+ - name: books
+ mountPath: /var/www/books
+ readOnly: true
+ - name: movies
+ mountPath: /var/www/movies
+ readOnly: true
+ - name: music
+ mountPath: /var/www/music
+ readOnly: true
+ - name: series
+ mountPath: /var/www/series
+ readOnly: true
+ volumes:
+ - name: anime-movies
+ hostPath:
+ type: Directory
+ path: /mnt/media/anime-movies/exported
+ - name: anime-series
+ hostPath:
+ type: Directory
+ path: /mnt/media/anime-series/exported
+ - name: books
+ hostPath:
+ type: Directory
+ path: /mnt/media/books/exported
+ - name: movies
+ hostPath:
+ type: Directory
+ path: /mnt/media/movies/exported
+ - name: music
+ hostPath:
+ type: Directory
+ path: /mnt/media/music/exported
+ - name: series
+ hostPath:
+ type: Directory
+ path: /mnt/media/series/exported
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/media/dirlist/ingress.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/media/dirlist/ingress.yaml
new file mode 100644
index 0000000..4a87af7
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/media/dirlist/ingress.yaml
@@ -0,0 +1,25 @@
+---
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: dirlist
+ namespace: media
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: dirlist
+ app.kubernetes.io/part-of: media
+spec:
+ ingressClassName: "nginx"
+ rules:
+ - host: media.tyil.nl
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: dirlist
+ port:
+ number: 80
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/media/dirlist/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/media/dirlist/kustomization.yaml
new file mode 100644
index 0000000..5ee3790
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/media/dirlist/kustomization.yaml
@@ -0,0 +1,8 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- deployment.yaml
+- ingress.yaml
+- service.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/media/dirlist/service.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/media/dirlist/service.yaml
new file mode 100644
index 0000000..14e9c61
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/media/dirlist/service.yaml
@@ -0,0 +1,22 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: dirlist
+ namespace: media
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: dirlist
+ app.kubernetes.io/part-of: media
+spec:
+ selector:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: dirlist
+ app.kubernetes.io/part-of: media
+ ports:
+ - protocol: TCP
+ port: 80
+ targetPort: 8080
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/media/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/media/kustomization.yaml
new file mode 100644
index 0000000..8059d7b
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/media/kustomization.yaml
@@ -0,0 +1,6 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- dirlist
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/personal-services/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/personal-services/kustomization.yaml
new file mode 100644
index 0000000..5674eec
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/personal-services/kustomization.yaml
@@ -0,0 +1,6 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- nextcloud
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/personal-services/nextcloud/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/personal-services/nextcloud/kustomization.yaml
new file mode 100644
index 0000000..9708886
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/personal-services/nextcloud/kustomization.yaml
@@ -0,0 +1,8 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- release.yaml
+- secret.yaml
+- volume.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/personal-services/nextcloud/release.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/personal-services/nextcloud/release.yaml
new file mode 100644
index 0000000..c4cff02
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/personal-services/nextcloud/release.yaml
@@ -0,0 +1,47 @@
+---
+apiVersion: helm.toolkit.fluxcd.io/v2beta1
+kind: HelmRelease
+metadata:
+ name: nextcloud
+ namespace: personal-services
+spec:
+ interval: 5m
+ chart:
+ spec:
+ version: 3.1.2
+ sourceRef:
+ kind: HelmRepository
+ name: nextcloud
+ namespace: flux-system
+ interval: 1m
+ valuesFrom:
+ - kind: Secret
+ name: nextcloud-values
+ values:
+ ingress:
+ enabled: true
+ nextcloud:
+ host: cloud.tyil.nl
+ mail:
+ enabled: true
+ fromAddress: cloud
+ domain: tyil.nl
+ smtp:
+ host: tyil.email
+ secure: ssl
+ port: 456
+ authtype: LOGIN
+ externalDatabase:
+ enabled: true
+ type: postgresql
+ host: 10.57.100.7
+ database: nextcloud
+ cronjob:
+ enabled: true
+ metrics:
+ enabled: true
+ persistence:
+ nextcloudData:
+ enabled: true
+ existingClaim: nextcloud-data
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/personal-services/nextcloud/secret.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/personal-services/nextcloud/secret.yaml
new file mode 100644
index 0000000..c2f4953
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/personal-services/nextcloud/secret.yaml
@@ -0,0 +1,17 @@
+apiVersion: bitnami.com/v1alpha1
+kind: SealedSecret
+metadata:
+ creationTimestamp: null
+ name: nextcloud-values
+ namespace: personal-services
+spec:
+ encryptedData:
+ values.yaml: AgCdGVEMcUN0W5n2SRTsptx6vvPjf1kf2NBz0MMg4KAYLWikWJRfLqLHyy8axwuMWfMf+OyIllXVkdu3QisM51Z6Y4r2pBW+hpfMIk0Zo0l/0XhipOv3erVhrKBAOR2qPsp/bHBGIe76UNG0QYzGjrLjVDfG9Xk42tNQ+bMIn0uSvXF3Q0mNeL6GZehTijS7y/VG3kXd8HccoMTAcsPKXy442CrFwtv2i9FToJ6Rpz7vLu510/8odM1SARnA4mGRUm3dm1e9P/uUvX/MEML3pEkRgzBGnQEtJppDQ92zt9HOAJmsF96vy5KCtF0mbU7xDzoRsoVmHljLMrChQJTyis7d4meA364s61BmG2VMBSEFargqPeWu95/Ts6GM2fe4vyt57x+lW8vGq51pDnSIUl9aF0wi4inEmvYybYf9njCLjqMCG/hRdqBtnUJWlXUxzDfN9iQU5k+49DYWJf9x47ShOOQjO4p6idBuBPe62Ct33fYVEvxTF/yN3a3nB0ntndNzs2wcl+xCJ5iNCAjtZ3cTEPBGa45b5PYffJJcPCSpI+xx7Lxule+qVR1VUn8Q0ieRQ/PjwFA68DHEqDqKd/RvzKAEvvwYzd1ONd5pwGYn5XaczrQcR4wjRZRrcM2Rsr+hcdur+zPNhflrcvRACipNk3Jye2kqwZGgltq7/ftGyPBP+MH68MjWM7GtQWnzhyEjmHNYBQB3DFwPRE3jdN9MlfpXgc/MCUc5tKLfuqo9Skiajefx1pC6U7bS0vPPSm8vWBf+wekgdI3zW0hWdN0DDuatuGYrcbZYmezebz8zr/Pa6IOtJ73pzdK9K/obUt0Vkuy4/uLsC7WqyRwYRHT6ZU4rggeae8RNyMmhuUjZOFezwNL71AZrilh/I05xF8jvdRqLZXlRmZFDBj9/7qm30cHBU436FTbxmbB2YIl3NjXa9x47IgmDKjaNL9Als4fEZ6dfE5j6W7EkcgPLdMXK+G1S/F6aK08IA5n1QecPISDwpaIO44FK2yJz5+K/i6cb
+ template:
+ data: null
+ metadata:
+ creationTimestamp: null
+ name: nextcloud-values
+ namespace: personal-services
+ type: Opaque
+
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/personal-services/nextcloud/volume.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/personal-services/nextcloud/volume.yaml
new file mode 100644
index 0000000..ce857ab
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/personal-services/nextcloud/volume.yaml
@@ -0,0 +1,14 @@
+---
+apiVersion: v1
+kind: PersistentVolume
+metadata:
+ name: nextcloud-data
+ namespace: personal-services
+spec:
+ accessModes:
+ - ReadWriteOnce
+ capacity:
+ storage: 50Gi
+ hostPath:
+ path: "/var/www/nl.tyil.cloud/data"
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/invidious/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/invidious/kustomization.yaml
new file mode 100644
index 0000000..ab637fe
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/invidious/kustomization.yaml
@@ -0,0 +1,7 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- release.yaml
+- values.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/invidious/release.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/invidious/release.yaml
new file mode 100644
index 0000000..3664202
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/invidious/release.yaml
@@ -0,0 +1,41 @@
+---
+apiVersion: helm.toolkit.fluxcd.io/v2beta1
+kind: HelmRelease
+metadata:
+ name: invidious
+ namespace: public-services
+spec:
+ interval: 5m
+ chart:
+ spec:
+ chart: .
+ version: 2.0.2
+ sourceRef:
+ kind: GitRepository
+ name: tyil-helm-invidious
+ namespace: flux-system
+ interval: 1m
+ valuesFrom:
+ - name: invidious-config
+ kind: Secret
+ values:
+ replicaCount: 1
+ ingress:
+ enabled: true
+ className: nginx
+ hosts:
+ - host: youtube.alt.tyil.nl
+ paths:
+ - path: /
+ config:
+ channel_threads: 1
+ db:
+ user: invidious
+ host: 10.57.100.7
+ port: 5432
+ dbname: invidious
+ domain: youtube.alt.tyil.nl
+ feed_threads: 1
+ full_refresh: false
+ https_only: true
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/invidious/values.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/invidious/values.yaml
new file mode 100644
index 0000000..78c730f
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/invidious/values.yaml
@@ -0,0 +1,17 @@
+apiVersion: bitnami.com/v1alpha1
+kind: SealedSecret
+metadata:
+ creationTimestamp: null
+ name: invidious-config
+ namespace: public-services
+spec:
+ encryptedData:
+ values.yaml: AgCuc3T5kWhkGE1FWFLcuq3psNmphDVhAV/20KVnCVyvdmE6doLsPB77LU9y4hmGBRBsrVaN7jk7ZyeYgHE6oO56eX+9f60iz0Brx8LQQNIhGjuXDsjMWY3k6pWecgaWqcMSN05RNJ5C1c2g2zjUjr1TSuuvxibaVBWC34WRlIpO3xjzxJkW9XbJ6b/HyfCa+qu9pKT050Shx4CfHNGLUSzeOHktllGrdiizbjzU08DJFz5MVwZT2u4oEDYVKyAjF3at/61f/5u5ge7BmR0fR0vgM3Nd41oOX1frbHEjqwZmWT1Pbzm7MlYWmzMx7VC+lh7xepSKvmK2Xv6xMwOgXZErgE5v/VO0bVBzbpT/i623Av4ttmpmJNBRHV5Zhsi+fW/Cm0r2Y/e4ZRxd5XP4NqAkYrfwbSXsVFpN//ioZbeDdAK7u4ItfMWXUhOvg2ioxPBUwpUyFQpJ3r5zHCHKIdSQzramnTuA71R9s/z4O7AQGiv+xtUESFJPxiAn6q264yntI+NXM4dc7rw2gaTzan3uKKIdP6sXNTsH0VoYuPX4nNAkJXAk6vsnbJUUhDX4ZFcYwKtfCwbRMO2fXsRtrlvWEZhxnzYQVaV0T8gynzqRBvgy4AafIt4CRHXyQ7NnwlXxU3E3IwcuQ4YUjGqo0eiWzpYCxSEBLXavdqe74v/X/Gb/mrdaSPfKwzPO1YK9cQeaoGbQIN5THFo5rVxl3U3lfIMi4q7zcwaDBIPIaom4lkO8UWn4DWY/g5Lsz0bHLJXkT1wKBMr1m7Gbk+M1kgkVZy/7AeYiTVCuM47mAo09cauEn8T9XxwhQQ==
+ template:
+ data: null
+ metadata:
+ creationTimestamp: null
+ name: invidious-config
+ namespace: public-services
+ type: Opaque
+
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/kustomization.yaml
new file mode 100644
index 0000000..3ce6c98
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/kustomization.yaml
@@ -0,0 +1,10 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- invidious
+- nitter
+- omgur
+- searx
+- teddit
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/nitter/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/nitter/kustomization.yaml
new file mode 100644
index 0000000..3c7eaaa
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/nitter/kustomization.yaml
@@ -0,0 +1,6 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- release.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/nitter/release.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/nitter/release.yaml
new file mode 100644
index 0000000..80a11ca
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/nitter/release.yaml
@@ -0,0 +1,33 @@
+---
+apiVersion: helm.toolkit.fluxcd.io/v2beta1
+kind: HelmRelease
+metadata:
+ name: nitter
+ namespace: public-services
+spec:
+ interval: 5m
+ chart:
+ spec:
+ chart: .
+ version: 0.1.0
+ sourceRef:
+ kind: GitRepository
+ name: tyil-helm-nitter
+ namespace: flux-system
+ interval: 1m
+ values:
+ replicaCount: 1
+ ingress:
+ enabled: true
+ className: nginx
+ hosts:
+ - host: twitter.alt.tyil.nl
+ paths:
+ - path: /
+ redis:
+ host: 10.57.100.7
+ urlReplacements:
+ twitter: twitter.alt.tyil.nl
+ youtube: yewtu.be
+ reddit: reddit.alt.tyil.nl
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/omgur/deployment.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/omgur/deployment.yaml
new file mode 100644
index 0000000..a4647dd
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/omgur/deployment.yaml
@@ -0,0 +1,31 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: omgur
+ namespace: public-services
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: omgur
+ app.kubernetes.io/part-of: public-services
+ template:
+ metadata:
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: omgur
+ app.kubernetes.io/part-of: public-services
+ spec:
+ containers:
+ - name: omgur
+ image: registry.gitlab.com/geraldwuhoo/omgur:latest
+ ports:
+ - containerPort: 8080
+ env:
+ - name: REDIS_HOST
+ value: "10.57.100.7"
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/omgur/ingress.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/omgur/ingress.yaml
new file mode 100644
index 0000000..ca92947
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/omgur/ingress.yaml
@@ -0,0 +1,25 @@
+---
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: omgur
+ namespace: public-services
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: omgur
+ app.kubernetes.io/part-of: public-services
+spec:
+ ingressClassName: "nginx"
+ rules:
+ - host: imgur.alt.tyil.nl
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: omgur
+ port:
+ number: 80
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/omgur/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/omgur/kustomization.yaml
new file mode 100644
index 0000000..5ee3790
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/omgur/kustomization.yaml
@@ -0,0 +1,8 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- deployment.yaml
+- ingress.yaml
+- service.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/omgur/service.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/omgur/service.yaml
new file mode 100644
index 0000000..f848c14
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/omgur/service.yaml
@@ -0,0 +1,22 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: omgur
+ namespace: public-services
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: omgur
+ app.kubernetes.io/part-of: public-services
+spec:
+ selector:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: omgur
+ app.kubernetes.io/part-of: public-services
+ ports:
+ - protocol: TCP
+ port: 80
+ targetPort: 8080
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/searx/deployment.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/searx/deployment.yaml
new file mode 100644
index 0000000..7bfb6cc
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/searx/deployment.yaml
@@ -0,0 +1,54 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: searx
+ namespace: public-services
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: searx
+ app.kubernetes.io/part-of: public-services
+ template:
+ metadata:
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: searx
+ app.kubernetes.io/part-of: public-services
+ spec:
+ containers:
+ - name: searx
+ image: searx/searx:latest
+ ports:
+ - containerPort: 8080
+ env:
+ - name: BIND_ADDRESS
+ value: "0.0.0.0:8080"
+ - name: BASE_URL
+ value: "https://searx.tyil.nl"
+ volumeMounts:
+ - name: srv
+ subPath: config
+ mountPath: /etc/searx
+ - name: filtron
+ image: dalf/filtron
+ args: [
+ "-listen", "0.0.0.0:4040",
+ "-target", "searx:8080",
+ ]
+ ports:
+ - containerPort: 4040
+ volumeMounts:
+ - name: srv
+ subPath: rules.json
+ mountPath: /etc/filtron/rules.json
+ volumes:
+ - name: srv
+ hostPath:
+ type: Directory
+ path: /srv/searx
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/searx/ingress.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/searx/ingress.yaml
new file mode 100644
index 0000000..fdbc6bf
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/searx/ingress.yaml
@@ -0,0 +1,25 @@
+---
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: searx
+ namespace: public-services
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: searx
+ app.kubernetes.io/part-of: public-services
+spec:
+ ingressClassName: "nginx"
+ rules:
+ - host: searx.tyil.nl
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: searx
+ port:
+ number: 80
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/searx/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/searx/kustomization.yaml
new file mode 100644
index 0000000..5ee3790
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/searx/kustomization.yaml
@@ -0,0 +1,8 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- deployment.yaml
+- ingress.yaml
+- service.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/searx/service.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/searx/service.yaml
new file mode 100644
index 0000000..80b802b
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/searx/service.yaml
@@ -0,0 +1,22 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: searx
+ namespace: public-services
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: searx
+ app.kubernetes.io/part-of: public-services
+spec:
+ selector:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: searx
+ app.kubernetes.io/part-of: public-services
+ ports:
+ - protocol: TCP
+ port: 80
+ targetPort: 8080
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/teddit/deployment.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/teddit/deployment.yaml
new file mode 100644
index 0000000..9542cde
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/teddit/deployment.yaml
@@ -0,0 +1,41 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: teddit
+ namespace: public-services
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: teddit
+ app.kubernetes.io/part-of: public-services
+ template:
+ metadata:
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: teddit
+ app.kubernetes.io/part-of: public-services
+ spec:
+ containers:
+ - name: teddit
+ image: teddit/teddit:latest
+ ports:
+ - containerPort: 8080
+ env:
+ - name: DOMAIN
+ value: "reddit.alt.tyil.nl"
+ - name: REDIS_DB
+ value: "1"
+ - name: REDIS_HOST
+ value: "10.57.100.7"
+ - name: TRUST_PROXY
+ value: "true"
+ - name: USE_HELMET
+ value: "true"
+ - name: USE_HELMET_HSTS
+ value: "true"
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/teddit/ingress.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/teddit/ingress.yaml
new file mode 100644
index 0000000..55fc30a
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/teddit/ingress.yaml
@@ -0,0 +1,25 @@
+---
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: teddit
+ namespace: public-services
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: teddit
+ app.kubernetes.io/part-of: public-services
+spec:
+ ingressClassName: "nginx"
+ rules:
+ - host: reddit.alt.tyil.nl
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: teddit
+ port:
+ number: 80
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/teddit/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/teddit/kustomization.yaml
new file mode 100644
index 0000000..5ee3790
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/teddit/kustomization.yaml
@@ -0,0 +1,8 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- deployment.yaml
+- ingress.yaml
+- service.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/teddit/service.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/teddit/service.yaml
new file mode 100644
index 0000000..b91c1d1
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/public-services/teddit/service.yaml
@@ -0,0 +1,22 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: teddit
+ namespace: public-services
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: teddit
+ app.kubernetes.io/part-of: public-services
+spec:
+ selector:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: teddit
+ app.kubernetes.io/part-of: public-services
+ ports:
+ - protocol: TCP
+ port: 80
+ targetPort: 8080
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/bazarr/deployment.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/bazarr/deployment.yaml
new file mode 100644
index 0000000..7d02448
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/bazarr/deployment.yaml
@@ -0,0 +1,36 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: bazarr
+ namespace: servarr
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: bazarr
+ app.kubernetes.io/part-of: servarr
+ template:
+ metadata:
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: bazarr
+ app.kubernetes.io/part-of: servarr
+ spec:
+ containers:
+ - name: bazar
+ image: cr.hotio.dev/hotio/bazarr:nightly
+ ports:
+ - containerPort: 8090
+ volumeMounts:
+ - name: config
+ mountPath: /config
+ volumes:
+ - name: config
+ hostPath:
+ type: DirectoryOrCreate
+ path: /srv/servarr/bazarr/config
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/bazarr/ingress.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/bazarr/ingress.yaml
new file mode 100644
index 0000000..c8a6938
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/bazarr/ingress.yaml
@@ -0,0 +1,20 @@
+---
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: bazarr
+ namespace: servarr
+spec:
+ ingressClassName: "nginx"
+ rules:
+ - host: baz.arr.tyil.nl
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: bazarr
+ port:
+ number: 80
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/bazarr/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/bazarr/kustomization.yaml
new file mode 100644
index 0000000..5ee3790
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/bazarr/kustomization.yaml
@@ -0,0 +1,8 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- deployment.yaml
+- ingress.yaml
+- service.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/bazarr/service.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/bazarr/service.yaml
new file mode 100644
index 0000000..157ac0a
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/bazarr/service.yaml
@@ -0,0 +1,17 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: bazarr
+ namespace: servarr
+spec:
+ selector:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: bazarr
+ app.kubernetes.io/part-of: servarr
+ ports:
+ - protocol: TCP
+ port: 80
+ targetPort: 6767
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/configmap.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/configmap.yaml
new file mode 100644
index 0000000..8d0b56d
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/configmap.yaml
@@ -0,0 +1,12 @@
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: servarr
+ namespace: servarr
+data:
+ groupId: "1001" # media
+ timezone: "Europe/Amsterdam"
+ umask: "002"
+ userId: "169" # transmission
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/jellyseerr/deployment.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/jellyseerr/deployment.yaml
new file mode 100644
index 0000000..d96b030
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/jellyseerr/deployment.yaml
@@ -0,0 +1,42 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: jellyseerr
+ namespace: servarr
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: jellyseerr
+ app.kubernetes.io/part-of: servarr
+ template:
+ metadata:
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: jellyseerr
+ app.kubernetes.io/part-of: servarr
+ spec:
+ containers:
+ - name: jellyseerr
+ image: fallenbagel/jellyseerr:latest
+ ports:
+ - containerPort: 5055
+ volumeMounts:
+ - name: config
+ mountPath: /app/config
+ env:
+ - name: TZ
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: timezone
+ volumes:
+ - name: config
+ hostPath:
+ type: DirectoryOrCreate
+ path: /srv/servarr/jellyseerr/config
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/jellyseerr/ingress.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/jellyseerr/ingress.yaml
new file mode 100644
index 0000000..41f4852
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/jellyseerr/ingress.yaml
@@ -0,0 +1,25 @@
+---
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: jellyseerr
+ namespace: servarr
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: jellyseerr
+ app.kubernetes.io/part-of: servarr
+spec:
+ ingressClassName: "nginx"
+ rules:
+ - host: arr.tyil.nl
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: jellyseerr
+ port:
+ number: 80
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/jellyseerr/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/jellyseerr/kustomization.yaml
new file mode 100644
index 0000000..5ee3790
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/jellyseerr/kustomization.yaml
@@ -0,0 +1,8 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- deployment.yaml
+- ingress.yaml
+- service.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/jellyseerr/service.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/jellyseerr/service.yaml
new file mode 100644
index 0000000..f093194
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/jellyseerr/service.yaml
@@ -0,0 +1,22 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: jellyseerr
+ namespace: servarr
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: jellyseerr
+ app.kubernetes.io/part-of: servarr
+spec:
+ selector:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: jellyseerr
+ app.kubernetes.io/part-of: servarr
+ ports:
+ - protocol: TCP
+ port: 80
+ targetPort: 5055
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/kustomization.yaml
new file mode 100644
index 0000000..a513bfb
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/kustomization.yaml
@@ -0,0 +1,26 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+# Shared configuration
+- configmap.yaml
+
+# Main deployments
+- lidarr
+- radarr
+- readarr
+- sonarr
+
+# Download clients
+- transmission-lidarr
+- transmission-radarr
+- transmission-sonarr
+
+# Management
+- prowlarr
+- jellyseerr
+
+# Additional helper services
+- bazarr
+- unpackerr
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/lidarr/deployment.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/lidarr/deployment.yaml
new file mode 100644
index 0000000..9bf4dd2
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/lidarr/deployment.yaml
@@ -0,0 +1,63 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: lidarr
+ namespace: servarr
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: lidarr
+ app.kubernetes.io/part-of: servarr
+ template:
+ metadata:
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: lidarr
+ app.kubernetes.io/part-of: servarr
+ spec:
+ containers:
+ - name: lidarr
+ image: hotio/lidarr:release
+ ports:
+ - containerPort: 8686
+ volumeMounts:
+ - name: config
+ mountPath: /config
+ - name: media
+ mountPath: /mnt/media
+ env:
+ - name: GUID
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: groupId
+ - name: PUID
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: userId
+ - name: TZ
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: timezone
+ - name: UMASK
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: umask
+ volumes:
+ - name: config
+ hostPath:
+ type: DirectoryOrCreate
+ path: /srv/servarr/lidarr/config
+ - name: media
+ hostPath:
+ type: Directory
+ path: /mnt/media
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/lidarr/ingress.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/lidarr/ingress.yaml
new file mode 100644
index 0000000..fc56232
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/lidarr/ingress.yaml
@@ -0,0 +1,35 @@
+---
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: lidarr
+ namespace: servarr
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: lidarr
+ app.kubernetes.io/part-of: servarr
+spec:
+ ingressClassName: "nginx"
+ rules:
+ - host: lid.arr.tyil.nl
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: lidarr
+ port:
+ number: 80
+ - host: lidarr.arr.tyil.nl
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: lidarr
+ port:
+ number: 80
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/lidarr/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/lidarr/kustomization.yaml
new file mode 100644
index 0000000..5ee3790
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/lidarr/kustomization.yaml
@@ -0,0 +1,8 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- deployment.yaml
+- ingress.yaml
+- service.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/lidarr/service.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/lidarr/service.yaml
new file mode 100644
index 0000000..e4b75ba
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/lidarr/service.yaml
@@ -0,0 +1,22 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: lidarr
+ namespace: servarr
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: lidarr
+ app.kubernetes.io/part-of: servarr
+spec:
+ selector:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: lidarr
+ app.kubernetes.io/part-of: servarr
+ ports:
+ - protocol: TCP
+ port: 80
+ targetPort: 8686
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/prowlarr/deployment.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/prowlarr/deployment.yaml
new file mode 100644
index 0000000..50f4e34
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/prowlarr/deployment.yaml
@@ -0,0 +1,36 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: prowlarr
+ namespace: servarr
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: prowlarr
+ app.kubernetes.io/part-of: servarr
+ template:
+ metadata:
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: prowlarr
+ app.kubernetes.io/part-of: servarr
+ spec:
+ containers:
+ - name: bazar
+ image: cr.hotio.dev/hotio/prowlarr:nightly
+ ports:
+ - containerPort: 9696
+ volumeMounts:
+ - name: config
+ mountPath: /config
+ volumes:
+ - name: config
+ hostPath:
+ type: DirectoryOrCreate
+ path: /srv/servarr/prowlarr/config
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/prowlarr/ingress.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/prowlarr/ingress.yaml
new file mode 100644
index 0000000..dcffc36
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/prowlarr/ingress.yaml
@@ -0,0 +1,35 @@
+---
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: prowlarr
+ namespace: servarr
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: prowlarr
+ app.kubernetes.io/part-of: servarr
+spec:
+ ingressClassName: "nginx"
+ rules:
+ - host: prowl.arr.tyil.nl
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: prowlarr
+ port:
+ number: 80
+ - host: prowlarr.arr.tyil.nl
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: prowlarr
+ port:
+ number: 80
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/prowlarr/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/prowlarr/kustomization.yaml
new file mode 100644
index 0000000..5ee3790
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/prowlarr/kustomization.yaml
@@ -0,0 +1,8 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- deployment.yaml
+- ingress.yaml
+- service.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/prowlarr/service.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/prowlarr/service.yaml
new file mode 100644
index 0000000..fd8a7b2
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/prowlarr/service.yaml
@@ -0,0 +1,17 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: prowlarr
+ namespace: servarr
+spec:
+ selector:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: prowlarr
+ app.kubernetes.io/part-of: servarr
+ ports:
+ - protocol: TCP
+ port: 80
+ targetPort: 9696
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/radarr/deployment.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/radarr/deployment.yaml
new file mode 100644
index 0000000..d44a84c
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/radarr/deployment.yaml
@@ -0,0 +1,75 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: radarr
+ namespace: servarr
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: radarr
+ app.kubernetes.io/part-of: servarr
+ template:
+ metadata:
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: radarr
+ app.kubernetes.io/part-of: servarr
+ spec:
+ containers:
+ - name: radarr
+ image: hotio/radarr:release
+ ports:
+ - containerPort: 7878
+ volumeMounts:
+ - name: config
+ mountPath: /config
+ - name: downloads
+ mountPath: /mnt/media/moves/source-rtorrent
+ - name: sorted-anime
+ mountPath: /mnt/media/anime-movies/exported
+ - name: sorted-movies
+ mountPath: /mnt/media/movies/exported
+ env:
+ - name: GUID
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: groupId
+ - name: PUID
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: userId
+ - name: TZ
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: timezone
+ - name: UMASK
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: umask
+ volumes:
+ - name: config
+ hostPath:
+ type: DirectoryOrCreate
+ path: /srv/servarr/radarr/config
+ - name: downloads
+ hostPath:
+ type: Directory
+ path: /mnt/media/movies/source-rtorrent
+ - name: sorted-anime
+ hostPath:
+ type: Directory
+ path: /mnt/media/anime-movies/exported
+ - name: sorted-movies
+ hostPath:
+ type: Directory
+ path: /mnt/media/movies/exported
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/radarr/ingress.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/radarr/ingress.yaml
new file mode 100644
index 0000000..3950a97
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/radarr/ingress.yaml
@@ -0,0 +1,35 @@
+---
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: radarr
+ namespace: servarr
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: radarr
+ app.kubernetes.io/part-of: servarr
+spec:
+ ingressClassName: "nginx"
+ rules:
+ - host: rad.arr.tyil.nl
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: radarr
+ port:
+ number: 80
+ - host: radarr.arr.tyil.nl
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: radarr
+ port:
+ number: 80
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/radarr/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/radarr/kustomization.yaml
new file mode 100644
index 0000000..5ee3790
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/radarr/kustomization.yaml
@@ -0,0 +1,8 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- deployment.yaml
+- ingress.yaml
+- service.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/radarr/service.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/radarr/service.yaml
new file mode 100644
index 0000000..9b8107c
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/radarr/service.yaml
@@ -0,0 +1,22 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: radarr
+ namespace: servarr
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: radarr
+ app.kubernetes.io/part-of: servarr
+spec:
+ selector:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: radarr
+ app.kubernetes.io/part-of: servarr
+ ports:
+ - protocol: TCP
+ port: 80
+ targetPort: 7878
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/readarr/deployment.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/readarr/deployment.yaml
new file mode 100644
index 0000000..abd52d7
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/readarr/deployment.yaml
@@ -0,0 +1,69 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: readarr
+ namespace: servarr
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: readarr
+ app.kubernetes.io/part-of: servarr
+ template:
+ metadata:
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: readarr
+ app.kubernetes.io/part-of: servarr
+ spec:
+ containers:
+ - name: readarr
+ image: hotio/readarr:testing
+ ports:
+ - containerPort: 8787
+ volumeMounts:
+ - name: config
+ mountPath: /config
+ - name: downloads
+ mountPath: /mnt/media/books/source-rtorrent
+ - name: sorted-books
+ mountPath: /mnt/media/books/exported
+ env:
+ - name: GUID
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: groupId
+ - name: PUID
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: userId
+ - name: TZ
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: timezone
+ - name: UMASK
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: umask
+ volumes:
+ - name: config
+ hostPath:
+ type: DirectoryOrCreate
+ path: /srv/servarr/readarr/config
+ - name: downloads
+ hostPath:
+ type: Directory
+ path: /mnt/media/books/source-rtorrent
+ - name: sorted-books
+ hostPath:
+ type: Directory
+ path: /mnt/media/books/exported
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/readarr/ingress.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/readarr/ingress.yaml
new file mode 100644
index 0000000..17e0e7f
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/readarr/ingress.yaml
@@ -0,0 +1,35 @@
+---
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: readarr
+ namespace: servarr
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: readarr
+ app.kubernetes.io/part-of: servarr
+spec:
+ ingressClassName: "nginx"
+ rules:
+ - host: read.arr.tyil.nl
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: readarr
+ port:
+ number: 80
+ - host: readarr.arr.tyil.nl
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: readarr
+ port:
+ number: 80
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/readarr/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/readarr/kustomization.yaml
new file mode 100644
index 0000000..5ee3790
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/readarr/kustomization.yaml
@@ -0,0 +1,8 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- deployment.yaml
+- ingress.yaml
+- service.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/readarr/service.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/readarr/service.yaml
new file mode 100644
index 0000000..43e01c8
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/readarr/service.yaml
@@ -0,0 +1,22 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: readarr
+ namespace: servarr
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: readarr
+ app.kubernetes.io/part-of: servarr
+spec:
+ selector:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: readarr
+ app.kubernetes.io/part-of: servarr
+ ports:
+ - protocol: TCP
+ port: 80
+ targetPort: 8787
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/sonarr/deployment.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/sonarr/deployment.yaml
new file mode 100644
index 0000000..057625b
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/sonarr/deployment.yaml
@@ -0,0 +1,63 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: sonarr
+ namespace: servarr
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: sonarr
+ app.kubernetes.io/part-of: servarr
+ template:
+ metadata:
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: sonarr
+ app.kubernetes.io/part-of: servarr
+ spec:
+ containers:
+ - name: sonarr
+ image: hotio/sonarr:release
+ ports:
+ - containerPort: 8989
+ volumeMounts:
+ - name: config
+ mountPath: /config
+ - name: media
+ mountPath: /mnt/media
+ env:
+ - name: GUID
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: groupId
+ - name: PUID
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: userId
+ - name: TZ
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: timezone
+ - name: UMASK
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: umask
+ volumes:
+ - name: config
+ hostPath:
+ type: DirectoryOrCreate
+ path: /srv/servarr/sonarr/config
+ - name: media
+ hostPath:
+ type: Directory
+ path: /mnt/media
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/sonarr/ingress.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/sonarr/ingress.yaml
new file mode 100644
index 0000000..a053682
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/sonarr/ingress.yaml
@@ -0,0 +1,35 @@
+---
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: sonarr
+ namespace: servarr
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: sonarr
+ app.kubernetes.io/part-of: servarr
+spec:
+ ingressClassName: "nginx"
+ rules:
+ - host: son.arr.tyil.nl
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: sonarr
+ port:
+ number: 80
+ - host: sonarr.arr.tyil.nl
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: sonarr
+ port:
+ number: 80
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/sonarr/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/sonarr/kustomization.yaml
new file mode 100644
index 0000000..5ee3790
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/sonarr/kustomization.yaml
@@ -0,0 +1,8 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- deployment.yaml
+- ingress.yaml
+- service.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/sonarr/service.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/sonarr/service.yaml
new file mode 100644
index 0000000..9db5fb2
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/sonarr/service.yaml
@@ -0,0 +1,22 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: sonarr
+ namespace: servarr
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: sonarr
+ app.kubernetes.io/part-of: servarr
+spec:
+ selector:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: sonarr
+ app.kubernetes.io/part-of: servarr
+ ports:
+ - protocol: TCP
+ port: 80
+ targetPort: 8989
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-lidarr/deployment.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-lidarr/deployment.yaml
new file mode 100644
index 0000000..48f7607
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-lidarr/deployment.yaml
@@ -0,0 +1,74 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: transmission-lidarr
+ namespace: servarr
+spec:
+ replicas: 1
+ strategy:
+ type: Recreate
+ selector:
+ matchLabels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: transmission-lidarr
+ app.kubernetes.io/part-of: servarr
+ template:
+ metadata:
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: transmission-lidarr
+ app.kubernetes.io/part-of: servarr
+ spec:
+ containers:
+ - name: transmission
+ image: lscr.io/linuxserver/transmission:latest
+ ports:
+ - containerPort: 9091
+ protocol: TCP
+ - containerPort: 30012
+ protocol: TCP
+ - containerPort: 30012
+ protocol: UDP
+ volumeMounts:
+ - name: config
+ mountPath: /config
+ - name: downloads
+ mountPath: /mnt/media/music/source-transmission
+ env:
+ - name: GUID
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: groupId
+ - name: PUID
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: userId
+ - name: TZ
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: timezone
+ - name: UMASK
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: umask
+ - name: TRANSMISSION_WEB_HOME
+ value: "/flood-for-transmission/"
+ - name: PEERPORT
+ value: "30012"
+ volumes:
+ - name: downloads
+ hostPath:
+ type: Directory
+ path: /mnt/media/music/source-transmission
+ - name: config
+ hostPath:
+ type: DirectoryOrCreate
+ path: /srv/servarr/lidarr/transmission-config
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-lidarr/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-lidarr/kustomization.yaml
new file mode 100644
index 0000000..3f8c40c
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-lidarr/kustomization.yaml
@@ -0,0 +1,7 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- deployment.yaml
+- service.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-lidarr/service.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-lidarr/service.yaml
new file mode 100644
index 0000000..4081ca9
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-lidarr/service.yaml
@@ -0,0 +1,35 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: transmission-lidarr
+ namespace: servarr
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: transmission-lidarr
+ app.kubernetes.io/part-of: servarr
+spec:
+ type: NodePort
+ selector:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: transmission-lidarr
+ app.kubernetes.io/part-of: servarr
+ ports:
+ - protocol: TCP
+ port: 9091
+ targetPort: 9091
+ nodePort: 30013
+ name: xmlrpc
+ - protocol: TCP
+ port: 30012
+ targetPort: 30012
+ nodePort: 30012
+ name: peer-tcp
+ - protocol: UDP
+ port: 30012
+ targetPort: 30012
+ nodePort: 30012
+ name: peer-udp
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-radarr/deployment.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-radarr/deployment.yaml
new file mode 100644
index 0000000..d718b23
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-radarr/deployment.yaml
@@ -0,0 +1,74 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: transmission-radarr
+ namespace: servarr
+spec:
+ replicas: 1
+ strategy:
+ type: Recreate
+ selector:
+ matchLabels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: transmission-radarr
+ app.kubernetes.io/part-of: servarr
+ template:
+ metadata:
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: transmission-radarr
+ app.kubernetes.io/part-of: servarr
+ spec:
+ containers:
+ - name: transmission
+ image: lscr.io/linuxserver/transmission:latest
+ ports:
+ - containerPort: 9091
+ protocol: TCP
+ - containerPort: 30014
+ protocol: TCP
+ - containerPort: 30014
+ protocol: UDP
+ volumeMounts:
+ - name: config
+ mountPath: /config
+ - name: downloads
+ mountPath: /mnt/media/movies/source-transmission
+ env:
+ - name: GUID
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: groupId
+ - name: PUID
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: userId
+ - name: TZ
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: timezone
+ - name: UMASK
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: umask
+ - name: TRANSMISSION_WEB_HOME
+ value: "/flood-for-transmission/"
+ - name: PEERPORT
+ value: "30014"
+ volumes:
+ - name: downloads
+ hostPath:
+ type: Directory
+ path: /mnt/media/movies/source-transmission
+ - name: config
+ hostPath:
+ type: DirectoryOrCreate
+ path: /srv/servarr/radarr/transmission-config
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-radarr/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-radarr/kustomization.yaml
new file mode 100644
index 0000000..3f8c40c
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-radarr/kustomization.yaml
@@ -0,0 +1,7 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- deployment.yaml
+- service.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-radarr/service.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-radarr/service.yaml
new file mode 100644
index 0000000..5789330
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-radarr/service.yaml
@@ -0,0 +1,35 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: transmission-radarr
+ namespace: servarr
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: transmission-radarr
+ app.kubernetes.io/part-of: servarr
+spec:
+ type: NodePort
+ selector:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: transmission-radarr
+ app.kubernetes.io/part-of: servarr
+ ports:
+ - protocol: TCP
+ port: 9091
+ targetPort: 9091
+ nodePort: 30015
+ name: xmlrpc
+ - protocol: TCP
+ port: 30014
+ targetPort: 30014
+ nodePort: 30014
+ name: peer-tcp
+ - protocol: UDP
+ port: 30014
+ targetPort: 30014
+ nodePort: 30014
+ name: peer-udp
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-sonarr/deployment.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-sonarr/deployment.yaml
new file mode 100644
index 0000000..77ade49
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-sonarr/deployment.yaml
@@ -0,0 +1,74 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: transmission-sonarr
+ namespace: servarr
+spec:
+ replicas: 1
+ strategy:
+ type: Recreate
+ selector:
+ matchLabels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: transmission-sonarr
+ app.kubernetes.io/part-of: servarr
+ template:
+ metadata:
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: transmission-sonarr
+ app.kubernetes.io/part-of: servarr
+ spec:
+ containers:
+ - name: transmission
+ image: lscr.io/linuxserver/transmission:latest
+ ports:
+ - containerPort: 9091
+ protocol: TCP
+ - containerPort: 30010
+ protocol: TCP
+ - containerPort: 30010
+ protocol: UDP
+ volumeMounts:
+ - name: config
+ mountPath: /config
+ - name: downloads
+ mountPath: /mnt/media/series/source-transmission
+ env:
+ - name: GUID
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: groupId
+ - name: PUID
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: userId
+ - name: TZ
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: timezone
+ - name: UMASK
+ valueFrom:
+ configMapKeyRef:
+ name: servarr
+ key: umask
+ - name: TRANSMISSION_WEB_HOME
+ value: "/flood-for-transmission/"
+ - name: PEERPORT
+ value: "30010"
+ volumes:
+ - name: downloads
+ hostPath:
+ type: Directory
+ path: /mnt/media/series/source-transmission
+ - name: config
+ hostPath:
+ type: DirectoryOrCreate
+ path: /srv/servarr/sonarr/transmission-config
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-sonarr/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-sonarr/kustomization.yaml
new file mode 100644
index 0000000..3f8c40c
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-sonarr/kustomization.yaml
@@ -0,0 +1,7 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- deployment.yaml
+- service.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-sonarr/service.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-sonarr/service.yaml
new file mode 100644
index 0000000..de91b67
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/transmission-sonarr/service.yaml
@@ -0,0 +1,35 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: transmission-sonarr
+ namespace: servarr
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: transmission-sonarr
+ app.kubernetes.io/part-of: servarr
+spec:
+ type: NodePort
+ selector:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: transmission-sonarr
+ app.kubernetes.io/part-of: servarr
+ ports:
+ - protocol: TCP
+ port: 9091
+ targetPort: 9091
+ nodePort: 30011
+ name: xmlrpc
+ - protocol: TCP
+ port: 30010
+ targetPort: 30010
+ nodePort: 30010
+ name: peer-tcp
+ - protocol: UDP
+ port: 30010
+ targetPort: 30010
+ nodePort: 30010
+ name: peer-udp
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/unpackerr/deployment.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/unpackerr/deployment.yaml
new file mode 100644
index 0000000..06d07ea
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/unpackerr/deployment.yaml
@@ -0,0 +1,40 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: unpackerr
+ namespace: servarr
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: unpackerr
+ app.kubernetes.io/part-of: servarr
+ template:
+ metadata:
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: unpackerr
+ app.kubernetes.io/part-of: servarr
+ spec:
+ containers:
+ - name: unpackerr
+ image: golift/unpackerr:latest
+ volumeMounts:
+ - name: config
+ mountPath: /etc/unpackerr
+ - name: media
+ mountPath: /mnt/media
+ volumes:
+ - name: config
+ hostPath:
+ type: DirectoryOrCreate
+ path: /srv/servarr/unpackerr/config
+ - name: media
+ hostPath:
+ type: Directory
+ path: /mnt/media
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/unpackerr/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/unpackerr/kustomization.yaml
new file mode 100644
index 0000000..83c68dc
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/edephas.tyil.net/servarr/unpackerr/kustomization.yaml
@@ -0,0 +1,6 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- deployment.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/kustomization.yaml
new file mode 100644
index 0000000..8020a53
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/kustomization.yaml
@@ -0,0 +1,6 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- public-services
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/public-services/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/public-services/kustomization.yaml
new file mode 100644
index 0000000..168bb15
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/public-services/kustomization.yaml
@@ -0,0 +1,6 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- searxng
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/public-services/searxng/deployment.yaml b/playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/public-services/searxng/deployment.yaml
new file mode 100644
index 0000000..f5f6064
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/public-services/searxng/deployment.yaml
@@ -0,0 +1,31 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: searxng
+ namespace: public-services
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: searxng
+ app.kubernetes.io/part-of: searxng
+ template:
+ metadata:
+ labels:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: searxng
+ app.kubernetes.io/part-of: searxng
+ spec:
+ containers:
+ - name: searxng
+ image: searxng/searxng:2022.08.01-7c9c1124
+ ports:
+ - containerPort: 8080
+ env:
+ - name: BASE_URL
+ value: https://searxng.tyil.nl
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/public-services/searxng/ingress.yaml b/playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/public-services/searxng/ingress.yaml
new file mode 100644
index 0000000..8bd3d94
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/public-services/searxng/ingress.yaml
@@ -0,0 +1,26 @@
+---
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: searxng
+ namespace: public-services
+ annotations:
+ cert-manager.io/cluster-issuer: "letsencrypt-production"
+spec:
+ ingressClassName: "nginx"
+ tls:
+ - hosts:
+ - searxng.tyil.nl
+ secretName: tls-nl.tyil.searxng
+ rules:
+ - host: searxng.tyil.nl
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: searxng
+ port:
+ number: 80
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/public-services/searxng/kustomization.yaml b/playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/public-services/searxng/kustomization.yaml
new file mode 100644
index 0000000..e0ff25d
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/public-services/searxng/kustomization.yaml
@@ -0,0 +1,8 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- deployment.yaml
+- service.yaml
+- ingress.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/public-services/searxng/service.yaml b/playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/public-services/searxng/service.yaml
new file mode 100644
index 0000000..23fb8ac
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/applications/hurzak.tyil.net/public-services/searxng/service.yaml
@@ -0,0 +1,17 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: searxng
+ namespace: public-services
+spec:
+ selector:
+ app.kubernetes.io/created-by: tyil
+ app.kubernetes.io/managed-by: manual
+ app.kubernetes.io/name: searxng
+ app.kubernetes.io/part-of: searxng
+ ports:
+ - protocol: TCP
+ port: 80
+ targetPort: 8080
+...
diff --git a/playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/applications.yaml b/playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/applications.yaml
new file mode 100644
index 0000000..25a78b9
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/applications.yaml
@@ -0,0 +1,14 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
+kind: Kustomization
+metadata:
+ name: applications
+ namespace: flux-system
+spec:
+ interval: 10m0s
+ sourceRef:
+ kind: GitRepository
+ name: flux-system
+ path: ./playbooks.d/k3s-master/share/manifests/applications/edephas.tyil.net
+ prune: true
+...
diff --git a/playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/flux-system/gotk-sync.yaml b/playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/flux-system/gotk-sync.yaml
new file mode 100644
index 0000000..ee3a6e0
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/flux-system/gotk-sync.yaml
@@ -0,0 +1,27 @@
+# This manifest was generated by flux. DO NOT EDIT.
+---
+apiVersion: source.toolkit.fluxcd.io/v1beta2
+kind: GitRepository
+metadata:
+ name: flux-system
+ namespace: flux-system
+spec:
+ interval: 1m0s
+ ref:
+ branch: master
+ secretRef:
+ name: flux-system
+ url: ssh://git@10.57.100.7/srv/git/tyilnet
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
+kind: Kustomization
+metadata:
+ name: flux-system
+ namespace: flux-system
+spec:
+ interval: 10m0s
+ path: ./playbooks.d/k3s-master/share/manifests/clusters/edephas.tyil.net
+ prune: true
+ sourceRef:
+ kind: GitRepository
+ name: flux-system
diff --git a/playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/flux-system/kustomization.yaml b/playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/flux-system/kustomization.yaml
new file mode 100644
index 0000000..3842229
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/flux-system/kustomization.yaml
@@ -0,0 +1,5 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- gotk-components.yaml
+- gotk-sync.yaml
diff --git a/playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/infrastructure-configuration.yaml b/playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/infrastructure-configuration.yaml
new file mode 100644
index 0000000..9df248a
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/infrastructure-configuration.yaml
@@ -0,0 +1,17 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
+kind: Kustomization
+metadata:
+ name: infrastructure-configurations
+ namespace: flux-system
+spec:
+ interval: 10m0s
+ dependsOn:
+ - name: infrastructure-releases
+ sourceRef:
+ kind: GitRepository
+ name: flux-system
+ path: ./playbooks.d/k3s-master/share/manifests/infrastructure/configuration
+ prune: true
+ wait: true
+...
diff --git a/playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/infrastructure-releases.yaml b/playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/infrastructure-releases.yaml
new file mode 100644
index 0000000..cc449ac
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/infrastructure-releases.yaml
@@ -0,0 +1,17 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
+kind: Kustomization
+metadata:
+ name: infrastructure-releases
+ namespace: flux-system
+spec:
+ interval: 10m0s
+ dependsOn:
+ - name: infrastructure-sources
+ sourceRef:
+ kind: GitRepository
+ name: flux-system
+ path: ./playbooks.d/k3s-master/share/manifests/infrastructure/releases
+ prune: true
+ wait: true
+...
diff --git a/playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/infrastructure-sources.yaml b/playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/infrastructure-sources.yaml
new file mode 100644
index 0000000..eda76f3
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/infrastructure-sources.yaml
@@ -0,0 +1,17 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
+kind: Kustomization
+metadata:
+ name: infrastructure-sources
+ namespace: flux-system
+spec:
+ interval: 10m0s
+ dependsOn:
+ - name: namespaces
+ sourceRef:
+ kind: GitRepository
+ name: flux-system
+ path: ./playbooks.d/k3s-master/share/manifests/infrastructure/sources
+ prune: true
+ wait: true
+...
diff --git a/playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/namespaces.yaml b/playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/namespaces.yaml
new file mode 100644
index 0000000..4fc4292
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/clusters/edephas.tyil.net/namespaces.yaml
@@ -0,0 +1,14 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
+kind: Kustomization
+metadata:
+ name: namespaces
+ namespace: flux-system
+spec:
+ interval: 10m0s
+ sourceRef:
+ kind: GitRepository
+ name: flux-system
+ path: ./playbooks.d/k3s-master/share/manifests/namespaces
+ prune: true
+...
diff --git a/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/applications.yaml b/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/applications.yaml
new file mode 100644
index 0000000..8e8d43c
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/applications.yaml
@@ -0,0 +1,14 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
+kind: Kustomization
+metadata:
+ name: applications
+ namespace: flux-system
+spec:
+ interval: 10m0s
+ sourceRef:
+ kind: GitRepository
+ name: flux-system
+ path: ./playbooks.d/k3s-master/share/manifests/applications/hurzak.tyil.net
+ prune: true
+...
diff --git a/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/flux-system/gotk-components.yaml b/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/flux-system/gotk-components.yaml
new file mode 100644
index 0000000..4c7ce9b
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/flux-system/gotk-components.yaml
@@ -0,0 +1,5583 @@
+---
+# This manifest was generated by flux. DO NOT EDIT.
+# Flux Version: v0.31.5
+# Components: source-controller,kustomize-controller,helm-controller,notification-controller
+apiVersion: v1
+kind: Namespace
+metadata:
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ pod-security.kubernetes.io/warn: restricted
+ pod-security.kubernetes.io/warn-version: latest
+ name: flux-system
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.7.0
+ creationTimestamp: null
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ name: alerts.notification.toolkit.fluxcd.io
+spec:
+ group: notification.toolkit.fluxcd.io
+ names:
+ kind: Alert
+ listKind: AlertList
+ plural: alerts
+ singular: alert
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ - jsonPath: .status.conditions[?(@.type=="Ready")].status
+ name: Ready
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Ready")].message
+ name: Status
+ type: string
+ name: v1beta1
+ schema:
+ openAPIV3Schema:
+ description: Alert is the Schema for the alerts API
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: AlertSpec defines an alerting rule for events involving a
+ list of objects
+ properties:
+ eventSeverity:
+ default: info
+ description: Filter events based on severity, defaults to ('info').
+ If set to 'info' no events will be filtered.
+ enum:
+ - info
+ - error
+ type: string
+ eventSources:
+ description: Filter events based on the involved objects.
+ items:
+ description: CrossNamespaceObjectReference contains enough information
+ to let you locate the typed referenced object at cluster level
+ properties:
+ apiVersion:
+ description: API version of the referent
+ type: string
+ kind:
+ description: Kind of the referent
+ enum:
+ - Bucket
+ - GitRepository
+ - Kustomization
+ - HelmRelease
+ - HelmChart
+ - HelmRepository
+ - ImageRepository
+ - ImagePolicy
+ - ImageUpdateAutomation
+ type: string
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: MatchLabels is a map of {key,value} pairs. A single
+ {key,value} in the matchLabels map is equivalent to an element
+ of matchExpressions, whose key field is "key", the operator
+ is "In", and the values array contains only "value". The requirements
+ are ANDed.
+ type: object
+ name:
+ description: Name of the referent
+ maxLength: 53
+ minLength: 1
+ type: string
+ namespace:
+ description: Namespace of the referent
+ maxLength: 53
+ minLength: 1
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ exclusionList:
+ description: A list of Golang regular expressions to be used for excluding
+ messages.
+ items:
+ type: string
+ type: array
+ providerRef:
+ description: Send events using this provider.
+ properties:
+ name:
+ description: Name of the referent.
+ type: string
+ required:
+ - name
+ type: object
+ summary:
+ description: Short description of the impact and affected cluster.
+ type: string
+ suspend:
+ description: This flag tells the controller to suspend subsequent
+ events dispatching. Defaults to false.
+ type: boolean
+ required:
+ - eventSources
+ - providerRef
+ type: object
+ status:
+ default:
+ observedGeneration: -1
+ description: AlertStatus defines the observed state of Alert
+ properties:
+ conditions:
+ items:
+ description: "Condition contains details for one aspect of the current
+ state of this API Resource. --- This struct is intended for direct
+ use as an array at the field path .status.conditions. For example,
+ type FooStatus struct{ // Represents the observations of a
+ foo's current state. // Known .status.conditions.type are:
+ \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type
+ \ // +patchStrategy=merge // +listType=map // +listMapKey=type
+ \ Conditions []metav1.Condition `json:\"conditions,omitempty\"
+ patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
+ \n // other fields }"
+ properties:
+ lastTransitionTime:
+ description: lastTransitionTime is the last time the condition
+ transitioned from one status to another. This should be when
+ the underlying condition changed. If that is not known, then
+ using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: message is a human readable message indicating
+ details about the transition. This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: observedGeneration represents the .metadata.generation
+ that the condition was set based upon. For instance, if .metadata.generation
+ is currently 12, but the .status.conditions[x].observedGeneration
+ is 9, the condition is out of date with respect to the current
+ state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: reason contains a programmatic identifier indicating
+ the reason for the condition's last transition. Producers
+ of specific condition types may define expected values and
+ meanings for this field, and whether the values are considered
+ a guaranteed API. The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ --- Many .condition.type values are consistent across resources
+ like Available, but because arbitrary conditions can be useful
+ (see .node.status.conditions), the ability to deconflict is
+ important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ observedGeneration:
+ description: ObservedGeneration is the last observed generation.
+ format: int64
+ type: integer
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.7.0
+ creationTimestamp: null
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ name: buckets.source.toolkit.fluxcd.io
+spec:
+ group: source.toolkit.fluxcd.io
+ names:
+ kind: Bucket
+ listKind: BucketList
+ plural: buckets
+ singular: bucket
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .spec.endpoint
+ name: Endpoint
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Ready")].status
+ name: Ready
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Ready")].message
+ name: Status
+ type: string
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ name: v1beta1
+ schema:
+ openAPIV3Schema:
+ description: Bucket is the Schema for the buckets API
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: BucketSpec defines the desired state of an S3 compatible
+ bucket
+ properties:
+ accessFrom:
+ description: AccessFrom defines an Access Control List for allowing
+ cross-namespace references to this object.
+ properties:
+ namespaceSelectors:
+ description: NamespaceSelectors is the list of namespace selectors
+ to which this ACL applies. Items in this list are evaluated
+ using a logical OR operation.
+ items:
+ description: NamespaceSelector selects the namespaces to which
+ this ACL applies. An empty map of MatchLabels matches all
+ namespaces in a cluster.
+ properties:
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: MatchLabels is a map of {key,value} pairs.
+ A single {key,value} in the matchLabels map is equivalent
+ to an element of matchExpressions, whose key field is
+ "key", the operator is "In", and the values array contains
+ only "value". The requirements are ANDed.
+ type: object
+ type: object
+ type: array
+ required:
+ - namespaceSelectors
+ type: object
+ bucketName:
+ description: The bucket name.
+ type: string
+ endpoint:
+ description: The bucket endpoint address.
+ type: string
+ ignore:
+ description: Ignore overrides the set of excluded patterns in the
+ .sourceignore format (which is the same as .gitignore). If not provided,
+ a default will be used, consult the documentation for your version
+ to find out what those are.
+ type: string
+ insecure:
+ description: Insecure allows connecting to a non-TLS S3 HTTP endpoint.
+ type: boolean
+ interval:
+ description: The interval at which to check for bucket updates.
+ type: string
+ provider:
+ default: generic
+ description: The S3 compatible storage provider name, default ('generic').
+ enum:
+ - generic
+ - aws
+ - gcp
+ type: string
+ region:
+ description: The bucket region.
+ type: string
+ secretRef:
+ description: The name of the secret containing authentication credentials
+ for the Bucket.
+ properties:
+ name:
+ description: Name of the referent.
+ type: string
+ required:
+ - name
+ type: object
+ suspend:
+ description: This flag tells the controller to suspend the reconciliation
+ of this source.
+ type: boolean
+ timeout:
+ default: 60s
+ description: The timeout for download operations, defaults to 60s.
+ type: string
+ required:
+ - bucketName
+ - endpoint
+ - interval
+ type: object
+ status:
+ default:
+ observedGeneration: -1
+ description: BucketStatus defines the observed state of a bucket
+ properties:
+ artifact:
+ description: Artifact represents the output of the last successful
+ Bucket sync.
+ properties:
+ checksum:
+ description: Checksum is the SHA256 checksum of the artifact.
+ type: string
+ lastUpdateTime:
+ description: LastUpdateTime is the timestamp corresponding to
+ the last update of this artifact.
+ format: date-time
+ type: string
+ path:
+ description: Path is the relative file path of this artifact.
+ type: string
+ revision:
+ description: Revision is a human readable identifier traceable
+ in the origin source system. It can be a Git commit SHA, Git
+ tag, a Helm index timestamp, a Helm chart version, etc.
+ type: string
+ url:
+ description: URL is the HTTP address of this artifact.
+ type: string
+ required:
+ - path
+ - url
+ type: object
+ conditions:
+ description: Conditions holds the conditions for the Bucket.
+ items:
+ description: "Condition contains details for one aspect of the current
+ state of this API Resource. --- This struct is intended for direct
+ use as an array at the field path .status.conditions. For example,
+ type FooStatus struct{ // Represents the observations of a
+ foo's current state. // Known .status.conditions.type are:
+ \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type
+ \ // +patchStrategy=merge // +listType=map // +listMapKey=type
+ \ Conditions []metav1.Condition `json:\"conditions,omitempty\"
+ patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
+ \n // other fields }"
+ properties:
+ lastTransitionTime:
+ description: lastTransitionTime is the last time the condition
+ transitioned from one status to another. This should be when
+ the underlying condition changed. If that is not known, then
+ using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: message is a human readable message indicating
+ details about the transition. This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: observedGeneration represents the .metadata.generation
+ that the condition was set based upon. For instance, if .metadata.generation
+ is currently 12, but the .status.conditions[x].observedGeneration
+ is 9, the condition is out of date with respect to the current
+ state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: reason contains a programmatic identifier indicating
+ the reason for the condition's last transition. Producers
+ of specific condition types may define expected values and
+ meanings for this field, and whether the values are considered
+ a guaranteed API. The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ --- Many .condition.type values are consistent across resources
+ like Available, but because arbitrary conditions can be useful
+ (see .node.status.conditions), the ability to deconflict is
+ important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ lastHandledReconcileAt:
+ description: LastHandledReconcileAt holds the value of the most recent
+ reconcile request value, so a change of the annotation value can
+ be detected.
+ type: string
+ observedGeneration:
+ description: ObservedGeneration is the last observed generation.
+ format: int64
+ type: integer
+ url:
+ description: URL is the download link for the artifact output of the
+ last Bucket sync.
+ type: string
+ type: object
+ type: object
+ served: true
+ storage: false
+ subresources:
+ status: {}
+ - additionalPrinterColumns:
+ - jsonPath: .spec.endpoint
+ name: Endpoint
+ type: string
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ - jsonPath: .status.conditions[?(@.type=="Ready")].status
+ name: Ready
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Ready")].message
+ name: Status
+ type: string
+ name: v1beta2
+ schema:
+ openAPIV3Schema:
+ description: Bucket is the Schema for the buckets API.
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: BucketSpec specifies the required configuration to produce
+ an Artifact for an object storage bucket.
+ properties:
+ accessFrom:
+ description: 'AccessFrom specifies an Access Control List for allowing
+ cross-namespace references to this object. NOTE: Not implemented,
+ provisional as of https://github.com/fluxcd/flux2/pull/2092'
+ properties:
+ namespaceSelectors:
+ description: NamespaceSelectors is the list of namespace selectors
+ to which this ACL applies. Items in this list are evaluated
+ using a logical OR operation.
+ items:
+ description: NamespaceSelector selects the namespaces to which
+ this ACL applies. An empty map of MatchLabels matches all
+ namespaces in a cluster.
+ properties:
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: MatchLabels is a map of {key,value} pairs.
+ A single {key,value} in the matchLabels map is equivalent
+ to an element of matchExpressions, whose key field is
+ "key", the operator is "In", and the values array contains
+ only "value". The requirements are ANDed.
+ type: object
+ type: object
+ type: array
+ required:
+ - namespaceSelectors
+ type: object
+ bucketName:
+ description: BucketName is the name of the object storage bucket.
+ type: string
+ endpoint:
+ description: Endpoint is the object storage address the BucketName
+ is located at.
+ type: string
+ ignore:
+ description: Ignore overrides the set of excluded patterns in the
+ .sourceignore format (which is the same as .gitignore). If not provided,
+ a default will be used, consult the documentation for your version
+ to find out what those are.
+ type: string
+ insecure:
+ description: Insecure allows connecting to a non-TLS HTTP Endpoint.
+ type: boolean
+ interval:
+ description: Interval at which to check the Endpoint for updates.
+ type: string
+ provider:
+ default: generic
+ description: Provider of the object storage bucket. Defaults to 'generic',
+ which expects an S3 (API) compatible object storage.
+ enum:
+ - generic
+ - aws
+ - gcp
+ - azure
+ type: string
+ region:
+ description: Region of the Endpoint where the BucketName is located
+ in.
+ type: string
+ secretRef:
+ description: SecretRef specifies the Secret containing authentication
+ credentials for the Bucket.
+ properties:
+ name:
+ description: Name of the referent.
+ type: string
+ required:
+ - name
+ type: object
+ suspend:
+ description: Suspend tells the controller to suspend the reconciliation
+ of this Bucket.
+ type: boolean
+ timeout:
+ default: 60s
+ description: Timeout for fetch operations, defaults to 60s.
+ type: string
+ required:
+ - bucketName
+ - endpoint
+ - interval
+ type: object
+ status:
+ default:
+ observedGeneration: -1
+ description: BucketStatus records the observed state of a Bucket.
+ properties:
+ artifact:
+ description: Artifact represents the last successful Bucket reconciliation.
+ properties:
+ checksum:
+ description: Checksum is the SHA256 checksum of the Artifact file.
+ type: string
+ lastUpdateTime:
+ description: LastUpdateTime is the timestamp corresponding to
+ the last update of the Artifact.
+ format: date-time
+ type: string
+ path:
+ description: Path is the relative file path of the Artifact. It
+ can be used to locate the file in the root of the Artifact storage
+ on the local file system of the controller managing the Source.
+ type: string
+ revision:
+ description: Revision is a human-readable identifier traceable
+ in the origin source system. It can be a Git commit SHA, Git
+ tag, a Helm chart version, etc.
+ type: string
+ size:
+ description: Size is the number of bytes in the file.
+ format: int64
+ type: integer
+ url:
+ description: URL is the HTTP address of the Artifact as exposed
+ by the controller managing the Source. It can be used to retrieve
+ the Artifact for consumption, e.g. by another controller applying
+ the Artifact contents.
+ type: string
+ required:
+ - path
+ - url
+ type: object
+ conditions:
+ description: Conditions holds the conditions for the Bucket.
+ items:
+ description: "Condition contains details for one aspect of the current
+ state of this API Resource. --- This struct is intended for direct
+ use as an array at the field path .status.conditions. For example,
+ type FooStatus struct{ // Represents the observations of a
+ foo's current state. // Known .status.conditions.type are:
+ \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type
+ \ // +patchStrategy=merge // +listType=map // +listMapKey=type
+ \ Conditions []metav1.Condition `json:\"conditions,omitempty\"
+ patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
+ \n // other fields }"
+ properties:
+ lastTransitionTime:
+ description: lastTransitionTime is the last time the condition
+ transitioned from one status to another. This should be when
+ the underlying condition changed. If that is not known, then
+ using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: message is a human readable message indicating
+ details about the transition. This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: observedGeneration represents the .metadata.generation
+ that the condition was set based upon. For instance, if .metadata.generation
+ is currently 12, but the .status.conditions[x].observedGeneration
+ is 9, the condition is out of date with respect to the current
+ state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: reason contains a programmatic identifier indicating
+ the reason for the condition's last transition. Producers
+ of specific condition types may define expected values and
+ meanings for this field, and whether the values are considered
+ a guaranteed API. The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ --- Many .condition.type values are consistent across resources
+ like Available, but because arbitrary conditions can be useful
+ (see .node.status.conditions), the ability to deconflict is
+ important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ lastHandledReconcileAt:
+ description: LastHandledReconcileAt holds the value of the most recent
+ reconcile request value, so a change of the annotation value can
+ be detected.
+ type: string
+ observedGeneration:
+ description: ObservedGeneration is the last observed generation of
+ the Bucket object.
+ format: int64
+ type: integer
+ url:
+ description: URL is the dynamic fetch link for the latest Artifact.
+ It is provided on a "best effort" basis, and using the precise BucketStatus.Artifact
+ data is recommended.
+ type: string
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.7.0
+ creationTimestamp: null
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ name: gitrepositories.source.toolkit.fluxcd.io
+spec:
+ group: source.toolkit.fluxcd.io
+ names:
+ kind: GitRepository
+ listKind: GitRepositoryList
+ plural: gitrepositories
+ shortNames:
+ - gitrepo
+ singular: gitrepository
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .spec.url
+ name: URL
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Ready")].status
+ name: Ready
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Ready")].message
+ name: Status
+ type: string
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ name: v1beta1
+ schema:
+ openAPIV3Schema:
+ description: GitRepository is the Schema for the gitrepositories API
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: GitRepositorySpec defines the desired state of a Git repository.
+ properties:
+ accessFrom:
+ description: AccessFrom defines an Access Control List for allowing
+ cross-namespace references to this object.
+ properties:
+ namespaceSelectors:
+ description: NamespaceSelectors is the list of namespace selectors
+ to which this ACL applies. Items in this list are evaluated
+ using a logical OR operation.
+ items:
+ description: NamespaceSelector selects the namespaces to which
+ this ACL applies. An empty map of MatchLabels matches all
+ namespaces in a cluster.
+ properties:
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: MatchLabels is a map of {key,value} pairs.
+ A single {key,value} in the matchLabels map is equivalent
+ to an element of matchExpressions, whose key field is
+ "key", the operator is "In", and the values array contains
+ only "value". The requirements are ANDed.
+ type: object
+ type: object
+ type: array
+ required:
+ - namespaceSelectors
+ type: object
+ gitImplementation:
+ default: go-git
+ description: Determines which git client library to use. Defaults
+ to go-git, valid values are ('go-git', 'libgit2').
+ enum:
+ - go-git
+ - libgit2
+ type: string
+ ignore:
+ description: Ignore overrides the set of excluded patterns in the
+ .sourceignore format (which is the same as .gitignore). If not provided,
+ a default will be used, consult the documentation for your version
+ to find out what those are.
+ type: string
+ include:
+ description: Extra git repositories to map into the repository
+ items:
+ description: GitRepositoryInclude defines a source with a from and
+ to path.
+ properties:
+ fromPath:
+ description: The path to copy contents from, defaults to the
+ root directory.
+ type: string
+ repository:
+ description: Reference to a GitRepository to include.
+ properties:
+ name:
+ description: Name of the referent.
+ type: string
+ required:
+ - name
+ type: object
+ toPath:
+ description: The path to copy contents to, defaults to the name
+ of the source ref.
+ type: string
+ required:
+ - repository
+ type: object
+ type: array
+ interval:
+ description: The interval at which to check for repository updates.
+ type: string
+ recurseSubmodules:
+ description: When enabled, after the clone is created, initializes
+ all submodules within, using their default settings. This option
+ is available only when using the 'go-git' GitImplementation.
+ type: boolean
+ ref:
+ description: The Git reference to checkout and monitor for changes,
+ defaults to master branch.
+ properties:
+ branch:
+ description: The Git branch to checkout, defaults to master.
+ type: string
+ commit:
+ description: The Git commit SHA to checkout, if specified Tag
+ filters will be ignored.
+ type: string
+ semver:
+ description: The Git tag semver expression, takes precedence over
+ Tag.
+ type: string
+ tag:
+ description: The Git tag to checkout, takes precedence over Branch.
+ type: string
+ type: object
+ secretRef:
+ description: The secret name containing the Git credentials. For HTTPS
+ repositories the secret must contain username and password fields.
+ For SSH repositories the secret must contain identity and known_hosts
+ fields.
+ properties:
+ name:
+ description: Name of the referent.
+ type: string
+ required:
+ - name
+ type: object
+ suspend:
+ description: This flag tells the controller to suspend the reconciliation
+ of this source.
+ type: boolean
+ timeout:
+ default: 60s
+ description: The timeout for remote Git operations like cloning, defaults
+ to 60s.
+ type: string
+ url:
+ description: The repository URL, can be a HTTP/S or SSH address.
+ pattern: ^(http|https|ssh)://
+ type: string
+ verify:
+ description: Verify OpenPGP signature for the Git commit HEAD points
+ to.
+ properties:
+ mode:
+ description: Mode describes what git object should be verified,
+ currently ('head').
+ enum:
+ - head
+ type: string
+ secretRef:
+ description: The secret name containing the public keys of all
+ trusted Git authors.
+ properties:
+ name:
+ description: Name of the referent.
+ type: string
+ required:
+ - name
+ type: object
+ required:
+ - mode
+ type: object
+ required:
+ - interval
+ - url
+ type: object
+ status:
+ default:
+ observedGeneration: -1
+ description: GitRepositoryStatus defines the observed state of a Git repository.
+ properties:
+ artifact:
+ description: Artifact represents the output of the last successful
+ repository sync.
+ properties:
+ checksum:
+ description: Checksum is the SHA256 checksum of the artifact.
+ type: string
+ lastUpdateTime:
+ description: LastUpdateTime is the timestamp corresponding to
+ the last update of this artifact.
+ format: date-time
+ type: string
+ path:
+ description: Path is the relative file path of this artifact.
+ type: string
+ revision:
+ description: Revision is a human readable identifier traceable
+ in the origin source system. It can be a Git commit SHA, Git
+ tag, a Helm index timestamp, a Helm chart version, etc.
+ type: string
+ url:
+ description: URL is the HTTP address of this artifact.
+ type: string
+ required:
+ - path
+ - url
+ type: object
+ conditions:
+ description: Conditions holds the conditions for the GitRepository.
+ items:
+ description: "Condition contains details for one aspect of the current
+ state of this API Resource. --- This struct is intended for direct
+ use as an array at the field path .status.conditions. For example,
+ type FooStatus struct{ // Represents the observations of a
+ foo's current state. // Known .status.conditions.type are:
+ \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type
+ \ // +patchStrategy=merge // +listType=map // +listMapKey=type
+ \ Conditions []metav1.Condition `json:\"conditions,omitempty\"
+ patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
+ \n // other fields }"
+ properties:
+ lastTransitionTime:
+ description: lastTransitionTime is the last time the condition
+ transitioned from one status to another. This should be when
+ the underlying condition changed. If that is not known, then
+ using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: message is a human readable message indicating
+ details about the transition. This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: observedGeneration represents the .metadata.generation
+ that the condition was set based upon. For instance, if .metadata.generation
+ is currently 12, but the .status.conditions[x].observedGeneration
+ is 9, the condition is out of date with respect to the current
+ state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: reason contains a programmatic identifier indicating
+ the reason for the condition's last transition. Producers
+ of specific condition types may define expected values and
+ meanings for this field, and whether the values are considered
+ a guaranteed API. The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ --- Many .condition.type values are consistent across resources
+ like Available, but because arbitrary conditions can be useful
+ (see .node.status.conditions), the ability to deconflict is
+ important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ includedArtifacts:
+ description: IncludedArtifacts represents the included artifacts from
+ the last successful repository sync.
+ items:
+ description: Artifact represents the output of a source synchronisation.
+ properties:
+ checksum:
+ description: Checksum is the SHA256 checksum of the artifact.
+ type: string
+ lastUpdateTime:
+ description: LastUpdateTime is the timestamp corresponding to
+ the last update of this artifact.
+ format: date-time
+ type: string
+ path:
+ description: Path is the relative file path of this artifact.
+ type: string
+ revision:
+ description: Revision is a human readable identifier traceable
+ in the origin source system. It can be a Git commit SHA, Git
+ tag, a Helm index timestamp, a Helm chart version, etc.
+ type: string
+ url:
+ description: URL is the HTTP address of this artifact.
+ type: string
+ required:
+ - path
+ - url
+ type: object
+ type: array
+ lastHandledReconcileAt:
+ description: LastHandledReconcileAt holds the value of the most recent
+ reconcile request value, so a change of the annotation value can
+ be detected.
+ type: string
+ observedGeneration:
+ description: ObservedGeneration is the last observed generation.
+ format: int64
+ type: integer
+ url:
+ description: URL is the download link for the artifact output of the
+ last repository sync.
+ type: string
+ type: object
+ type: object
+ served: true
+ storage: false
+ subresources:
+ status: {}
+ - additionalPrinterColumns:
+ - jsonPath: .spec.url
+ name: URL
+ type: string
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ - jsonPath: .status.conditions[?(@.type=="Ready")].status
+ name: Ready
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Ready")].message
+ name: Status
+ type: string
+ name: v1beta2
+ schema:
+ openAPIV3Schema:
+ description: GitRepository is the Schema for the gitrepositories API.
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: GitRepositorySpec specifies the required configuration to
+ produce an Artifact for a Git repository.
+ properties:
+ accessFrom:
+ description: 'AccessFrom specifies an Access Control List for allowing
+ cross-namespace references to this object. NOTE: Not implemented,
+ provisional as of https://github.com/fluxcd/flux2/pull/2092'
+ properties:
+ namespaceSelectors:
+ description: NamespaceSelectors is the list of namespace selectors
+ to which this ACL applies. Items in this list are evaluated
+ using a logical OR operation.
+ items:
+ description: NamespaceSelector selects the namespaces to which
+ this ACL applies. An empty map of MatchLabels matches all
+ namespaces in a cluster.
+ properties:
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: MatchLabels is a map of {key,value} pairs.
+ A single {key,value} in the matchLabels map is equivalent
+ to an element of matchExpressions, whose key field is
+ "key", the operator is "In", and the values array contains
+ only "value". The requirements are ANDed.
+ type: object
+ type: object
+ type: array
+ required:
+ - namespaceSelectors
+ type: object
+ gitImplementation:
+ default: go-git
+ description: GitImplementation specifies which Git client library
+ implementation to use. Defaults to 'go-git', valid values are ('go-git',
+ 'libgit2').
+ enum:
+ - go-git
+ - libgit2
+ type: string
+ ignore:
+ description: Ignore overrides the set of excluded patterns in the
+ .sourceignore format (which is the same as .gitignore). If not provided,
+ a default will be used, consult the documentation for your version
+ to find out what those are.
+ type: string
+ include:
+ description: Include specifies a list of GitRepository resources which
+ Artifacts should be included in the Artifact produced for this GitRepository.
+ items:
+ description: GitRepositoryInclude specifies a local reference to
+ a GitRepository which Artifact (sub-)contents must be included,
+ and where they should be placed.
+ properties:
+ fromPath:
+ description: FromPath specifies the path to copy contents from,
+ defaults to the root of the Artifact.
+ type: string
+ repository:
+ description: GitRepositoryRef specifies the GitRepository which
+ Artifact contents must be included.
+ properties:
+ name:
+ description: Name of the referent.
+ type: string
+ required:
+ - name
+ type: object
+ toPath:
+ description: ToPath specifies the path to copy contents to,
+ defaults to the name of the GitRepositoryRef.
+ type: string
+ required:
+ - repository
+ type: object
+ type: array
+ interval:
+ description: Interval at which to check the GitRepository for updates.
+ type: string
+ recurseSubmodules:
+ description: RecurseSubmodules enables the initialization of all submodules
+ within the GitRepository as cloned from the URL, using their default
+ settings. This option is available only when using the 'go-git'
+ GitImplementation.
+ type: boolean
+ ref:
+ description: Reference specifies the Git reference to resolve and
+ monitor for changes, defaults to the 'master' branch.
+ properties:
+ branch:
+ description: "Branch to check out, defaults to 'master' if no
+ other field is defined. \n When GitRepositorySpec.GitImplementation
+ is set to 'go-git', a shallow clone of the specified branch
+ is performed."
+ type: string
+ commit:
+ description: "Commit SHA to check out, takes precedence over all
+ reference fields. \n When GitRepositorySpec.GitImplementation
+ is set to 'go-git', this can be combined with Branch to shallow
+ clone the branch, in which the commit is expected to exist."
+ type: string
+ semver:
+ description: SemVer tag expression to check out, takes precedence
+ over Tag.
+ type: string
+ tag:
+ description: Tag to check out, takes precedence over Branch.
+ type: string
+ type: object
+ secretRef:
+ description: SecretRef specifies the Secret containing authentication
+ credentials for the GitRepository. For HTTPS repositories the Secret
+ must contain 'username' and 'password' fields. For SSH repositories
+ the Secret must contain 'identity' and 'known_hosts' fields.
+ properties:
+ name:
+ description: Name of the referent.
+ type: string
+ required:
+ - name
+ type: object
+ suspend:
+ description: Suspend tells the controller to suspend the reconciliation
+ of this GitRepository.
+ type: boolean
+ timeout:
+ default: 60s
+ description: Timeout for Git operations like cloning, defaults to
+ 60s.
+ type: string
+ url:
+ description: URL specifies the Git repository URL, it can be an HTTP/S
+ or SSH address.
+ pattern: ^(http|https|ssh)://
+ type: string
+ verify:
+ description: Verification specifies the configuration to verify the
+ Git commit signature(s).
+ properties:
+ mode:
+ description: Mode specifies what Git object should be verified,
+ currently ('head').
+ enum:
+ - head
+ type: string
+ secretRef:
+ description: SecretRef specifies the Secret containing the public
+ keys of trusted Git authors.
+ properties:
+ name:
+ description: Name of the referent.
+ type: string
+ required:
+ - name
+ type: object
+ required:
+ - mode
+ type: object
+ required:
+ - interval
+ - url
+ type: object
+ status:
+ default:
+ observedGeneration: -1
+ description: GitRepositoryStatus records the observed state of a Git repository.
+ properties:
+ artifact:
+ description: Artifact represents the last successful GitRepository
+ reconciliation.
+ properties:
+ checksum:
+ description: Checksum is the SHA256 checksum of the Artifact file.
+ type: string
+ lastUpdateTime:
+ description: LastUpdateTime is the timestamp corresponding to
+ the last update of the Artifact.
+ format: date-time
+ type: string
+ path:
+ description: Path is the relative file path of the Artifact. It
+ can be used to locate the file in the root of the Artifact storage
+ on the local file system of the controller managing the Source.
+ type: string
+ revision:
+ description: Revision is a human-readable identifier traceable
+ in the origin source system. It can be a Git commit SHA, Git
+ tag, a Helm chart version, etc.
+ type: string
+ size:
+ description: Size is the number of bytes in the file.
+ format: int64
+ type: integer
+ url:
+ description: URL is the HTTP address of the Artifact as exposed
+ by the controller managing the Source. It can be used to retrieve
+ the Artifact for consumption, e.g. by another controller applying
+ the Artifact contents.
+ type: string
+ required:
+ - path
+ - url
+ type: object
+ conditions:
+ description: Conditions holds the conditions for the GitRepository.
+ items:
+ description: "Condition contains details for one aspect of the current
+ state of this API Resource. --- This struct is intended for direct
+ use as an array at the field path .status.conditions. For example,
+ type FooStatus struct{ // Represents the observations of a
+ foo's current state. // Known .status.conditions.type are:
+ \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type
+ \ // +patchStrategy=merge // +listType=map // +listMapKey=type
+ \ Conditions []metav1.Condition `json:\"conditions,omitempty\"
+ patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
+ \n // other fields }"
+ properties:
+ lastTransitionTime:
+ description: lastTransitionTime is the last time the condition
+ transitioned from one status to another. This should be when
+ the underlying condition changed. If that is not known, then
+ using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: message is a human readable message indicating
+ details about the transition. This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: observedGeneration represents the .metadata.generation
+ that the condition was set based upon. For instance, if .metadata.generation
+ is currently 12, but the .status.conditions[x].observedGeneration
+ is 9, the condition is out of date with respect to the current
+ state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: reason contains a programmatic identifier indicating
+ the reason for the condition's last transition. Producers
+ of specific condition types may define expected values and
+ meanings for this field, and whether the values are considered
+ a guaranteed API. The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ --- Many .condition.type values are consistent across resources
+ like Available, but because arbitrary conditions can be useful
+ (see .node.status.conditions), the ability to deconflict is
+ important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ contentConfigChecksum:
+ description: 'ContentConfigChecksum is a checksum of all the configurations
+ related to the content of the source artifact: - .spec.ignore -
+ .spec.recurseSubmodules - .spec.included and the checksum of the
+ included artifacts observed in .status.observedGeneration version
+ of the object. This can be used to determine if the content of the
+ included repository has changed. It has the format of `<algo>:<checksum>`,
+ for example: `sha256:<checksum>`.'
+ type: string
+ includedArtifacts:
+ description: IncludedArtifacts contains a list of the last successfully
+ included Artifacts as instructed by GitRepositorySpec.Include.
+ items:
+ description: Artifact represents the output of a Source reconciliation.
+ properties:
+ checksum:
+ description: Checksum is the SHA256 checksum of the Artifact
+ file.
+ type: string
+ lastUpdateTime:
+ description: LastUpdateTime is the timestamp corresponding to
+ the last update of the Artifact.
+ format: date-time
+ type: string
+ path:
+ description: Path is the relative file path of the Artifact.
+ It can be used to locate the file in the root of the Artifact
+ storage on the local file system of the controller managing
+ the Source.
+ type: string
+ revision:
+ description: Revision is a human-readable identifier traceable
+ in the origin source system. It can be a Git commit SHA, Git
+ tag, a Helm chart version, etc.
+ type: string
+ size:
+ description: Size is the number of bytes in the file.
+ format: int64
+ type: integer
+ url:
+ description: URL is the HTTP address of the Artifact as exposed
+ by the controller managing the Source. It can be used to retrieve
+ the Artifact for consumption, e.g. by another controller applying
+ the Artifact contents.
+ type: string
+ required:
+ - path
+ - url
+ type: object
+ type: array
+ lastHandledReconcileAt:
+ description: LastHandledReconcileAt holds the value of the most recent
+ reconcile request value, so a change of the annotation value can
+ be detected.
+ type: string
+ observedGeneration:
+ description: ObservedGeneration is the last observed generation of
+ the GitRepository object.
+ format: int64
+ type: integer
+ url:
+ description: URL is the dynamic fetch link for the latest Artifact.
+ It is provided on a "best effort" basis, and using the precise GitRepositoryStatus.Artifact
+ data is recommended.
+ type: string
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.7.0
+ creationTimestamp: null
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ name: helmcharts.source.toolkit.fluxcd.io
+spec:
+ group: source.toolkit.fluxcd.io
+ names:
+ kind: HelmChart
+ listKind: HelmChartList
+ plural: helmcharts
+ shortNames:
+ - hc
+ singular: helmchart
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .spec.chart
+ name: Chart
+ type: string
+ - jsonPath: .spec.version
+ name: Version
+ type: string
+ - jsonPath: .spec.sourceRef.kind
+ name: Source Kind
+ type: string
+ - jsonPath: .spec.sourceRef.name
+ name: Source Name
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Ready")].status
+ name: Ready
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Ready")].message
+ name: Status
+ type: string
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ name: v1beta1
+ schema:
+ openAPIV3Schema:
+ description: HelmChart is the Schema for the helmcharts API
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: HelmChartSpec defines the desired state of a Helm chart.
+ properties:
+ accessFrom:
+ description: AccessFrom defines an Access Control List for allowing
+ cross-namespace references to this object.
+ properties:
+ namespaceSelectors:
+ description: NamespaceSelectors is the list of namespace selectors
+ to which this ACL applies. Items in this list are evaluated
+ using a logical OR operation.
+ items:
+ description: NamespaceSelector selects the namespaces to which
+ this ACL applies. An empty map of MatchLabels matches all
+ namespaces in a cluster.
+ properties:
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: MatchLabels is a map of {key,value} pairs.
+ A single {key,value} in the matchLabels map is equivalent
+ to an element of matchExpressions, whose key field is
+ "key", the operator is "In", and the values array contains
+ only "value". The requirements are ANDed.
+ type: object
+ type: object
+ type: array
+ required:
+ - namespaceSelectors
+ type: object
+ chart:
+ description: The name or path the Helm chart is available at in the
+ SourceRef.
+ type: string
+ interval:
+ description: The interval at which to check the Source for updates.
+ type: string
+ reconcileStrategy:
+ default: ChartVersion
+ description: Determines what enables the creation of a new artifact.
+ Valid values are ('ChartVersion', 'Revision'). See the documentation
+ of the values for an explanation on their behavior. Defaults to
+ ChartVersion when omitted.
+ enum:
+ - ChartVersion
+ - Revision
+ type: string
+ sourceRef:
+ description: The reference to the Source the chart is available at.
+ properties:
+ apiVersion:
+ description: APIVersion of the referent.
+ type: string
+ kind:
+ description: Kind of the referent, valid values are ('HelmRepository',
+ 'GitRepository', 'Bucket').
+ enum:
+ - HelmRepository
+ - GitRepository
+ - Bucket
+ type: string
+ name:
+ description: Name of the referent.
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ suspend:
+ description: This flag tells the controller to suspend the reconciliation
+ of this source.
+ type: boolean
+ valuesFile:
+ description: Alternative values file to use as the default chart values,
+ expected to be a relative path in the SourceRef. Deprecated in favor
+ of ValuesFiles, for backwards compatibility the file defined here
+ is merged before the ValuesFiles items. Ignored when omitted.
+ type: string
+ valuesFiles:
+ description: Alternative list of values files to use as the chart
+ values (values.yaml is not included by default), expected to be
+ a relative path in the SourceRef. Values files are merged in the
+ order of this list with the last file overriding the first. Ignored
+ when omitted.
+ items:
+ type: string
+ type: array
+ version:
+ default: '*'
+ description: The chart version semver expression, ignored for charts
+ from GitRepository and Bucket sources. Defaults to latest when omitted.
+ type: string
+ required:
+ - chart
+ - interval
+ - sourceRef
+ type: object
+ status:
+ default:
+ observedGeneration: -1
+ description: HelmChartStatus defines the observed state of the HelmChart.
+ properties:
+ artifact:
+ description: Artifact represents the output of the last successful
+ chart sync.
+ properties:
+ checksum:
+ description: Checksum is the SHA256 checksum of the artifact.
+ type: string
+ lastUpdateTime:
+ description: LastUpdateTime is the timestamp corresponding to
+ the last update of this artifact.
+ format: date-time
+ type: string
+ path:
+ description: Path is the relative file path of this artifact.
+ type: string
+ revision:
+ description: Revision is a human readable identifier traceable
+ in the origin source system. It can be a Git commit SHA, Git
+ tag, a Helm index timestamp, a Helm chart version, etc.
+ type: string
+ url:
+ description: URL is the HTTP address of this artifact.
+ type: string
+ required:
+ - path
+ - url
+ type: object
+ conditions:
+ description: Conditions holds the conditions for the HelmChart.
+ items:
+ description: "Condition contains details for one aspect of the current
+ state of this API Resource. --- This struct is intended for direct
+ use as an array at the field path .status.conditions. For example,
+ type FooStatus struct{ // Represents the observations of a
+ foo's current state. // Known .status.conditions.type are:
+ \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type
+ \ // +patchStrategy=merge // +listType=map // +listMapKey=type
+ \ Conditions []metav1.Condition `json:\"conditions,omitempty\"
+ patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
+ \n // other fields }"
+ properties:
+ lastTransitionTime:
+ description: lastTransitionTime is the last time the condition
+ transitioned from one status to another. This should be when
+ the underlying condition changed. If that is not known, then
+ using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: message is a human readable message indicating
+ details about the transition. This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: observedGeneration represents the .metadata.generation
+ that the condition was set based upon. For instance, if .metadata.generation
+ is currently 12, but the .status.conditions[x].observedGeneration
+ is 9, the condition is out of date with respect to the current
+ state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: reason contains a programmatic identifier indicating
+ the reason for the condition's last transition. Producers
+ of specific condition types may define expected values and
+ meanings for this field, and whether the values are considered
+ a guaranteed API. The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ --- Many .condition.type values are consistent across resources
+ like Available, but because arbitrary conditions can be useful
+ (see .node.status.conditions), the ability to deconflict is
+ important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ lastHandledReconcileAt:
+ description: LastHandledReconcileAt holds the value of the most recent
+ reconcile request value, so a change of the annotation value can
+ be detected.
+ type: string
+ observedGeneration:
+ description: ObservedGeneration is the last observed generation.
+ format: int64
+ type: integer
+ url:
+ description: URL is the download link for the last chart pulled.
+ type: string
+ type: object
+ type: object
+ served: true
+ storage: false
+ subresources:
+ status: {}
+ - additionalPrinterColumns:
+ - jsonPath: .spec.chart
+ name: Chart
+ type: string
+ - jsonPath: .spec.version
+ name: Version
+ type: string
+ - jsonPath: .spec.sourceRef.kind
+ name: Source Kind
+ type: string
+ - jsonPath: .spec.sourceRef.name
+ name: Source Name
+ type: string
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ - jsonPath: .status.conditions[?(@.type=="Ready")].status
+ name: Ready
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Ready")].message
+ name: Status
+ type: string
+ name: v1beta2
+ schema:
+ openAPIV3Schema:
+ description: HelmChart is the Schema for the helmcharts API.
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: HelmChartSpec specifies the desired state of a Helm chart.
+ properties:
+ accessFrom:
+ description: 'AccessFrom specifies an Access Control List for allowing
+ cross-namespace references to this object. NOTE: Not implemented,
+ provisional as of https://github.com/fluxcd/flux2/pull/2092'
+ properties:
+ namespaceSelectors:
+ description: NamespaceSelectors is the list of namespace selectors
+ to which this ACL applies. Items in this list are evaluated
+ using a logical OR operation.
+ items:
+ description: NamespaceSelector selects the namespaces to which
+ this ACL applies. An empty map of MatchLabels matches all
+ namespaces in a cluster.
+ properties:
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: MatchLabels is a map of {key,value} pairs.
+ A single {key,value} in the matchLabels map is equivalent
+ to an element of matchExpressions, whose key field is
+ "key", the operator is "In", and the values array contains
+ only "value". The requirements are ANDed.
+ type: object
+ type: object
+ type: array
+ required:
+ - namespaceSelectors
+ type: object
+ chart:
+ description: Chart is the name or path the Helm chart is available
+ at in the SourceRef.
+ type: string
+ interval:
+ description: Interval is the interval at which to check the Source
+ for updates.
+ type: string
+ reconcileStrategy:
+ default: ChartVersion
+ description: ReconcileStrategy determines what enables the creation
+ of a new artifact. Valid values are ('ChartVersion', 'Revision').
+ See the documentation of the values for an explanation on their
+ behavior. Defaults to ChartVersion when omitted.
+ enum:
+ - ChartVersion
+ - Revision
+ type: string
+ sourceRef:
+ description: SourceRef is the reference to the Source the chart is
+ available at.
+ properties:
+ apiVersion:
+ description: APIVersion of the referent.
+ type: string
+ kind:
+ description: Kind of the referent, valid values are ('HelmRepository',
+ 'GitRepository', 'Bucket').
+ enum:
+ - HelmRepository
+ - GitRepository
+ - Bucket
+ type: string
+ name:
+ description: Name of the referent.
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ suspend:
+ description: Suspend tells the controller to suspend the reconciliation
+ of this source.
+ type: boolean
+ valuesFile:
+ description: ValuesFile is an alternative values file to use as the
+ default chart values, expected to be a relative path in the SourceRef.
+ Deprecated in favor of ValuesFiles, for backwards compatibility
+ the file specified here is merged before the ValuesFiles items.
+ Ignored when omitted.
+ type: string
+ valuesFiles:
+ description: ValuesFiles is an alternative list of values files to
+ use as the chart values (values.yaml is not included by default),
+ expected to be a relative path in the SourceRef. Values files are
+ merged in the order of this list with the last file overriding the
+ first. Ignored when omitted.
+ items:
+ type: string
+ type: array
+ version:
+ default: '*'
+ description: Version is the chart version semver expression, ignored
+ for charts from GitRepository and Bucket sources. Defaults to latest
+ when omitted.
+ type: string
+ required:
+ - chart
+ - interval
+ - sourceRef
+ type: object
+ status:
+ default:
+ observedGeneration: -1
+ description: HelmChartStatus records the observed state of the HelmChart.
+ properties:
+ artifact:
+ description: Artifact represents the output of the last successful
+ reconciliation.
+ properties:
+ checksum:
+ description: Checksum is the SHA256 checksum of the Artifact file.
+ type: string
+ lastUpdateTime:
+ description: LastUpdateTime is the timestamp corresponding to
+ the last update of the Artifact.
+ format: date-time
+ type: string
+ path:
+ description: Path is the relative file path of the Artifact. It
+ can be used to locate the file in the root of the Artifact storage
+ on the local file system of the controller managing the Source.
+ type: string
+ revision:
+ description: Revision is a human-readable identifier traceable
+ in the origin source system. It can be a Git commit SHA, Git
+ tag, a Helm chart version, etc.
+ type: string
+ size:
+ description: Size is the number of bytes in the file.
+ format: int64
+ type: integer
+ url:
+ description: URL is the HTTP address of the Artifact as exposed
+ by the controller managing the Source. It can be used to retrieve
+ the Artifact for consumption, e.g. by another controller applying
+ the Artifact contents.
+ type: string
+ required:
+ - path
+ - url
+ type: object
+ conditions:
+ description: Conditions holds the conditions for the HelmChart.
+ items:
+ description: "Condition contains details for one aspect of the current
+ state of this API Resource. --- This struct is intended for direct
+ use as an array at the field path .status.conditions. For example,
+ type FooStatus struct{ // Represents the observations of a
+ foo's current state. // Known .status.conditions.type are:
+ \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type
+ \ // +patchStrategy=merge // +listType=map // +listMapKey=type
+ \ Conditions []metav1.Condition `json:\"conditions,omitempty\"
+ patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
+ \n // other fields }"
+ properties:
+ lastTransitionTime:
+ description: lastTransitionTime is the last time the condition
+ transitioned from one status to another. This should be when
+ the underlying condition changed. If that is not known, then
+ using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: message is a human readable message indicating
+ details about the transition. This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: observedGeneration represents the .metadata.generation
+ that the condition was set based upon. For instance, if .metadata.generation
+ is currently 12, but the .status.conditions[x].observedGeneration
+ is 9, the condition is out of date with respect to the current
+ state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: reason contains a programmatic identifier indicating
+ the reason for the condition's last transition. Producers
+ of specific condition types may define expected values and
+ meanings for this field, and whether the values are considered
+ a guaranteed API. The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ --- Many .condition.type values are consistent across resources
+ like Available, but because arbitrary conditions can be useful
+ (see .node.status.conditions), the ability to deconflict is
+ important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ lastHandledReconcileAt:
+ description: LastHandledReconcileAt holds the value of the most recent
+ reconcile request value, so a change of the annotation value can
+ be detected.
+ type: string
+ observedChartName:
+ description: ObservedChartName is the last observed chart name as
+ specified by the resolved chart reference.
+ type: string
+ observedGeneration:
+ description: ObservedGeneration is the last observed generation of
+ the HelmChart object.
+ format: int64
+ type: integer
+ observedSourceArtifactRevision:
+ description: ObservedSourceArtifactRevision is the last observed Artifact.Revision
+ of the HelmChartSpec.SourceRef.
+ type: string
+ url:
+ description: URL is the dynamic fetch link for the latest Artifact.
+ It is provided on a "best effort" basis, and using the precise BucketStatus.Artifact
+ data is recommended.
+ type: string
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.7.0
+ creationTimestamp: null
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ name: helmreleases.helm.toolkit.fluxcd.io
+spec:
+ group: helm.toolkit.fluxcd.io
+ names:
+ kind: HelmRelease
+ listKind: HelmReleaseList
+ plural: helmreleases
+ shortNames:
+ - hr
+ singular: helmrelease
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ - jsonPath: .status.conditions[?(@.type=="Ready")].status
+ name: Ready
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Ready")].message
+ name: Status
+ type: string
+ name: v2beta1
+ schema:
+ openAPIV3Schema:
+ description: HelmRelease is the Schema for the helmreleases API
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: HelmReleaseSpec defines the desired state of a Helm release.
+ properties:
+ chart:
+ description: Chart defines the template of the v1beta2.HelmChart that
+ should be created for this HelmRelease.
+ properties:
+ spec:
+ description: Spec holds the template for the v1beta2.HelmChartSpec
+ for this HelmRelease.
+ properties:
+ chart:
+ description: The name or path the Helm chart is available
+ at in the SourceRef.
+ type: string
+ interval:
+ description: Interval at which to check the v1beta2.Source
+ for updates. Defaults to 'HelmReleaseSpec.Interval'.
+ type: string
+ reconcileStrategy:
+ default: ChartVersion
+ description: Determines what enables the creation of a new
+ artifact. Valid values are ('ChartVersion', 'Revision').
+ See the documentation of the values for an explanation on
+ their behavior. Defaults to ChartVersion when omitted.
+ enum:
+ - ChartVersion
+ - Revision
+ type: string
+ sourceRef:
+ description: The name and namespace of the v1beta2.Source
+ the chart is available at.
+ properties:
+ apiVersion:
+ description: APIVersion of the referent.
+ type: string
+ kind:
+ description: Kind of the referent.
+ enum:
+ - HelmRepository
+ - GitRepository
+ - Bucket
+ type: string
+ name:
+ description: Name of the referent.
+ maxLength: 253
+ minLength: 1
+ type: string
+ namespace:
+ description: Namespace of the referent.
+ maxLength: 63
+ minLength: 1
+ type: string
+ required:
+ - name
+ type: object
+ valuesFile:
+ description: Alternative values file to use as the default
+ chart values, expected to be a relative path in the SourceRef.
+ Deprecated in favor of ValuesFiles, for backwards compatibility
+ the file defined here is merged before the ValuesFiles items.
+ Ignored when omitted.
+ type: string
+ valuesFiles:
+ description: Alternative list of values files to use as the
+ chart values (values.yaml is not included by default), expected
+ to be a relative path in the SourceRef. Values files are
+ merged in the order of this list with the last file overriding
+ the first. Ignored when omitted.
+ items:
+ type: string
+ type: array
+ version:
+ default: '*'
+ description: Version semver expression, ignored for charts
+ from v1beta2.GitRepository and v1beta2.Bucket sources. Defaults
+ to latest when omitted.
+ type: string
+ required:
+ - chart
+ - sourceRef
+ type: object
+ required:
+ - spec
+ type: object
+ dependsOn:
+ description: DependsOn may contain a meta.NamespacedObjectReference
+ slice with references to HelmRelease resources that must be ready
+ before this HelmRelease can be reconciled.
+ items:
+ description: NamespacedObjectReference contains enough information
+ to locate the referenced Kubernetes resource object in any namespace.
+ properties:
+ name:
+ description: Name of the referent.
+ type: string
+ namespace:
+ description: Namespace of the referent, when not specified it
+ acts as LocalObjectReference.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ install:
+ description: Install holds the configuration for Helm install actions
+ for this HelmRelease.
+ properties:
+ crds:
+ description: "CRDs upgrade CRDs from the Helm Chart's crds directory
+ according to the CRD upgrade policy provided here. Valid values
+ are `Skip`, `Create` or `CreateReplace`. Default is `Create`
+ and if omitted CRDs are installed but not updated. \n Skip:
+ do neither install nor replace (update) any CRDs. \n Create:
+ new CRDs are created, existing CRDs are neither updated nor
+ deleted. \n CreateReplace: new CRDs are created, existing CRDs
+ are updated (replaced) but not deleted. \n By default, CRDs
+ are applied (installed) during Helm install action. With this
+ option users can opt-in to CRD replace existing CRDs on Helm
+ install actions, which is not (yet) natively supported by Helm.
+ https://helm.sh/docs/chart_best_practices/custom_resource_definitions."
+ enum:
+ - Skip
+ - Create
+ - CreateReplace
+ type: string
+ createNamespace:
+ description: CreateNamespace tells the Helm install action to
+ create the HelmReleaseSpec.TargetNamespace if it does not exist
+ yet. On uninstall, the namespace will not be garbage collected.
+ type: boolean
+ disableHooks:
+ description: DisableHooks prevents hooks from running during the
+ Helm install action.
+ type: boolean
+ disableOpenAPIValidation:
+ description: DisableOpenAPIValidation prevents the Helm install
+ action from validating rendered templates against the Kubernetes
+ OpenAPI Schema.
+ type: boolean
+ disableWait:
+ description: DisableWait disables the waiting for resources to
+ be ready after a Helm install has been performed.
+ type: boolean
+ disableWaitForJobs:
+ description: DisableWaitForJobs disables waiting for jobs to complete
+ after a Helm install has been performed.
+ type: boolean
+ remediation:
+ description: Remediation holds the remediation configuration for
+ when the Helm install action for the HelmRelease fails. The
+ default is to not perform any action.
+ properties:
+ ignoreTestFailures:
+ description: IgnoreTestFailures tells the controller to skip
+ remediation when the Helm tests are run after an install
+ action but fail. Defaults to 'Test.IgnoreFailures'.
+ type: boolean
+ remediateLastFailure:
+ description: RemediateLastFailure tells the controller to
+ remediate the last failure, when no retries remain. Defaults
+ to 'false'.
+ type: boolean
+ retries:
+ description: Retries is the number of retries that should
+ be attempted on failures before bailing. Remediation, using
+ an uninstall, is performed between each attempt. Defaults
+ to '0', a negative integer equals to unlimited retries.
+ type: integer
+ type: object
+ replace:
+ description: Replace tells the Helm install action to re-use the
+ 'ReleaseName', but only if that name is a deleted release which
+ remains in the history.
+ type: boolean
+ skipCRDs:
+ description: "SkipCRDs tells the Helm install action to not install
+ any CRDs. By default, CRDs are installed if not already present.
+ \n Deprecated use CRD policy (`crds`) attribute with value `Skip`
+ instead."
+ type: boolean
+ timeout:
+ description: Timeout is the time to wait for any individual Kubernetes
+ operation (like Jobs for hooks) during the performance of a
+ Helm install action. Defaults to 'HelmReleaseSpec.Timeout'.
+ type: string
+ type: object
+ interval:
+ description: Interval at which to reconcile the Helm release.
+ type: string
+ kubeConfig:
+ description: KubeConfig for reconciling the HelmRelease on a remote
+ cluster. When used in combination with HelmReleaseSpec.ServiceAccountName,
+ forces the controller to act on behalf of that Service Account at
+ the target cluster. If the --default-service-account flag is set,
+ its value will be used as a controller level fallback for when HelmReleaseSpec.ServiceAccountName
+ is empty.
+ properties:
+ secretRef:
+ description: SecretRef holds the name to a secret that contains
+ a key with the kubeconfig file as the value. If no key is specified
+ the key will default to 'value'. The secret must be in the same
+ namespace as the HelmRelease. It is recommended that the kubeconfig
+ is self-contained, and the secret is regularly updated if credentials
+ such as a cloud-access-token expire. Cloud specific `cmd-path`
+ auth helpers will not function without adding binaries and credentials
+ to the Pod that is responsible for reconciling the HelmRelease.
+ properties:
+ key:
+ description: Key in the Secret, when not specified an implementation-specific
+ default key is used.
+ type: string
+ name:
+ description: Name of the Secret.
+ type: string
+ required:
+ - name
+ type: object
+ type: object
+ maxHistory:
+ description: MaxHistory is the number of revisions saved by Helm for
+ this HelmRelease. Use '0' for an unlimited number of revisions;
+ defaults to '10'.
+ type: integer
+ postRenderers:
+ description: PostRenderers holds an array of Helm PostRenderers, which
+ will be applied in order of their definition.
+ items:
+ description: PostRenderer contains a Helm PostRenderer specification.
+ properties:
+ kustomize:
+ description: Kustomization to apply as PostRenderer.
+ properties:
+ images:
+ description: Images is a list of (image name, new name,
+ new tag or digest) for changing image names, tags or digests.
+ This can also be achieved with a patch, but this operator
+ is simpler to specify.
+ items:
+ description: Image contains an image name, a new name,
+ a new tag or digest, which will replace the original
+ name and tag.
+ properties:
+ digest:
+ description: Digest is the value used to replace the
+ original image tag. If digest is present NewTag
+ value is ignored.
+ type: string
+ name:
+ description: Name is a tag-less image name.
+ type: string
+ newName:
+ description: NewName is the value used to replace
+ the original name.
+ type: string
+ newTag:
+ description: NewTag is the value used to replace the
+ original tag.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ patches:
+ description: Strategic merge and JSON patches, defined as
+ inline YAML objects, capable of targeting objects based
+ on kind, label and annotation selectors.
+ items:
+ description: Patch contains an inline StrategicMerge or
+ JSON6902 patch, and the target the patch should be applied
+ to.
+ properties:
+ patch:
+ description: Patch contains an inline StrategicMerge
+ patch or an inline JSON6902 patch with an array
+ of operation objects.
+ type: string
+ target:
+ description: Target points to the resources that the
+ patch document should be applied to.
+ properties:
+ annotationSelector:
+ description: AnnotationSelector is a string that
+ follows the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
+ It matches with the resource annotations.
+ type: string
+ group:
+ description: Group is the API group to select
+ resources from. Together with Version and Kind
+ it is capable of unambiguously identifying and/or
+ selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
+ type: string
+ kind:
+ description: Kind of the API Group to select resources
+ from. Together with Group and Version it is
+ capable of unambiguously identifying and/or
+ selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
+ type: string
+ labelSelector:
+ description: LabelSelector is a string that follows
+ the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
+ It matches with the resource labels.
+ type: string
+ name:
+ description: Name to match resources with.
+ type: string
+ namespace:
+ description: Namespace to select resources from.
+ type: string
+ version:
+ description: Version of the API Group to select
+ resources from. Together with Group and Kind
+ it is capable of unambiguously identifying and/or
+ selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
+ type: string
+ type: object
+ type: object
+ type: array
+ patchesJson6902:
+ description: JSON 6902 patches, defined as inline YAML objects.
+ items:
+ description: JSON6902Patch contains a JSON6902 patch and
+ the target the patch should be applied to.
+ properties:
+ patch:
+ description: Patch contains the JSON6902 patch document
+ with an array of operation objects.
+ items:
+ description: JSON6902 is a JSON6902 operation object.
+ https://datatracker.ietf.org/doc/html/rfc6902#section-4
+ properties:
+ from:
+ description: From contains a JSON-pointer value
+ that references a location within the target
+ document where the operation is performed.
+ The meaning of the value depends on the value
+ of Op, and is NOT taken into account by all
+ operations.
+ type: string
+ op:
+ description: Op indicates the operation to perform.
+ Its value MUST be one of "add", "remove",
+ "replace", "move", "copy", or "test". https://datatracker.ietf.org/doc/html/rfc6902#section-4
+ enum:
+ - test
+ - remove
+ - add
+ - replace
+ - move
+ - copy
+ type: string
+ path:
+ description: Path contains the JSON-pointer
+ value that references a location within the
+ target document where the operation is performed.
+ The meaning of the value depends on the value
+ of Op.
+ type: string
+ value:
+ description: Value contains a valid JSON structure.
+ The meaning of the value depends on the value
+ of Op, and is NOT taken into account by all
+ operations.
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - op
+ - path
+ type: object
+ type: array
+ target:
+ description: Target points to the resources that the
+ patch document should be applied to.
+ properties:
+ annotationSelector:
+ description: AnnotationSelector is a string that
+ follows the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
+ It matches with the resource annotations.
+ type: string
+ group:
+ description: Group is the API group to select
+ resources from. Together with Version and Kind
+ it is capable of unambiguously identifying and/or
+ selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
+ type: string
+ kind:
+ description: Kind of the API Group to select resources
+ from. Together with Group and Version it is
+ capable of unambiguously identifying and/or
+ selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
+ type: string
+ labelSelector:
+ description: LabelSelector is a string that follows
+ the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
+ It matches with the resource labels.
+ type: string
+ name:
+ description: Name to match resources with.
+ type: string
+ namespace:
+ description: Namespace to select resources from.
+ type: string
+ version:
+ description: Version of the API Group to select
+ resources from. Together with Group and Kind
+ it is capable of unambiguously identifying and/or
+ selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
+ type: string
+ type: object
+ required:
+ - patch
+ - target
+ type: object
+ type: array
+ patchesStrategicMerge:
+ description: Strategic merge patches, defined as inline
+ YAML objects.
+ items:
+ x-kubernetes-preserve-unknown-fields: true
+ type: array
+ type: object
+ type: object
+ type: array
+ releaseName:
+ description: ReleaseName used for the Helm release. Defaults to a
+ composition of '[TargetNamespace-]Name'.
+ maxLength: 53
+ minLength: 1
+ type: string
+ rollback:
+ description: Rollback holds the configuration for Helm rollback actions
+ for this HelmRelease.
+ properties:
+ cleanupOnFail:
+ description: CleanupOnFail allows deletion of new resources created
+ during the Helm rollback action when it fails.
+ type: boolean
+ disableHooks:
+ description: DisableHooks prevents hooks from running during the
+ Helm rollback action.
+ type: boolean
+ disableWait:
+ description: DisableWait disables the waiting for resources to
+ be ready after a Helm rollback has been performed.
+ type: boolean
+ disableWaitForJobs:
+ description: DisableWaitForJobs disables waiting for jobs to complete
+ after a Helm rollback has been performed.
+ type: boolean
+ force:
+ description: Force forces resource updates through a replacement
+ strategy.
+ type: boolean
+ recreate:
+ description: Recreate performs pod restarts for the resource if
+ applicable.
+ type: boolean
+ timeout:
+ description: Timeout is the time to wait for any individual Kubernetes
+ operation (like Jobs for hooks) during the performance of a
+ Helm rollback action. Defaults to 'HelmReleaseSpec.Timeout'.
+ type: string
+ type: object
+ serviceAccountName:
+ description: The name of the Kubernetes service account to impersonate
+ when reconciling this HelmRelease.
+ type: string
+ storageNamespace:
+ description: StorageNamespace used for the Helm storage. Defaults
+ to the namespace of the HelmRelease.
+ maxLength: 63
+ minLength: 1
+ type: string
+ suspend:
+ description: Suspend tells the controller to suspend reconciliation
+ for this HelmRelease, it does not apply to already started reconciliations.
+ Defaults to false.
+ type: boolean
+ targetNamespace:
+ description: TargetNamespace to target when performing operations
+ for the HelmRelease. Defaults to the namespace of the HelmRelease.
+ maxLength: 63
+ minLength: 1
+ type: string
+ test:
+ description: Test holds the configuration for Helm test actions for
+ this HelmRelease.
+ properties:
+ enable:
+ description: Enable enables Helm test actions for this HelmRelease
+ after an Helm install or upgrade action has been performed.
+ type: boolean
+ ignoreFailures:
+ description: IgnoreFailures tells the controller to skip remediation
+ when the Helm tests are run but fail. Can be overwritten for
+ tests run after install or upgrade actions in 'Install.IgnoreTestFailures'
+ and 'Upgrade.IgnoreTestFailures'.
+ type: boolean
+ timeout:
+ description: Timeout is the time to wait for any individual Kubernetes
+ operation during the performance of a Helm test action. Defaults
+ to 'HelmReleaseSpec.Timeout'.
+ type: string
+ type: object
+ timeout:
+ description: Timeout is the time to wait for any individual Kubernetes
+ operation (like Jobs for hooks) during the performance of a Helm
+ action. Defaults to '5m0s'.
+ type: string
+ uninstall:
+ description: Uninstall holds the configuration for Helm uninstall
+ actions for this HelmRelease.
+ properties:
+ disableHooks:
+ description: DisableHooks prevents hooks from running during the
+ Helm rollback action.
+ type: boolean
+ disableWait:
+ description: DisableWait disables waiting for all the resources
+ to be deleted after a Helm uninstall is performed.
+ type: boolean
+ keepHistory:
+ description: KeepHistory tells Helm to remove all associated resources
+ and mark the release as deleted, but retain the release history.
+ type: boolean
+ timeout:
+ description: Timeout is the time to wait for any individual Kubernetes
+ operation (like Jobs for hooks) during the performance of a
+ Helm uninstall action. Defaults to 'HelmReleaseSpec.Timeout'.
+ type: string
+ type: object
+ upgrade:
+ description: Upgrade holds the configuration for Helm upgrade actions
+ for this HelmRelease.
+ properties:
+ cleanupOnFail:
+ description: CleanupOnFail allows deletion of new resources created
+ during the Helm upgrade action when it fails.
+ type: boolean
+ crds:
+ description: "CRDs upgrade CRDs from the Helm Chart's crds directory
+ according to the CRD upgrade policy provided here. Valid values
+ are `Skip`, `Create` or `CreateReplace`. Default is `Skip` and
+ if omitted CRDs are neither installed nor upgraded. \n Skip:
+ do neither install nor replace (update) any CRDs. \n Create:
+ new CRDs are created, existing CRDs are neither updated nor
+ deleted. \n CreateReplace: new CRDs are created, existing CRDs
+ are updated (replaced) but not deleted. \n By default, CRDs
+ are not applied during Helm upgrade action. With this option
+ users can opt-in to CRD upgrade, which is not (yet) natively
+ supported by Helm. https://helm.sh/docs/chart_best_practices/custom_resource_definitions."
+ enum:
+ - Skip
+ - Create
+ - CreateReplace
+ type: string
+ disableHooks:
+ description: DisableHooks prevents hooks from running during the
+ Helm upgrade action.
+ type: boolean
+ disableOpenAPIValidation:
+ description: DisableOpenAPIValidation prevents the Helm upgrade
+ action from validating rendered templates against the Kubernetes
+ OpenAPI Schema.
+ type: boolean
+ disableWait:
+ description: DisableWait disables the waiting for resources to
+ be ready after a Helm upgrade has been performed.
+ type: boolean
+ disableWaitForJobs:
+ description: DisableWaitForJobs disables waiting for jobs to complete
+ after a Helm upgrade has been performed.
+ type: boolean
+ force:
+ description: Force forces resource updates through a replacement
+ strategy.
+ type: boolean
+ preserveValues:
+ description: PreserveValues will make Helm reuse the last release's
+ values and merge in overrides from 'Values'. Setting this flag
+ makes the HelmRelease non-declarative.
+ type: boolean
+ remediation:
+ description: Remediation holds the remediation configuration for
+ when the Helm upgrade action for the HelmRelease fails. The
+ default is to not perform any action.
+ properties:
+ ignoreTestFailures:
+ description: IgnoreTestFailures tells the controller to skip
+ remediation when the Helm tests are run after an upgrade
+ action but fail. Defaults to 'Test.IgnoreFailures'.
+ type: boolean
+ remediateLastFailure:
+ description: RemediateLastFailure tells the controller to
+ remediate the last failure, when no retries remain. Defaults
+ to 'false' unless 'Retries' is greater than 0.
+ type: boolean
+ retries:
+ description: Retries is the number of retries that should
+ be attempted on failures before bailing. Remediation, using
+ 'Strategy', is performed between each attempt. Defaults
+ to '0', a negative integer equals to unlimited retries.
+ type: integer
+ strategy:
+ description: Strategy to use for failure remediation. Defaults
+ to 'rollback'.
+ enum:
+ - rollback
+ - uninstall
+ type: string
+ type: object
+ timeout:
+ description: Timeout is the time to wait for any individual Kubernetes
+ operation (like Jobs for hooks) during the performance of a
+ Helm upgrade action. Defaults to 'HelmReleaseSpec.Timeout'.
+ type: string
+ type: object
+ values:
+ description: Values holds the values for this Helm release.
+ x-kubernetes-preserve-unknown-fields: true
+ valuesFrom:
+ description: ValuesFrom holds references to resources containing Helm
+ values for this HelmRelease, and information about how they should
+ be merged.
+ items:
+ description: ValuesReference contains a reference to a resource
+ containing Helm values, and optionally the key they can be found
+ at.
+ properties:
+ kind:
+ description: Kind of the values referent, valid values are ('Secret',
+ 'ConfigMap').
+ enum:
+ - Secret
+ - ConfigMap
+ type: string
+ name:
+ description: Name of the values referent. Should reside in the
+ same namespace as the referring resource.
+ maxLength: 253
+ minLength: 1
+ type: string
+ optional:
+ description: Optional marks this ValuesReference as optional.
+ When set, a not found error for the values reference is ignored,
+ but any ValuesKey, TargetPath or transient error will still
+ result in a reconciliation failure.
+ type: boolean
+ targetPath:
+ description: TargetPath is the YAML dot notation path the value
+ should be merged at. When set, the ValuesKey is expected to
+ be a single flat value. Defaults to 'None', which results
+ in the values getting merged at the root.
+ type: string
+ valuesKey:
+ description: ValuesKey is the data key where the values.yaml
+ or a specific value can be found at. Defaults to 'values.yaml'.
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ type: array
+ required:
+ - chart
+ - interval
+ type: object
+ status:
+ default:
+ observedGeneration: -1
+ description: HelmReleaseStatus defines the observed state of a HelmRelease.
+ properties:
+ conditions:
+ description: Conditions holds the conditions for the HelmRelease.
+ items:
+ description: "Condition contains details for one aspect of the current
+ state of this API Resource. --- This struct is intended for direct
+ use as an array at the field path .status.conditions. For example,
+ type FooStatus struct{ // Represents the observations of a
+ foo's current state. // Known .status.conditions.type are:
+ \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type
+ \ // +patchStrategy=merge // +listType=map // +listMapKey=type
+ \ Conditions []metav1.Condition `json:\"conditions,omitempty\"
+ patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
+ \n // other fields }"
+ properties:
+ lastTransitionTime:
+ description: lastTransitionTime is the last time the condition
+ transitioned from one status to another. This should be when
+ the underlying condition changed. If that is not known, then
+ using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: message is a human readable message indicating
+ details about the transition. This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: observedGeneration represents the .metadata.generation
+ that the condition was set based upon. For instance, if .metadata.generation
+ is currently 12, but the .status.conditions[x].observedGeneration
+ is 9, the condition is out of date with respect to the current
+ state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: reason contains a programmatic identifier indicating
+ the reason for the condition's last transition. Producers
+ of specific condition types may define expected values and
+ meanings for this field, and whether the values are considered
+ a guaranteed API. The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ --- Many .condition.type values are consistent across resources
+ like Available, but because arbitrary conditions can be useful
+ (see .node.status.conditions), the ability to deconflict is
+ important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ failures:
+ description: Failures is the reconciliation failure count against
+ the latest desired state. It is reset after a successful reconciliation.
+ format: int64
+ type: integer
+ helmChart:
+ description: HelmChart is the namespaced name of the HelmChart resource
+ created by the controller for the HelmRelease.
+ type: string
+ installFailures:
+ description: InstallFailures is the install failure count against
+ the latest desired state. It is reset after a successful reconciliation.
+ format: int64
+ type: integer
+ lastAppliedRevision:
+ description: LastAppliedRevision is the revision of the last successfully
+ applied source.
+ type: string
+ lastAttemptedRevision:
+ description: LastAttemptedRevision is the revision of the last reconciliation
+ attempt.
+ type: string
+ lastAttemptedValuesChecksum:
+ description: LastAttemptedValuesChecksum is the SHA1 checksum of the
+ values of the last reconciliation attempt.
+ type: string
+ lastHandledReconcileAt:
+ description: LastHandledReconcileAt holds the value of the most recent
+ reconcile request value, so a change of the annotation value can
+ be detected.
+ type: string
+ lastReleaseRevision:
+ description: LastReleaseRevision is the revision of the last successful
+ Helm release.
+ type: integer
+ observedGeneration:
+ description: ObservedGeneration is the last observed generation.
+ format: int64
+ type: integer
+ upgradeFailures:
+ description: UpgradeFailures is the upgrade failure count against
+ the latest desired state. It is reset after a successful reconciliation.
+ format: int64
+ type: integer
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.7.0
+ creationTimestamp: null
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ name: helmrepositories.source.toolkit.fluxcd.io
+spec:
+ group: source.toolkit.fluxcd.io
+ names:
+ kind: HelmRepository
+ listKind: HelmRepositoryList
+ plural: helmrepositories
+ shortNames:
+ - helmrepo
+ singular: helmrepository
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .spec.url
+ name: URL
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Ready")].status
+ name: Ready
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Ready")].message
+ name: Status
+ type: string
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ name: v1beta1
+ schema:
+ openAPIV3Schema:
+ description: HelmRepository is the Schema for the helmrepositories API
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: HelmRepositorySpec defines the reference to a Helm repository.
+ properties:
+ accessFrom:
+ description: AccessFrom defines an Access Control List for allowing
+ cross-namespace references to this object.
+ properties:
+ namespaceSelectors:
+ description: NamespaceSelectors is the list of namespace selectors
+ to which this ACL applies. Items in this list are evaluated
+ using a logical OR operation.
+ items:
+ description: NamespaceSelector selects the namespaces to which
+ this ACL applies. An empty map of MatchLabels matches all
+ namespaces in a cluster.
+ properties:
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: MatchLabels is a map of {key,value} pairs.
+ A single {key,value} in the matchLabels map is equivalent
+ to an element of matchExpressions, whose key field is
+ "key", the operator is "In", and the values array contains
+ only "value". The requirements are ANDed.
+ type: object
+ type: object
+ type: array
+ required:
+ - namespaceSelectors
+ type: object
+ interval:
+ description: The interval at which to check the upstream for updates.
+ type: string
+ passCredentials:
+ description: PassCredentials allows the credentials from the SecretRef
+ to be passed on to a host that does not match the host as defined
+ in URL. This may be required if the host of the advertised chart
+ URLs in the index differ from the defined URL. Enabling this should
+ be done with caution, as it can potentially result in credentials
+ getting stolen in a MITM-attack.
+ type: boolean
+ secretRef:
+ description: The name of the secret containing authentication credentials
+ for the Helm repository. For HTTP/S basic auth the secret must contain
+ username and password fields. For TLS the secret must contain a
+ certFile and keyFile, and/or caCert fields.
+ properties:
+ name:
+ description: Name of the referent.
+ type: string
+ required:
+ - name
+ type: object
+ suspend:
+ description: This flag tells the controller to suspend the reconciliation
+ of this source.
+ type: boolean
+ timeout:
+ default: 60s
+ description: The timeout of index downloading, defaults to 60s.
+ type: string
+ url:
+ description: The Helm repository URL, a valid URL contains at least
+ a protocol and host.
+ type: string
+ required:
+ - interval
+ - url
+ type: object
+ status:
+ default:
+ observedGeneration: -1
+ description: HelmRepositoryStatus defines the observed state of the HelmRepository.
+ properties:
+ artifact:
+ description: Artifact represents the output of the last successful
+ repository sync.
+ properties:
+ checksum:
+ description: Checksum is the SHA256 checksum of the artifact.
+ type: string
+ lastUpdateTime:
+ description: LastUpdateTime is the timestamp corresponding to
+ the last update of this artifact.
+ format: date-time
+ type: string
+ path:
+ description: Path is the relative file path of this artifact.
+ type: string
+ revision:
+ description: Revision is a human readable identifier traceable
+ in the origin source system. It can be a Git commit SHA, Git
+ tag, a Helm index timestamp, a Helm chart version, etc.
+ type: string
+ url:
+ description: URL is the HTTP address of this artifact.
+ type: string
+ required:
+ - path
+ - url
+ type: object
+ conditions:
+ description: Conditions holds the conditions for the HelmRepository.
+ items:
+ description: "Condition contains details for one aspect of the current
+ state of this API Resource. --- This struct is intended for direct
+ use as an array at the field path .status.conditions. For example,
+ type FooStatus struct{ // Represents the observations of a
+ foo's current state. // Known .status.conditions.type are:
+ \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type
+ \ // +patchStrategy=merge // +listType=map // +listMapKey=type
+ \ Conditions []metav1.Condition `json:\"conditions,omitempty\"
+ patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
+ \n // other fields }"
+ properties:
+ lastTransitionTime:
+ description: lastTransitionTime is the last time the condition
+ transitioned from one status to another. This should be when
+ the underlying condition changed. If that is not known, then
+ using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: message is a human readable message indicating
+ details about the transition. This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: observedGeneration represents the .metadata.generation
+ that the condition was set based upon. For instance, if .metadata.generation
+ is currently 12, but the .status.conditions[x].observedGeneration
+ is 9, the condition is out of date with respect to the current
+ state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: reason contains a programmatic identifier indicating
+ the reason for the condition's last transition. Producers
+ of specific condition types may define expected values and
+ meanings for this field, and whether the values are considered
+ a guaranteed API. The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ --- Many .condition.type values are consistent across resources
+ like Available, but because arbitrary conditions can be useful
+ (see .node.status.conditions), the ability to deconflict is
+ important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ lastHandledReconcileAt:
+ description: LastHandledReconcileAt holds the value of the most recent
+ reconcile request value, so a change of the annotation value can
+ be detected.
+ type: string
+ observedGeneration:
+ description: ObservedGeneration is the last observed generation.
+ format: int64
+ type: integer
+ url:
+ description: URL is the download link for the last index fetched.
+ type: string
+ type: object
+ type: object
+ served: true
+ storage: false
+ subresources:
+ status: {}
+ - additionalPrinterColumns:
+ - jsonPath: .spec.url
+ name: URL
+ type: string
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ - jsonPath: .status.conditions[?(@.type=="Ready")].status
+ name: Ready
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Ready")].message
+ name: Status
+ type: string
+ name: v1beta2
+ schema:
+ openAPIV3Schema:
+ description: HelmRepository is the Schema for the helmrepositories API.
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: HelmRepositorySpec specifies the required configuration to
+ produce an Artifact for a Helm repository index YAML.
+ properties:
+ accessFrom:
+ description: 'AccessFrom specifies an Access Control List for allowing
+ cross-namespace references to this object. NOTE: Not implemented,
+ provisional as of https://github.com/fluxcd/flux2/pull/2092'
+ properties:
+ namespaceSelectors:
+ description: NamespaceSelectors is the list of namespace selectors
+ to which this ACL applies. Items in this list are evaluated
+ using a logical OR operation.
+ items:
+ description: NamespaceSelector selects the namespaces to which
+ this ACL applies. An empty map of MatchLabels matches all
+ namespaces in a cluster.
+ properties:
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: MatchLabels is a map of {key,value} pairs.
+ A single {key,value} in the matchLabels map is equivalent
+ to an element of matchExpressions, whose key field is
+ "key", the operator is "In", and the values array contains
+ only "value". The requirements are ANDed.
+ type: object
+ type: object
+ type: array
+ required:
+ - namespaceSelectors
+ type: object
+ interval:
+ description: Interval at which to check the URL for updates.
+ type: string
+ passCredentials:
+ description: PassCredentials allows the credentials from the SecretRef
+ to be passed on to a host that does not match the host as defined
+ in URL. This may be required if the host of the advertised chart
+ URLs in the index differ from the defined URL. Enabling this should
+ be done with caution, as it can potentially result in credentials
+ getting stolen in a MITM-attack.
+ type: boolean
+ secretRef:
+ description: SecretRef specifies the Secret containing authentication
+ credentials for the HelmRepository. For HTTP/S basic auth the secret
+ must contain 'username' and 'password' fields. For TLS the secret
+ must contain a 'certFile' and 'keyFile', and/or 'caCert' fields.
+ properties:
+ name:
+ description: Name of the referent.
+ type: string
+ required:
+ - name
+ type: object
+ suspend:
+ description: Suspend tells the controller to suspend the reconciliation
+ of this HelmRepository.
+ type: boolean
+ timeout:
+ default: 60s
+ description: Timeout of the index fetch operation, defaults to 60s.
+ type: string
+ type:
+ description: Type of the HelmRepository. When this field is set to "oci",
+ the URL field value must be prefixed with "oci://".
+ enum:
+ - default
+ - oci
+ type: string
+ url:
+ description: URL of the Helm repository, a valid URL contains at least
+ a protocol and host.
+ type: string
+ required:
+ - interval
+ - url
+ type: object
+ status:
+ default:
+ observedGeneration: -1
+ description: HelmRepositoryStatus records the observed state of the HelmRepository.
+ properties:
+ artifact:
+ description: Artifact represents the last successful HelmRepository
+ reconciliation.
+ properties:
+ checksum:
+ description: Checksum is the SHA256 checksum of the Artifact file.
+ type: string
+ lastUpdateTime:
+ description: LastUpdateTime is the timestamp corresponding to
+ the last update of the Artifact.
+ format: date-time
+ type: string
+ path:
+ description: Path is the relative file path of the Artifact. It
+ can be used to locate the file in the root of the Artifact storage
+ on the local file system of the controller managing the Source.
+ type: string
+ revision:
+ description: Revision is a human-readable identifier traceable
+ in the origin source system. It can be a Git commit SHA, Git
+ tag, a Helm chart version, etc.
+ type: string
+ size:
+ description: Size is the number of bytes in the file.
+ format: int64
+ type: integer
+ url:
+ description: URL is the HTTP address of the Artifact as exposed
+ by the controller managing the Source. It can be used to retrieve
+ the Artifact for consumption, e.g. by another controller applying
+ the Artifact contents.
+ type: string
+ required:
+ - path
+ - url
+ type: object
+ conditions:
+ description: Conditions holds the conditions for the HelmRepository.
+ items:
+ description: "Condition contains details for one aspect of the current
+ state of this API Resource. --- This struct is intended for direct
+ use as an array at the field path .status.conditions. For example,
+ type FooStatus struct{ // Represents the observations of a
+ foo's current state. // Known .status.conditions.type are:
+ \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type
+ \ // +patchStrategy=merge // +listType=map // +listMapKey=type
+ \ Conditions []metav1.Condition `json:\"conditions,omitempty\"
+ patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
+ \n // other fields }"
+ properties:
+ lastTransitionTime:
+ description: lastTransitionTime is the last time the condition
+ transitioned from one status to another. This should be when
+ the underlying condition changed. If that is not known, then
+ using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: message is a human readable message indicating
+ details about the transition. This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: observedGeneration represents the .metadata.generation
+ that the condition was set based upon. For instance, if .metadata.generation
+ is currently 12, but the .status.conditions[x].observedGeneration
+ is 9, the condition is out of date with respect to the current
+ state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: reason contains a programmatic identifier indicating
+ the reason for the condition's last transition. Producers
+ of specific condition types may define expected values and
+ meanings for this field, and whether the values are considered
+ a guaranteed API. The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ --- Many .condition.type values are consistent across resources
+ like Available, but because arbitrary conditions can be useful
+ (see .node.status.conditions), the ability to deconflict is
+ important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ lastHandledReconcileAt:
+ description: LastHandledReconcileAt holds the value of the most recent
+ reconcile request value, so a change of the annotation value can
+ be detected.
+ type: string
+ observedGeneration:
+ description: ObservedGeneration is the last observed generation of
+ the HelmRepository object.
+ format: int64
+ type: integer
+ url:
+ description: URL is the dynamic fetch link for the latest Artifact.
+ It is provided on a "best effort" basis, and using the precise HelmRepositoryStatus.Artifact
+ data is recommended.
+ type: string
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.7.0
+ creationTimestamp: null
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ name: kustomizations.kustomize.toolkit.fluxcd.io
+spec:
+ group: kustomize.toolkit.fluxcd.io
+ names:
+ kind: Kustomization
+ listKind: KustomizationList
+ plural: kustomizations
+ shortNames:
+ - ks
+ singular: kustomization
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .status.conditions[?(@.type=="Ready")].status
+ name: Ready
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Ready")].message
+ name: Status
+ type: string
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ name: v1beta1
+ schema:
+ openAPIV3Schema:
+ description: Kustomization is the Schema for the kustomizations API.
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: KustomizationSpec defines the desired state of a kustomization.
+ properties:
+ decryption:
+ description: Decrypt Kubernetes secrets before applying them on the
+ cluster.
+ properties:
+ provider:
+ description: Provider is the name of the decryption engine.
+ enum:
+ - sops
+ type: string
+ secretRef:
+ description: The secret name containing the private OpenPGP keys
+ used for decryption.
+ properties:
+ name:
+ description: Name of the referent.
+ type: string
+ required:
+ - name
+ type: object
+ required:
+ - provider
+ type: object
+ dependsOn:
+ description: DependsOn may contain a meta.NamespacedObjectReference
+ slice with references to Kustomization resources that must be ready
+ before this Kustomization can be reconciled.
+ items:
+ description: NamespacedObjectReference contains enough information
+ to locate the referenced Kubernetes resource object in any namespace.
+ properties:
+ name:
+ description: Name of the referent.
+ type: string
+ namespace:
+ description: Namespace of the referent, when not specified it
+ acts as LocalObjectReference.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ force:
+ default: false
+ description: Force instructs the controller to recreate resources
+ when patching fails due to an immutable field change.
+ type: boolean
+ healthChecks:
+ description: A list of resources to be included in the health assessment.
+ items:
+ description: NamespacedObjectKindReference contains enough information
+ to locate the typed referenced Kubernetes resource object in any
+ namespace.
+ properties:
+ apiVersion:
+ description: API version of the referent, if not specified the
+ Kubernetes preferred version will be used.
+ type: string
+ kind:
+ description: Kind of the referent.
+ type: string
+ name:
+ description: Name of the referent.
+ type: string
+ namespace:
+ description: Namespace of the referent, when not specified it
+ acts as LocalObjectReference.
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ type: array
+ images:
+ description: Images is a list of (image name, new name, new tag or
+ digest) for changing image names, tags or digests. This can also
+ be achieved with a patch, but this operator is simpler to specify.
+ items:
+ description: Image contains an image name, a new name, a new tag
+ or digest, which will replace the original name and tag.
+ properties:
+ digest:
+ description: Digest is the value used to replace the original
+ image tag. If digest is present NewTag value is ignored.
+ type: string
+ name:
+ description: Name is a tag-less image name.
+ type: string
+ newName:
+ description: NewName is the value used to replace the original
+ name.
+ type: string
+ newTag:
+ description: NewTag is the value used to replace the original
+ tag.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ interval:
+ description: The interval at which to reconcile the Kustomization.
+ type: string
+ kubeConfig:
+ description: The KubeConfig for reconciling the Kustomization on a
+ remote cluster. When specified, KubeConfig takes precedence over
+ ServiceAccountName.
+ properties:
+ secretRef:
+ description: SecretRef holds the name to a secret that contains
+ a 'value' key with the kubeconfig file as the value. It must
+ be in the same namespace as the Kustomization. It is recommended
+ that the kubeconfig is self-contained, and the secret is regularly
+ updated if credentials such as a cloud-access-token expire.
+ Cloud specific `cmd-path` auth helpers will not function without
+ adding binaries and credentials to the Pod that is responsible
+ for reconciling the Kustomization.
+ properties:
+ name:
+ description: Name of the referent.
+ type: string
+ required:
+ - name
+ type: object
+ type: object
+ patches:
+ description: Strategic merge and JSON patches, defined as inline YAML
+ objects, capable of targeting objects based on kind, label and annotation
+ selectors.
+ items:
+ description: Patch contains an inline StrategicMerge or JSON6902
+ patch, and the target the patch should be applied to.
+ properties:
+ patch:
+ description: Patch contains an inline StrategicMerge patch or
+ an inline JSON6902 patch with an array of operation objects.
+ type: string
+ target:
+ description: Target points to the resources that the patch document
+ should be applied to.
+ properties:
+ annotationSelector:
+ description: AnnotationSelector is a string that follows
+ the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
+ It matches with the resource annotations.
+ type: string
+ group:
+ description: Group is the API group to select resources
+ from. Together with Version and Kind it is capable of
+ unambiguously identifying and/or selecting resources.
+ https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
+ type: string
+ kind:
+ description: Kind of the API Group to select resources from.
+ Together with Group and Version it is capable of unambiguously
+ identifying and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
+ type: string
+ labelSelector:
+ description: LabelSelector is a string that follows the
+ label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
+ It matches with the resource labels.
+ type: string
+ name:
+ description: Name to match resources with.
+ type: string
+ namespace:
+ description: Namespace to select resources from.
+ type: string
+ version:
+ description: Version of the API Group to select resources
+ from. Together with Group and Kind it is capable of unambiguously
+ identifying and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
+ type: string
+ type: object
+ type: object
+ type: array
+ patchesJson6902:
+ description: JSON 6902 patches, defined as inline YAML objects.
+ items:
+ description: JSON6902Patch contains a JSON6902 patch and the target
+ the patch should be applied to.
+ properties:
+ patch:
+ description: Patch contains the JSON6902 patch document with
+ an array of operation objects.
+ items:
+ description: JSON6902 is a JSON6902 operation object. https://datatracker.ietf.org/doc/html/rfc6902#section-4
+ properties:
+ from:
+ description: From contains a JSON-pointer value that references
+ a location within the target document where the operation
+ is performed. The meaning of the value depends on the
+ value of Op, and is NOT taken into account by all operations.
+ type: string
+ op:
+ description: Op indicates the operation to perform. Its
+ value MUST be one of "add", "remove", "replace", "move",
+ "copy", or "test". https://datatracker.ietf.org/doc/html/rfc6902#section-4
+ enum:
+ - test
+ - remove
+ - add
+ - replace
+ - move
+ - copy
+ type: string
+ path:
+ description: Path contains the JSON-pointer value that
+ references a location within the target document where
+ the operation is performed. The meaning of the value
+ depends on the value of Op.
+ type: string
+ value:
+ description: Value contains a valid JSON structure. The
+ meaning of the value depends on the value of Op, and
+ is NOT taken into account by all operations.
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - op
+ - path
+ type: object
+ type: array
+ target:
+ description: Target points to the resources that the patch document
+ should be applied to.
+ properties:
+ annotationSelector:
+ description: AnnotationSelector is a string that follows
+ the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
+ It matches with the resource annotations.
+ type: string
+ group:
+ description: Group is the API group to select resources
+ from. Together with Version and Kind it is capable of
+ unambiguously identifying and/or selecting resources.
+ https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
+ type: string
+ kind:
+ description: Kind of the API Group to select resources from.
+ Together with Group and Version it is capable of unambiguously
+ identifying and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
+ type: string
+ labelSelector:
+ description: LabelSelector is a string that follows the
+ label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
+ It matches with the resource labels.
+ type: string
+ name:
+ description: Name to match resources with.
+ type: string
+ namespace:
+ description: Namespace to select resources from.
+ type: string
+ version:
+ description: Version of the API Group to select resources
+ from. Together with Group and Kind it is capable of unambiguously
+ identifying and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
+ type: string
+ type: object
+ required:
+ - patch
+ - target
+ type: object
+ type: array
+ patchesStrategicMerge:
+ description: Strategic merge patches, defined as inline YAML objects.
+ items:
+ x-kubernetes-preserve-unknown-fields: true
+ type: array
+ path:
+ description: Path to the directory containing the kustomization.yaml
+ file, or the set of plain YAMLs a kustomization.yaml should be generated
+ for. Defaults to 'None', which translates to the root path of the
+ SourceRef.
+ type: string
+ postBuild:
+ description: PostBuild describes which actions to perform on the YAML
+ manifest generated by building the kustomize overlay.
+ properties:
+ substitute:
+ additionalProperties:
+ type: string
+ description: Substitute holds a map of key/value pairs. The variables
+ defined in your YAML manifests that match any of the keys defined
+ in the map will be substituted with the set value. Includes
+ support for bash string replacement functions e.g. ${var:=default},
+ ${var:position} and ${var/substring/replacement}.
+ type: object
+ substituteFrom:
+ description: SubstituteFrom holds references to ConfigMaps and
+ Secrets containing the variables and their values to be substituted
+ in the YAML manifests. The ConfigMap and the Secret data keys
+ represent the var names and they must match the vars declared
+ in the manifests for the substitution to happen.
+ items:
+ description: SubstituteReference contains a reference to a resource
+ containing the variables name and value.
+ properties:
+ kind:
+ description: Kind of the values referent, valid values are
+ ('Secret', 'ConfigMap').
+ enum:
+ - Secret
+ - ConfigMap
+ type: string
+ name:
+ description: Name of the values referent. Should reside
+ in the same namespace as the referring resource.
+ maxLength: 253
+ minLength: 1
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ type: array
+ type: object
+ prune:
+ description: Prune enables garbage collection.
+ type: boolean
+ retryInterval:
+ description: The interval at which to retry a previously failed reconciliation.
+ When not specified, the controller uses the KustomizationSpec.Interval
+ value to retry failures.
+ type: string
+ serviceAccountName:
+ description: The name of the Kubernetes service account to impersonate
+ when reconciling this Kustomization.
+ type: string
+ sourceRef:
+ description: Reference of the source where the kustomization file
+ is.
+ properties:
+ apiVersion:
+ description: API version of the referent
+ type: string
+ kind:
+ description: Kind of the referent
+ enum:
+ - GitRepository
+ - Bucket
+ type: string
+ name:
+ description: Name of the referent
+ type: string
+ namespace:
+ description: Namespace of the referent, defaults to the Kustomization
+ namespace
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ suspend:
+ description: This flag tells the controller to suspend subsequent
+ kustomize executions, it does not apply to already started executions.
+ Defaults to false.
+ type: boolean
+ targetNamespace:
+ description: TargetNamespace sets or overrides the namespace in the
+ kustomization.yaml file.
+ maxLength: 63
+ minLength: 1
+ type: string
+ timeout:
+ description: Timeout for validation, apply and health checking operations.
+ Defaults to 'Interval' duration.
+ type: string
+ validation:
+ description: Validate the Kubernetes objects before applying them
+ on the cluster. The validation strategy can be 'client' (local dry-run),
+ 'server' (APIServer dry-run) or 'none'. When 'Force' is 'true',
+ validation will fallback to 'client' if set to 'server' because
+ server-side validation is not supported in this scenario.
+ enum:
+ - none
+ - client
+ - server
+ type: string
+ required:
+ - interval
+ - prune
+ - sourceRef
+ type: object
+ status:
+ default:
+ observedGeneration: -1
+ description: KustomizationStatus defines the observed state of a kustomization.
+ properties:
+ conditions:
+ items:
+ description: "Condition contains details for one aspect of the current
+ state of this API Resource. --- This struct is intended for direct
+ use as an array at the field path .status.conditions. For example,
+ type FooStatus struct{ // Represents the observations of a
+ foo's current state. // Known .status.conditions.type are:
+ \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type
+ \ // +patchStrategy=merge // +listType=map // +listMapKey=type
+ \ Conditions []metav1.Condition `json:\"conditions,omitempty\"
+ patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
+ \n // other fields }"
+ properties:
+ lastTransitionTime:
+ description: lastTransitionTime is the last time the condition
+ transitioned from one status to another. This should be when
+ the underlying condition changed. If that is not known, then
+ using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: message is a human readable message indicating
+ details about the transition. This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: observedGeneration represents the .metadata.generation
+ that the condition was set based upon. For instance, if .metadata.generation
+ is currently 12, but the .status.conditions[x].observedGeneration
+ is 9, the condition is out of date with respect to the current
+ state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: reason contains a programmatic identifier indicating
+ the reason for the condition's last transition. Producers
+ of specific condition types may define expected values and
+ meanings for this field, and whether the values are considered
+ a guaranteed API. The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ --- Many .condition.type values are consistent across resources
+ like Available, but because arbitrary conditions can be useful
+ (see .node.status.conditions), the ability to deconflict is
+ important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ lastAppliedRevision:
+ description: The last successfully applied revision. The revision
+ format for Git sources is <branch|tag>/<commit-sha>.
+ type: string
+ lastAttemptedRevision:
+ description: LastAttemptedRevision is the revision of the last reconciliation
+ attempt.
+ type: string
+ lastHandledReconcileAt:
+ description: LastHandledReconcileAt holds the value of the most recent
+ reconcile request value, so a change of the annotation value can
+ be detected.
+ type: string
+ observedGeneration:
+ description: ObservedGeneration is the last reconciled generation.
+ format: int64
+ type: integer
+ snapshot:
+ description: The last successfully applied revision metadata.
+ properties:
+ checksum:
+ description: The manifests sha1 checksum.
+ type: string
+ entries:
+ description: A list of Kubernetes kinds grouped by namespace.
+ items:
+ description: Snapshot holds the metadata of namespaced Kubernetes
+ objects
+ properties:
+ kinds:
+ additionalProperties:
+ type: string
+ description: The list of Kubernetes kinds.
+ type: object
+ namespace:
+ description: The namespace of this entry.
+ type: string
+ required:
+ - kinds
+ type: object
+ type: array
+ required:
+ - checksum
+ - entries
+ type: object
+ type: object
+ type: object
+ served: true
+ storage: false
+ subresources:
+ status: {}
+ - additionalPrinterColumns:
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ - jsonPath: .status.conditions[?(@.type=="Ready")].status
+ name: Ready
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Ready")].message
+ name: Status
+ type: string
+ name: v1beta2
+ schema:
+ openAPIV3Schema:
+ description: Kustomization is the Schema for the kustomizations API.
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: KustomizationSpec defines the configuration to calculate
+ the desired state from a Source using Kustomize.
+ properties:
+ decryption:
+ description: Decrypt Kubernetes secrets before applying them on the
+ cluster.
+ properties:
+ provider:
+ description: Provider is the name of the decryption engine.
+ enum:
+ - sops
+ type: string
+ secretRef:
+ description: The secret name containing the private OpenPGP keys
+ used for decryption.
+ properties:
+ name:
+ description: Name of the referent.
+ type: string
+ required:
+ - name
+ type: object
+ required:
+ - provider
+ type: object
+ dependsOn:
+ description: DependsOn may contain a meta.NamespacedObjectReference
+ slice with references to Kustomization resources that must be ready
+ before this Kustomization can be reconciled.
+ items:
+ description: NamespacedObjectReference contains enough information
+ to locate the referenced Kubernetes resource object in any namespace.
+ properties:
+ name:
+ description: Name of the referent.
+ type: string
+ namespace:
+ description: Namespace of the referent, when not specified it
+ acts as LocalObjectReference.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ force:
+ default: false
+ description: Force instructs the controller to recreate resources
+ when patching fails due to an immutable field change.
+ type: boolean
+ healthChecks:
+ description: A list of resources to be included in the health assessment.
+ items:
+ description: NamespacedObjectKindReference contains enough information
+ to locate the typed referenced Kubernetes resource object in any
+ namespace.
+ properties:
+ apiVersion:
+ description: API version of the referent, if not specified the
+ Kubernetes preferred version will be used.
+ type: string
+ kind:
+ description: Kind of the referent.
+ type: string
+ name:
+ description: Name of the referent.
+ type: string
+ namespace:
+ description: Namespace of the referent, when not specified it
+ acts as LocalObjectReference.
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ type: array
+ images:
+ description: Images is a list of (image name, new name, new tag or
+ digest) for changing image names, tags or digests. This can also
+ be achieved with a patch, but this operator is simpler to specify.
+ items:
+ description: Image contains an image name, a new name, a new tag
+ or digest, which will replace the original name and tag.
+ properties:
+ digest:
+ description: Digest is the value used to replace the original
+ image tag. If digest is present NewTag value is ignored.
+ type: string
+ name:
+ description: Name is a tag-less image name.
+ type: string
+ newName:
+ description: NewName is the value used to replace the original
+ name.
+ type: string
+ newTag:
+ description: NewTag is the value used to replace the original
+ tag.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ interval:
+ description: The interval at which to reconcile the Kustomization.
+ type: string
+ kubeConfig:
+ description: The KubeConfig for reconciling the Kustomization on a
+ remote cluster. When used in combination with KustomizationSpec.ServiceAccountName,
+ forces the controller to act on behalf of that Service Account at
+ the target cluster. If the --default-service-account flag is set,
+ its value will be used as a controller level fallback for when KustomizationSpec.ServiceAccountName
+ is empty.
+ properties:
+ secretRef:
+ description: SecretRef holds the name of a secret that contains
+ a key with the kubeconfig file as the value. If no key is set,
+ the key will default to 'value'. The secret must be in the same
+ namespace as the Kustomization. It is recommended that the kubeconfig
+ is self-contained, and the secret is regularly updated if credentials
+ such as a cloud-access-token expire. Cloud specific `cmd-path`
+ auth helpers will not function without adding binaries and credentials
+ to the Pod that is responsible for reconciling the Kustomization.
+ properties:
+ key:
+ description: Key in the Secret, when not specified an implementation-specific
+ default key is used.
+ type: string
+ name:
+ description: Name of the Secret.
+ type: string
+ required:
+ - name
+ type: object
+ type: object
+ patches:
+ description: Strategic merge and JSON patches, defined as inline YAML
+ objects, capable of targeting objects based on kind, label and annotation
+ selectors.
+ items:
+ description: Patch contains an inline StrategicMerge or JSON6902
+ patch, and the target the patch should be applied to.
+ properties:
+ patch:
+ description: Patch contains an inline StrategicMerge patch or
+ an inline JSON6902 patch with an array of operation objects.
+ type: string
+ target:
+ description: Target points to the resources that the patch document
+ should be applied to.
+ properties:
+ annotationSelector:
+ description: AnnotationSelector is a string that follows
+ the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
+ It matches with the resource annotations.
+ type: string
+ group:
+ description: Group is the API group to select resources
+ from. Together with Version and Kind it is capable of
+ unambiguously identifying and/or selecting resources.
+ https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
+ type: string
+ kind:
+ description: Kind of the API Group to select resources from.
+ Together with Group and Version it is capable of unambiguously
+ identifying and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
+ type: string
+ labelSelector:
+ description: LabelSelector is a string that follows the
+ label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
+ It matches with the resource labels.
+ type: string
+ name:
+ description: Name to match resources with.
+ type: string
+ namespace:
+ description: Namespace to select resources from.
+ type: string
+ version:
+ description: Version of the API Group to select resources
+ from. Together with Group and Kind it is capable of unambiguously
+ identifying and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
+ type: string
+ type: object
+ type: object
+ type: array
+ patchesJson6902:
+ description: 'JSON 6902 patches, defined as inline YAML objects. Deprecated:
+ Use Patches instead.'
+ items:
+ description: JSON6902Patch contains a JSON6902 patch and the target
+ the patch should be applied to.
+ properties:
+ patch:
+ description: Patch contains the JSON6902 patch document with
+ an array of operation objects.
+ items:
+ description: JSON6902 is a JSON6902 operation object. https://datatracker.ietf.org/doc/html/rfc6902#section-4
+ properties:
+ from:
+ description: From contains a JSON-pointer value that references
+ a location within the target document where the operation
+ is performed. The meaning of the value depends on the
+ value of Op, and is NOT taken into account by all operations.
+ type: string
+ op:
+ description: Op indicates the operation to perform. Its
+ value MUST be one of "add", "remove", "replace", "move",
+ "copy", or "test". https://datatracker.ietf.org/doc/html/rfc6902#section-4
+ enum:
+ - test
+ - remove
+ - add
+ - replace
+ - move
+ - copy
+ type: string
+ path:
+ description: Path contains the JSON-pointer value that
+ references a location within the target document where
+ the operation is performed. The meaning of the value
+ depends on the value of Op.
+ type: string
+ value:
+ description: Value contains a valid JSON structure. The
+ meaning of the value depends on the value of Op, and
+ is NOT taken into account by all operations.
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - op
+ - path
+ type: object
+ type: array
+ target:
+ description: Target points to the resources that the patch document
+ should be applied to.
+ properties:
+ annotationSelector:
+ description: AnnotationSelector is a string that follows
+ the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
+ It matches with the resource annotations.
+ type: string
+ group:
+ description: Group is the API group to select resources
+ from. Together with Version and Kind it is capable of
+ unambiguously identifying and/or selecting resources.
+ https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
+ type: string
+ kind:
+ description: Kind of the API Group to select resources from.
+ Together with Group and Version it is capable of unambiguously
+ identifying and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
+ type: string
+ labelSelector:
+ description: LabelSelector is a string that follows the
+ label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
+ It matches with the resource labels.
+ type: string
+ name:
+ description: Name to match resources with.
+ type: string
+ namespace:
+ description: Namespace to select resources from.
+ type: string
+ version:
+ description: Version of the API Group to select resources
+ from. Together with Group and Kind it is capable of unambiguously
+ identifying and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
+ type: string
+ type: object
+ required:
+ - patch
+ - target
+ type: object
+ type: array
+ patchesStrategicMerge:
+ description: 'Strategic merge patches, defined as inline YAML objects.
+ Deprecated: Use Patches instead.'
+ items:
+ x-kubernetes-preserve-unknown-fields: true
+ type: array
+ path:
+ description: Path to the directory containing the kustomization.yaml
+ file, or the set of plain YAMLs a kustomization.yaml should be generated
+ for. Defaults to 'None', which translates to the root path of the
+ SourceRef.
+ type: string
+ postBuild:
+ description: PostBuild describes which actions to perform on the YAML
+ manifest generated by building the kustomize overlay.
+ properties:
+ substitute:
+ additionalProperties:
+ type: string
+ description: Substitute holds a map of key/value pairs. The variables
+ defined in your YAML manifests that match any of the keys defined
+ in the map will be substituted with the set value. Includes
+ support for bash string replacement functions e.g. ${var:=default},
+ ${var:position} and ${var/substring/replacement}.
+ type: object
+ substituteFrom:
+ description: SubstituteFrom holds references to ConfigMaps and
+ Secrets containing the variables and their values to be substituted
+ in the YAML manifests. The ConfigMap and the Secret data keys
+ represent the var names and they must match the vars declared
+ in the manifests for the substitution to happen.
+ items:
+ description: SubstituteReference contains a reference to a resource
+ containing the variables name and value.
+ properties:
+ kind:
+ description: Kind of the values referent, valid values are
+ ('Secret', 'ConfigMap').
+ enum:
+ - Secret
+ - ConfigMap
+ type: string
+ name:
+ description: Name of the values referent. Should reside
+ in the same namespace as the referring resource.
+ maxLength: 253
+ minLength: 1
+ type: string
+ optional:
+ default: false
+ description: Optional indicates whether the referenced resource
+ must exist, or whether to tolerate its absence. If true
+ and the referenced resource is absent, proceed as if the
+ resource was present but empty, without any variables
+ defined.
+ type: boolean
+ required:
+ - kind
+ - name
+ type: object
+ type: array
+ type: object
+ prune:
+ description: Prune enables garbage collection.
+ type: boolean
+ retryInterval:
+ description: The interval at which to retry a previously failed reconciliation.
+ When not specified, the controller uses the KustomizationSpec.Interval
+ value to retry failures.
+ type: string
+ serviceAccountName:
+ description: The name of the Kubernetes service account to impersonate
+ when reconciling this Kustomization.
+ type: string
+ sourceRef:
+ description: Reference of the source where the kustomization file
+ is.
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ kind:
+ description: Kind of the referent.
+ enum:
+ - GitRepository
+ - Bucket
+ type: string
+ name:
+ description: Name of the referent.
+ type: string
+ namespace:
+ description: Namespace of the referent, defaults to the namespace
+ of the Kubernetes resource object that contains the reference.
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ suspend:
+ description: This flag tells the controller to suspend subsequent
+ kustomize executions, it does not apply to already started executions.
+ Defaults to false.
+ type: boolean
+ targetNamespace:
+ description: TargetNamespace sets or overrides the namespace in the
+ kustomization.yaml file.
+ maxLength: 63
+ minLength: 1
+ type: string
+ timeout:
+ description: Timeout for validation, apply and health checking operations.
+ Defaults to 'Interval' duration.
+ type: string
+ validation:
+ description: 'Deprecated: Not used in v1beta2.'
+ enum:
+ - none
+ - client
+ - server
+ type: string
+ wait:
+ description: Wait instructs the controller to check the health of
+ all the reconciled resources. When enabled, the HealthChecks are
+ ignored. Defaults to false.
+ type: boolean
+ required:
+ - interval
+ - prune
+ - sourceRef
+ type: object
+ status:
+ default:
+ observedGeneration: -1
+ description: KustomizationStatus defines the observed state of a kustomization.
+ properties:
+ conditions:
+ items:
+ description: "Condition contains details for one aspect of the current
+ state of this API Resource. --- This struct is intended for direct
+ use as an array at the field path .status.conditions. For example,
+ type FooStatus struct{ // Represents the observations of a
+ foo's current state. // Known .status.conditions.type are:
+ \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type
+ \ // +patchStrategy=merge // +listType=map // +listMapKey=type
+ \ Conditions []metav1.Condition `json:\"conditions,omitempty\"
+ patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
+ \n // other fields }"
+ properties:
+ lastTransitionTime:
+ description: lastTransitionTime is the last time the condition
+ transitioned from one status to another. This should be when
+ the underlying condition changed. If that is not known, then
+ using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: message is a human readable message indicating
+ details about the transition. This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: observedGeneration represents the .metadata.generation
+ that the condition was set based upon. For instance, if .metadata.generation
+ is currently 12, but the .status.conditions[x].observedGeneration
+ is 9, the condition is out of date with respect to the current
+ state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: reason contains a programmatic identifier indicating
+ the reason for the condition's last transition. Producers
+ of specific condition types may define expected values and
+ meanings for this field, and whether the values are considered
+ a guaranteed API. The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ --- Many .condition.type values are consistent across resources
+ like Available, but because arbitrary conditions can be useful
+ (see .node.status.conditions), the ability to deconflict is
+ important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ inventory:
+ description: Inventory contains the list of Kubernetes resource object
+ references that have been successfully applied.
+ properties:
+ entries:
+ description: Entries of Kubernetes resource object references.
+ items:
+ description: ResourceRef contains the information necessary
+ to locate a resource within a cluster.
+ properties:
+ id:
+ description: ID is the string representation of the Kubernetes
+ resource object's metadata, in the format '<namespace>_<name>_<group>_<kind>'.
+ type: string
+ v:
+ description: Version is the API version of the Kubernetes
+ resource object's kind.
+ type: string
+ required:
+ - id
+ - v
+ type: object
+ type: array
+ required:
+ - entries
+ type: object
+ lastAppliedRevision:
+ description: The last successfully applied revision. The revision
+ format for Git sources is <branch|tag>/<commit-sha>.
+ type: string
+ lastAttemptedRevision:
+ description: LastAttemptedRevision is the revision of the last reconciliation
+ attempt.
+ type: string
+ lastHandledReconcileAt:
+ description: LastHandledReconcileAt holds the value of the most recent
+ reconcile request value, so a change of the annotation value can
+ be detected.
+ type: string
+ observedGeneration:
+ description: ObservedGeneration is the last reconciled generation.
+ format: int64
+ type: integer
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.7.0
+ creationTimestamp: null
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ name: providers.notification.toolkit.fluxcd.io
+spec:
+ group: notification.toolkit.fluxcd.io
+ names:
+ kind: Provider
+ listKind: ProviderList
+ plural: providers
+ singular: provider
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ - jsonPath: .status.conditions[?(@.type=="Ready")].status
+ name: Ready
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Ready")].message
+ name: Status
+ type: string
+ name: v1beta1
+ schema:
+ openAPIV3Schema:
+ description: Provider is the Schema for the providers API
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: ProviderSpec defines the desired state of Provider
+ properties:
+ address:
+ description: HTTP/S webhook address of this provider
+ pattern: ^(http|https)://
+ type: string
+ certSecretRef:
+ description: CertSecretRef can be given the name of a secret containing
+ a PEM-encoded CA certificate (`caFile`)
+ properties:
+ name:
+ description: Name of the referent.
+ type: string
+ required:
+ - name
+ type: object
+ channel:
+ description: Alert channel for this provider
+ type: string
+ proxy:
+ description: HTTP/S address of the proxy
+ pattern: ^(http|https)://
+ type: string
+ secretRef:
+ description: Secret reference containing the provider webhook URL
+ using "address" as data key
+ properties:
+ name:
+ description: Name of the referent.
+ type: string
+ required:
+ - name
+ type: object
+ suspend:
+ description: This flag tells the controller to suspend subsequent
+ events handling. Defaults to false.
+ type: boolean
+ type:
+ description: Type of provider
+ enum:
+ - slack
+ - discord
+ - msteams
+ - rocket
+ - generic
+ - github
+ - gitlab
+ - bitbucket
+ - azuredevops
+ - googlechat
+ - webex
+ - sentry
+ - azureeventhub
+ - telegram
+ - lark
+ - matrix
+ - opsgenie
+ - alertmanager
+ - grafana
+ - githubdispatch
+ type: string
+ username:
+ description: Bot username for this provider
+ type: string
+ required:
+ - type
+ type: object
+ status:
+ default:
+ observedGeneration: -1
+ description: ProviderStatus defines the observed state of Provider
+ properties:
+ conditions:
+ items:
+ description: "Condition contains details for one aspect of the current
+ state of this API Resource. --- This struct is intended for direct
+ use as an array at the field path .status.conditions. For example,
+ type FooStatus struct{ // Represents the observations of a
+ foo's current state. // Known .status.conditions.type are:
+ \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type
+ \ // +patchStrategy=merge // +listType=map // +listMapKey=type
+ \ Conditions []metav1.Condition `json:\"conditions,omitempty\"
+ patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
+ \n // other fields }"
+ properties:
+ lastTransitionTime:
+ description: lastTransitionTime is the last time the condition
+ transitioned from one status to another. This should be when
+ the underlying condition changed. If that is not known, then
+ using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: message is a human readable message indicating
+ details about the transition. This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: observedGeneration represents the .metadata.generation
+ that the condition was set based upon. For instance, if .metadata.generation
+ is currently 12, but the .status.conditions[x].observedGeneration
+ is 9, the condition is out of date with respect to the current
+ state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: reason contains a programmatic identifier indicating
+ the reason for the condition's last transition. Producers
+ of specific condition types may define expected values and
+ meanings for this field, and whether the values are considered
+ a guaranteed API. The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ --- Many .condition.type values are consistent across resources
+ like Available, but because arbitrary conditions can be useful
+ (see .node.status.conditions), the ability to deconflict is
+ important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ observedGeneration:
+ description: ObservedGeneration is the last reconciled generation.
+ format: int64
+ type: integer
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.7.0
+ creationTimestamp: null
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ name: receivers.notification.toolkit.fluxcd.io
+spec:
+ group: notification.toolkit.fluxcd.io
+ names:
+ kind: Receiver
+ listKind: ReceiverList
+ plural: receivers
+ singular: receiver
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ - jsonPath: .status.conditions[?(@.type=="Ready")].status
+ name: Ready
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Ready")].message
+ name: Status
+ type: string
+ name: v1beta1
+ schema:
+ openAPIV3Schema:
+ description: Receiver is the Schema for the receivers API
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: ReceiverSpec defines the desired state of Receiver
+ properties:
+ events:
+ description: A list of events to handle, e.g. 'push' for GitHub or
+ 'Push Hook' for GitLab.
+ items:
+ type: string
+ type: array
+ resources:
+ description: A list of resources to be notified about changes.
+ items:
+ description: CrossNamespaceObjectReference contains enough information
+ to let you locate the typed referenced object at cluster level
+ properties:
+ apiVersion:
+ description: API version of the referent
+ type: string
+ kind:
+ description: Kind of the referent
+ enum:
+ - Bucket
+ - GitRepository
+ - Kustomization
+ - HelmRelease
+ - HelmChart
+ - HelmRepository
+ - ImageRepository
+ - ImagePolicy
+ - ImageUpdateAutomation
+ type: string
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: MatchLabels is a map of {key,value} pairs. A single
+ {key,value} in the matchLabels map is equivalent to an element
+ of matchExpressions, whose key field is "key", the operator
+ is "In", and the values array contains only "value". The requirements
+ are ANDed.
+ type: object
+ name:
+ description: Name of the referent
+ maxLength: 53
+ minLength: 1
+ type: string
+ namespace:
+ description: Namespace of the referent
+ maxLength: 53
+ minLength: 1
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ secretRef:
+ description: Secret reference containing the token used to validate
+ the payload authenticity
+ properties:
+ name:
+ description: Name of the referent.
+ type: string
+ required:
+ - name
+ type: object
+ suspend:
+ description: This flag tells the controller to suspend subsequent
+ events handling. Defaults to false.
+ type: boolean
+ type:
+ description: Type of webhook sender, used to determine the validation
+ procedure and payload deserialization.
+ enum:
+ - generic
+ - generic-hmac
+ - github
+ - gitlab
+ - bitbucket
+ - harbor
+ - dockerhub
+ - quay
+ - gcr
+ - nexus
+ - acr
+ type: string
+ required:
+ - resources
+ - type
+ type: object
+ status:
+ default:
+ observedGeneration: -1
+ description: ReceiverStatus defines the observed state of Receiver
+ properties:
+ conditions:
+ items:
+ description: "Condition contains details for one aspect of the current
+ state of this API Resource. --- This struct is intended for direct
+ use as an array at the field path .status.conditions. For example,
+ type FooStatus struct{ // Represents the observations of a
+ foo's current state. // Known .status.conditions.type are:
+ \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type
+ \ // +patchStrategy=merge // +listType=map // +listMapKey=type
+ \ Conditions []metav1.Condition `json:\"conditions,omitempty\"
+ patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
+ \n // other fields }"
+ properties:
+ lastTransitionTime:
+ description: lastTransitionTime is the last time the condition
+ transitioned from one status to another. This should be when
+ the underlying condition changed. If that is not known, then
+ using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: message is a human readable message indicating
+ details about the transition. This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: observedGeneration represents the .metadata.generation
+ that the condition was set based upon. For instance, if .metadata.generation
+ is currently 12, but the .status.conditions[x].observedGeneration
+ is 9, the condition is out of date with respect to the current
+ state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: reason contains a programmatic identifier indicating
+ the reason for the condition's last transition. Producers
+ of specific condition types may define expected values and
+ meanings for this field, and whether the values are considered
+ a guaranteed API. The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ --- Many .condition.type values are consistent across resources
+ like Available, but because arbitrary conditions can be useful
+ (see .node.status.conditions), the ability to deconflict is
+ important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ observedGeneration:
+ description: ObservedGeneration is the last observed generation.
+ format: int64
+ type: integer
+ url:
+ description: Generated webhook URL in the format of '/hook/sha256sum(token+name+namespace)'.
+ type: string
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ name: helm-controller
+ namespace: flux-system
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ name: kustomize-controller
+ namespace: flux-system
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ name: notification-controller
+ namespace: flux-system
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ name: source-controller
+ namespace: flux-system
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ name: crd-controller-flux-system
+rules:
+- apiGroups:
+ - source.toolkit.fluxcd.io
+ resources:
+ - '*'
+ verbs:
+ - '*'
+- apiGroups:
+ - kustomize.toolkit.fluxcd.io
+ resources:
+ - '*'
+ verbs:
+ - '*'
+- apiGroups:
+ - helm.toolkit.fluxcd.io
+ resources:
+ - '*'
+ verbs:
+ - '*'
+- apiGroups:
+ - notification.toolkit.fluxcd.io
+ resources:
+ - '*'
+ verbs:
+ - '*'
+- apiGroups:
+ - image.toolkit.fluxcd.io
+ resources:
+ - '*'
+ verbs:
+ - '*'
+- apiGroups:
+ - ""
+ resources:
+ - namespaces
+ - secrets
+ - configmaps
+ - serviceaccounts
+ verbs:
+ - get
+ - list
+ - watch
+- apiGroups:
+ - ""
+ resources:
+ - events
+ verbs:
+ - create
+ - patch
+- apiGroups:
+ - ""
+ resources:
+ - configmaps
+ verbs:
+ - get
+ - list
+ - watch
+ - create
+ - update
+ - patch
+ - delete
+- apiGroups:
+ - ""
+ resources:
+ - configmaps/status
+ verbs:
+ - get
+ - update
+ - patch
+- apiGroups:
+ - coordination.k8s.io
+ resources:
+ - leases
+ verbs:
+ - get
+ - list
+ - watch
+ - create
+ - update
+ - patch
+ - delete
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ name: cluster-reconciler-flux-system
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: cluster-admin
+subjects:
+- kind: ServiceAccount
+ name: kustomize-controller
+ namespace: flux-system
+- kind: ServiceAccount
+ name: helm-controller
+ namespace: flux-system
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ name: crd-controller-flux-system
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: crd-controller-flux-system
+subjects:
+- kind: ServiceAccount
+ name: kustomize-controller
+ namespace: flux-system
+- kind: ServiceAccount
+ name: helm-controller
+ namespace: flux-system
+- kind: ServiceAccount
+ name: source-controller
+ namespace: flux-system
+- kind: ServiceAccount
+ name: notification-controller
+ namespace: flux-system
+- kind: ServiceAccount
+ name: image-reflector-controller
+ namespace: flux-system
+- kind: ServiceAccount
+ name: image-automation-controller
+ namespace: flux-system
+---
+apiVersion: v1
+kind: Service
+metadata:
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ control-plane: controller
+ name: notification-controller
+ namespace: flux-system
+spec:
+ ports:
+ - name: http
+ port: 80
+ protocol: TCP
+ targetPort: http
+ selector:
+ app: notification-controller
+ type: ClusterIP
+---
+apiVersion: v1
+kind: Service
+metadata:
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ control-plane: controller
+ name: source-controller
+ namespace: flux-system
+spec:
+ ports:
+ - name: http
+ port: 80
+ protocol: TCP
+ targetPort: http
+ selector:
+ app: source-controller
+ type: ClusterIP
+---
+apiVersion: v1
+kind: Service
+metadata:
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ control-plane: controller
+ name: webhook-receiver
+ namespace: flux-system
+spec:
+ ports:
+ - name: http
+ port: 80
+ protocol: TCP
+ targetPort: http-webhook
+ selector:
+ app: notification-controller
+ type: ClusterIP
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ control-plane: controller
+ name: helm-controller
+ namespace: flux-system
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: helm-controller
+ template:
+ metadata:
+ annotations:
+ prometheus.io/port: "8080"
+ prometheus.io/scrape: "true"
+ labels:
+ app: helm-controller
+ spec:
+ containers:
+ - args:
+ - --events-addr=http://notification-controller.flux-system.svc.cluster.local./
+ - --watch-all-namespaces=true
+ - --log-level=info
+ - --log-encoding=json
+ - --enable-leader-election
+ env:
+ - name: RUNTIME_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ image: ghcr.io/fluxcd/helm-controller:v0.22.2
+ imagePullPolicy: IfNotPresent
+ livenessProbe:
+ httpGet:
+ path: /healthz
+ port: healthz
+ name: manager
+ ports:
+ - containerPort: 8080
+ name: http-prom
+ protocol: TCP
+ - containerPort: 9440
+ name: healthz
+ protocol: TCP
+ readinessProbe:
+ httpGet:
+ path: /readyz
+ port: healthz
+ resources:
+ limits:
+ cpu: 1000m
+ memory: 1Gi
+ requests:
+ cpu: 100m
+ memory: 64Mi
+ securityContext:
+ allowPrivilegeEscalation: false
+ capabilities:
+ drop:
+ - ALL
+ readOnlyRootFilesystem: true
+ runAsNonRoot: true
+ seccompProfile:
+ type: RuntimeDefault
+ volumeMounts:
+ - mountPath: /tmp
+ name: temp
+ nodeSelector:
+ kubernetes.io/os: linux
+ securityContext:
+ fsGroup: 1337
+ serviceAccountName: helm-controller
+ terminationGracePeriodSeconds: 600
+ volumes:
+ - emptyDir: {}
+ name: temp
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ control-plane: controller
+ name: kustomize-controller
+ namespace: flux-system
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: kustomize-controller
+ template:
+ metadata:
+ annotations:
+ prometheus.io/port: "8080"
+ prometheus.io/scrape: "true"
+ labels:
+ app: kustomize-controller
+ spec:
+ containers:
+ - args:
+ - --events-addr=http://notification-controller.flux-system.svc.cluster.local./
+ - --watch-all-namespaces=true
+ - --log-level=info
+ - --log-encoding=json
+ - --enable-leader-election
+ env:
+ - name: RUNTIME_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ image: ghcr.io/fluxcd/kustomize-controller:v0.26.3
+ imagePullPolicy: IfNotPresent
+ livenessProbe:
+ httpGet:
+ path: /healthz
+ port: healthz
+ name: manager
+ ports:
+ - containerPort: 8080
+ name: http-prom
+ protocol: TCP
+ - containerPort: 9440
+ name: healthz
+ protocol: TCP
+ readinessProbe:
+ httpGet:
+ path: /readyz
+ port: healthz
+ resources:
+ limits:
+ cpu: 1000m
+ memory: 1Gi
+ requests:
+ cpu: 100m
+ memory: 64Mi
+ securityContext:
+ allowPrivilegeEscalation: false
+ capabilities:
+ drop:
+ - ALL
+ readOnlyRootFilesystem: true
+ runAsNonRoot: true
+ seccompProfile:
+ type: RuntimeDefault
+ volumeMounts:
+ - mountPath: /tmp
+ name: temp
+ nodeSelector:
+ kubernetes.io/os: linux
+ securityContext:
+ fsGroup: 1337
+ serviceAccountName: kustomize-controller
+ terminationGracePeriodSeconds: 60
+ volumes:
+ - emptyDir: {}
+ name: temp
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ control-plane: controller
+ name: notification-controller
+ namespace: flux-system
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: notification-controller
+ template:
+ metadata:
+ annotations:
+ prometheus.io/port: "8080"
+ prometheus.io/scrape: "true"
+ labels:
+ app: notification-controller
+ spec:
+ containers:
+ - args:
+ - --watch-all-namespaces=true
+ - --log-level=info
+ - --log-encoding=json
+ - --enable-leader-election
+ env:
+ - name: RUNTIME_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ image: ghcr.io/fluxcd/notification-controller:v0.24.1
+ imagePullPolicy: IfNotPresent
+ livenessProbe:
+ httpGet:
+ path: /healthz
+ port: healthz
+ name: manager
+ ports:
+ - containerPort: 9090
+ name: http
+ protocol: TCP
+ - containerPort: 9292
+ name: http-webhook
+ protocol: TCP
+ - containerPort: 8080
+ name: http-prom
+ protocol: TCP
+ - containerPort: 9440
+ name: healthz
+ protocol: TCP
+ readinessProbe:
+ httpGet:
+ path: /readyz
+ port: healthz
+ resources:
+ limits:
+ cpu: 1000m
+ memory: 1Gi
+ requests:
+ cpu: 100m
+ memory: 64Mi
+ securityContext:
+ allowPrivilegeEscalation: false
+ capabilities:
+ drop:
+ - ALL
+ readOnlyRootFilesystem: true
+ runAsNonRoot: true
+ seccompProfile:
+ type: RuntimeDefault
+ volumeMounts:
+ - mountPath: /tmp
+ name: temp
+ nodeSelector:
+ kubernetes.io/os: linux
+ securityContext:
+ fsGroup: 1337
+ serviceAccountName: notification-controller
+ terminationGracePeriodSeconds: 10
+ volumes:
+ - emptyDir: {}
+ name: temp
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ control-plane: controller
+ name: source-controller
+ namespace: flux-system
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: source-controller
+ strategy:
+ type: Recreate
+ template:
+ metadata:
+ annotations:
+ prometheus.io/port: "8080"
+ prometheus.io/scrape: "true"
+ labels:
+ app: source-controller
+ spec:
+ containers:
+ - args:
+ - --events-addr=http://notification-controller.flux-system.svc.cluster.local./
+ - --watch-all-namespaces=true
+ - --log-level=info
+ - --log-encoding=json
+ - --enable-leader-election
+ - --storage-path=/data
+ - --storage-adv-addr=source-controller.$(RUNTIME_NAMESPACE).svc.cluster.local.
+ env:
+ - name: RUNTIME_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ image: ghcr.io/fluxcd/source-controller:v0.25.11
+ imagePullPolicy: IfNotPresent
+ livenessProbe:
+ httpGet:
+ path: /healthz
+ port: healthz
+ name: manager
+ ports:
+ - containerPort: 9090
+ name: http
+ protocol: TCP
+ - containerPort: 8080
+ name: http-prom
+ protocol: TCP
+ - containerPort: 9440
+ name: healthz
+ protocol: TCP
+ readinessProbe:
+ httpGet:
+ path: /
+ port: http
+ resources:
+ limits:
+ cpu: 1000m
+ memory: 1Gi
+ requests:
+ cpu: 50m
+ memory: 64Mi
+ securityContext:
+ allowPrivilegeEscalation: false
+ capabilities:
+ drop:
+ - ALL
+ readOnlyRootFilesystem: true
+ runAsNonRoot: true
+ seccompProfile:
+ type: RuntimeDefault
+ volumeMounts:
+ - mountPath: /data
+ name: data
+ - mountPath: /tmp
+ name: tmp
+ nodeSelector:
+ kubernetes.io/os: linux
+ securityContext:
+ fsGroup: 1337
+ serviceAccountName: source-controller
+ terminationGracePeriodSeconds: 10
+ volumes:
+ - emptyDir: {}
+ name: data
+ - emptyDir: {}
+ name: tmp
+---
+apiVersion: networking.k8s.io/v1
+kind: NetworkPolicy
+metadata:
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ name: allow-egress
+ namespace: flux-system
+spec:
+ egress:
+ - {}
+ ingress:
+ - from:
+ - podSelector: {}
+ podSelector: {}
+ policyTypes:
+ - Ingress
+ - Egress
+---
+apiVersion: networking.k8s.io/v1
+kind: NetworkPolicy
+metadata:
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ name: allow-scraping
+ namespace: flux-system
+spec:
+ ingress:
+ - from:
+ - namespaceSelector: {}
+ ports:
+ - port: 8080
+ protocol: TCP
+ podSelector: {}
+ policyTypes:
+ - Ingress
+---
+apiVersion: networking.k8s.io/v1
+kind: NetworkPolicy
+metadata:
+ labels:
+ app.kubernetes.io/instance: flux-system
+ app.kubernetes.io/part-of: flux
+ app.kubernetes.io/version: v0.31.5
+ name: allow-webhooks
+ namespace: flux-system
+spec:
+ ingress:
+ - from:
+ - namespaceSelector: {}
+ podSelector:
+ matchLabels:
+ app: notification-controller
+ policyTypes:
+ - Ingress
diff --git a/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/flux-system/gotk-sync.yaml b/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/flux-system/gotk-sync.yaml
new file mode 100644
index 0000000..a14dbf3
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/flux-system/gotk-sync.yaml
@@ -0,0 +1,27 @@
+# This manifest was generated by flux. DO NOT EDIT.
+---
+apiVersion: source.toolkit.fluxcd.io/v1beta2
+kind: GitRepository
+metadata:
+ name: flux-system
+ namespace: flux-system
+spec:
+ interval: 1m0s
+ ref:
+ branch: master
+ secretRef:
+ name: flux-system
+ url: ssh://tyil@10.57.100.7/home/tyil/.local/git/tyilnet
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
+kind: Kustomization
+metadata:
+ name: flux-system
+ namespace: flux-system
+spec:
+ interval: 10m0s
+ path: ./playbooks.d/k3s-master/share/manifests/clusters/hurzak.tyil.net
+ prune: true
+ sourceRef:
+ kind: GitRepository
+ name: flux-system
diff --git a/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/flux-system/kustomization.yaml b/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/flux-system/kustomization.yaml
new file mode 100644
index 0000000..3842229
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/flux-system/kustomization.yaml
@@ -0,0 +1,5 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- gotk-components.yaml
+- gotk-sync.yaml
diff --git a/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/infrastructure-configuration.yaml b/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/infrastructure-configuration.yaml
new file mode 100644
index 0000000..9df248a
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/infrastructure-configuration.yaml
@@ -0,0 +1,17 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
+kind: Kustomization
+metadata:
+ name: infrastructure-configurations
+ namespace: flux-system
+spec:
+ interval: 10m0s
+ dependsOn:
+ - name: infrastructure-releases
+ sourceRef:
+ kind: GitRepository
+ name: flux-system
+ path: ./playbooks.d/k3s-master/share/manifests/infrastructure/configuration
+ prune: true
+ wait: true
+...
diff --git a/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/infrastructure-releases.yaml b/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/infrastructure-releases.yaml
new file mode 100644
index 0000000..cc449ac
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/infrastructure-releases.yaml
@@ -0,0 +1,17 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
+kind: Kustomization
+metadata:
+ name: infrastructure-releases
+ namespace: flux-system
+spec:
+ interval: 10m0s
+ dependsOn:
+ - name: infrastructure-sources
+ sourceRef:
+ kind: GitRepository
+ name: flux-system
+ path: ./playbooks.d/k3s-master/share/manifests/infrastructure/releases
+ prune: true
+ wait: true
+...
diff --git a/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/infrastructure-sources.yaml b/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/infrastructure-sources.yaml
new file mode 100644
index 0000000..eda76f3
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/infrastructure-sources.yaml
@@ -0,0 +1,17 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
+kind: Kustomization
+metadata:
+ name: infrastructure-sources
+ namespace: flux-system
+spec:
+ interval: 10m0s
+ dependsOn:
+ - name: namespaces
+ sourceRef:
+ kind: GitRepository
+ name: flux-system
+ path: ./playbooks.d/k3s-master/share/manifests/infrastructure/sources
+ prune: true
+ wait: true
+...
diff --git a/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/namespaces.yaml b/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/namespaces.yaml
new file mode 100644
index 0000000..4fc4292
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/clusters/hurzak.tyil.net/namespaces.yaml
@@ -0,0 +1,14 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
+kind: Kustomization
+metadata:
+ name: namespaces
+ namespace: flux-system
+spec:
+ interval: 10m0s
+ sourceRef:
+ kind: GitRepository
+ name: flux-system
+ path: ./playbooks.d/k3s-master/share/manifests/namespaces
+ prune: true
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/configuration/cluster-issuers/kustomization.yaml b/playbooks.d/k3s-master/manifests/infrastructure/configuration/cluster-issuers/kustomization.yaml
new file mode 100644
index 0000000..c9e511c
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/configuration/cluster-issuers/kustomization.yaml
@@ -0,0 +1,7 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- letsencrypt-staging.yaml
+- letsencrypt-production.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/configuration/cluster-issuers/letsencrypt-production.yaml b/playbooks.d/k3s-master/manifests/infrastructure/configuration/cluster-issuers/letsencrypt-production.yaml
new file mode 100644
index 0000000..75aea5f
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/configuration/cluster-issuers/letsencrypt-production.yaml
@@ -0,0 +1,16 @@
+---
+apiVersion: cert-manager.io/v1
+kind: ClusterIssuer
+metadata:
+ name: letsencrypt-production
+spec:
+ acme:
+ email: root@tyil.net
+ server: https://acme-v02.api.letsencrypt.org/directory
+ privateKeySecretRef:
+ name: clusterissuer-letsencrypt-production
+ solvers:
+ - http01:
+ ingress:
+ class: nginx
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/configuration/cluster-issuers/letsencrypt-staging.yaml b/playbooks.d/k3s-master/manifests/infrastructure/configuration/cluster-issuers/letsencrypt-staging.yaml
new file mode 100644
index 0000000..73a1f50
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/configuration/cluster-issuers/letsencrypt-staging.yaml
@@ -0,0 +1,17 @@
+---
+apiVersion: cert-manager.io/v1
+kind: ClusterIssuer
+metadata:
+ name: letsencrypt-staging
+spec:
+ acme:
+ email: root@tyil.net
+ server: https://acme-staging-v02.api.letsencrypt.org/directory
+ privateKeySecretRef:
+ name: clusterissuer-letsencrypt-staging
+ solvers:
+ - http01:
+ ingress:
+ class: nginx
+ selector: {}
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/configuration/kustomization.yaml b/playbooks.d/k3s-master/manifests/infrastructure/configuration/kustomization.yaml
new file mode 100644
index 0000000..b1b320b
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/configuration/kustomization.yaml
@@ -0,0 +1,6 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- cluster-issuers
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/releases/cert-manager/kustomization.yaml b/playbooks.d/k3s-master/manifests/infrastructure/releases/cert-manager/kustomization.yaml
new file mode 100644
index 0000000..3c7eaaa
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/releases/cert-manager/kustomization.yaml
@@ -0,0 +1,6 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- release.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/releases/cert-manager/release.yaml b/playbooks.d/k3s-master/manifests/infrastructure/releases/cert-manager/release.yaml
new file mode 100644
index 0000000..794d631
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/releases/cert-manager/release.yaml
@@ -0,0 +1,20 @@
+---
+apiVersion: helm.toolkit.fluxcd.io/v2beta1
+kind: HelmRelease
+metadata:
+ name: cert-manager
+ namespace: base-system
+spec:
+ interval: 5m
+ chart:
+ spec:
+ chart: cert-manager
+ version: 1.9.1
+ sourceRef:
+ kind: HelmRepository
+ name: jetstack
+ namespace: flux-system
+ interval: 1m
+ values:
+ installCRDs: true
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/releases/external-dns/kustomization.yaml b/playbooks.d/k3s-master/manifests/infrastructure/releases/external-dns/kustomization.yaml
new file mode 100644
index 0000000..f542f00
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/releases/external-dns/kustomization.yaml
@@ -0,0 +1,7 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- values.yaml
+- release.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/releases/external-dns/release.yaml b/playbooks.d/k3s-master/manifests/infrastructure/releases/external-dns/release.yaml
new file mode 100644
index 0000000..96b652c
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/releases/external-dns/release.yaml
@@ -0,0 +1,24 @@
+---
+apiVersion: helm.toolkit.fluxcd.io/v2beta1
+kind: HelmRelease
+metadata:
+ name: external-dns
+ namespace: base-system
+spec:
+ interval: 5m
+ chart:
+ spec:
+ chart: external-dns
+ version: 6.7.2
+ sourceRef:
+ kind: HelmRepository
+ name: bitnami
+ namespace: flux-system
+ interval: 1m
+ values:
+ provider: transip
+ valuesFrom:
+ - kind: Secret
+ name: valuefile-external-dns
+ valuesKey: values.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/releases/external-dns/values.yaml b/playbooks.d/k3s-master/manifests/infrastructure/releases/external-dns/values.yaml
new file mode 100644
index 0000000..20d1d7a
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/releases/external-dns/values.yaml
@@ -0,0 +1,17 @@
+apiVersion: bitnami.com/v1alpha1
+kind: SealedSecret
+metadata:
+ creationTimestamp: null
+ name: valuefile-external-dns
+ namespace: base-system
+spec:
+ encryptedData:
+ values.yaml: AgDBViaHigL6gDUQRnXRPkMZY1gu0Z3fIBCL4Z1c0kjxe7wIEqHcfPCubw6Kjn0gFF3iasHNbJxH+xIWu3j+lBcMlPCofPGxDfchRnA6BrgZQ++47vxlarQOlxgwgEL1Rojf9MgG+VfjHZ1Kotb0aJgiV4l81JlRJGzCa+DqBLEEjwUntWZQ2du5PElBm1MgfHHw8J7VHUngEkc9pF5lSwV94hGXZoLz7MUQ36klknRoBlQpMEVylyB/LoFXRscXMNaTHvItSZwZcaxFRUDuFtkbA0hC1Dj9li5AZcV1vhGqVcI/sAl/AN9lrCwVoQaRuhMruHRojU4KlLP1S+l5NjZ/+WMmmhhm6isQMDt0KJUnQsVjjwi1i2sm5wax4ZWPqbuzmzknr8reZBdc+9RAgA8UoGfWtO0lZWmiKO/TB5jiW/0BYSRlkhzwyFh76cFcPJA9TzeEJ5EgV+nHETeRvVuchJ5O0hEK46hscqO0au2+jXhQYmVDq5XB2yljbB3o9l9lipaZ/aVgf1jZpvvHzJcxwRqPuNZMffz2aKocZ9xZsQzNc0owfNDn6ZxTkFdMg7Za5KoQIxE8bMrRiub7LOVzbkm/+0fn4+uw/rkQQNomKcbQm8+OB+IAUOZHpyq3UUMUf1KeJ9ZpV4N0bFBiW0uq1rXJNaWPaDazqq923tlA8gk9xKftBMfJI9x/CcxBIeUtI0idaeD9mU4+mf6gJZi9LbIoMOtFNS02X8/on+xejo5mI9FLWKGFYosGZEsqjmv6a9OdHI8BWOVd3cdGvp9M5EacAku3yejfAEoW+lTdb3isCeOEjhhetNIvor7cIaJuYP7fgIgDU829lfufdgMM00hUieXRVU9SaT888mPtkhTJXBTqRYovB3QGGN6R35xxVlkTOJay/zrC7Xl90oHvAckYAfqcjOfSLsGOI0gbegqCmwJ+zXQZh7KJti1nUnP0Umcld4MQYIu3Vj3W0ChAKiGEoMD2mAH2ZMyCjla1FIHvZ8bJcdFJ56Y4ekqYP/kcG54+T8W3lOZew3iZA7/MUD5IyotN5WPr6Jz4NbOTC3oqB1KjqMvJPyh3OMHaWBZv6H5xmXEdGExWI9Sf4d+yxEfwIZdk6Xi3a76rLQxrbGhi4Ncpx3rKxt/6OrA/fEd8O1DW+p7qqhdVyB033odonhJm7cwvihmkCJl8NvysmrYgXf+t/Y8kAmCLozDzKHLMi0qEyhDVUMjmzp2TzH3xL2Ocs+4eFT3DhiYqkUMTMqZUgHUoYoLbswyZZQW/VgvonaJBYDhd97zMfQP3bJMHeupN/dO7Xn/snnFgsG43SQj7BcrEe2hXWfpDlZtiN45gtFZfjcn1LmL9q7nxj9dvR/otIHkWzkj9XzuURGNrQoYZBf533BomQTZaB7UyF0bkHZobs1WJUtKa+qLoYOUan5XCcS74wlotLjn9hd2kIhbceDGpSJcreXGjBvwcRqBJ3d3IV8p56Y8jNJsj9xZ+uysuykCEoHyywuYFJUNpcY9diydIJDFFnyoQg5fi96Ezzu7iDwH+yFTIGufwiLvbSmPi3uOPWOY9bDvSbHFsE45J7LWLMqwxXFrba0kZ0Nf3elJBl1gv03I6KABowsQ4q5eWxruYnGjsbJcjGR+p6oiHmGmd6D9Y5gBbwt3sZ7mCf9C5IUCOS083W4n/eB0iDBiwMg/3COOHzD2w3LM178Tz0ilpemSmp6T3OBzo/RbgKihNcpuVXn4Y9f3abfeKI2ubLlSJAQDykvzWFaBkmgX7QvMQA/LFzRpl1xphQ+9G55ndzm7ssLn97wrV3K5aisHj5V/AA0xE5VpmgWFbc6YH9tlLw9QVyPX93g9v7hFLuW+eV4pVVT9v2rgF/XvkP9SPheWXMhAIxLwEOxH2PkU/e/HDrfgBs3+/u5jLy7FcTxyc7JxXsK88bqU4+OhSAMVuVAGGMspqWlrkNa27a9Zuj1xSUnYlInOLgGjTi0WlzN1TH6V5xglHr4qAFgBQnx+KJpNY43ggi6en5gocTU9gsJ3qbm6xnWuKR1vu2daubdN0wM5yzz7Nzc0FjpK7OyR1qZTsmvKP+VrmnpxqtlsLYWjt8zX2mFJoRESLBwgAd5Iy7qvNE1kjIpLqGJ+Ped19qgyrFmdpoTZDiriEENUbGXRT6px5DmG3RJshMdZ0YNZAsuDYnIT/g+UrX/4jFnIgFAKqHUQpCaWeCR7DFDRRiihGwQGPvykQpbg4HSJD8FXpyMJnN0ruvlHGuIh3eyUvp73ivM+9zCoaWEMDvrked4g7BjXAtrve/enMitcA/clvn0bolme7Mx9P2CJ5kuu3/Rp3lxKU1xn7Hy0FusaVmcOcgYxG7w6mzMi3HHFniY/GZx4X8l0ig0brc0bFDu7qSKs8BKbRpNVukKwC+vkKzGcOAsZfdHalo/6orej7tj62goBl9iMDayZ10G2aOf19P1UrXPIhVIb7wW+gW4U89rRchD8pM/71WkCN4pTgTuqtaj0tyqjd9gOW+J6mZw02gfSJqCAliJstiQYbe9+kCJjZyhuRjr70RSqDZSo6sae1SYhddohRs5FZIOhy1vSTH3fcVdBRb7LM+L3XV+PkMX6IiURYyy/I/qOupzwur1vAKsaTTqaPqHxDRe53ACaY4XOACJ20fqaj8CdANY1ha711o5ZQT3mZJBtSaqbr3bRGKgiMSFSkp/dVBcnp49SCArLXFC6wC5gdgHn8c68i/B7U4FRQJHkSzHLStVKshuo9UZkfWnie9aFq/k8MYlcj6HBYo5p62L4xxCPv6hCrdtZHVA79xWCgDAMky7CubTSvOkXcQm4+wuPBoioMLXeXNaCh2tTWBHbdM8yRO9MgMwjoI+qaHsnze7f3cgSBRBMGPIMyUal+DhLbAqRsk6q//oaS98RH/SfIMULu9wsKEQSJAogxRIx4zXLU35+5I5DSqY5omReyJDHDL1paLuyjFo7V3Nbn/p3q2rtc6F3NuzAKmQZRSTnNlAW3sgX3RQ2CRCofPB0ai8k2dbpNF+1I+H79+r4xUy9Zhx1b4cyoA6Q1dzH7ey9hQ0S4vc8ps9LP/mULa/xz/MDDC+/T9CGtv1JXMCvpyYtx5nfDbuY7m5T5c7laSoF8WfjDU9v+OwZOfsIY2z2EA3eG0gDwHfMaCyHTjnT7JtcjAInR
+ template:
+ data: null
+ metadata:
+ creationTimestamp: null
+ name: valuefile-external-dns
+ namespace: base-system
+ type: Opaque
+
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/releases/ingress-nginx/kustomization.yaml b/playbooks.d/k3s-master/manifests/infrastructure/releases/ingress-nginx/kustomization.yaml
new file mode 100644
index 0000000..3c7eaaa
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/releases/ingress-nginx/kustomization.yaml
@@ -0,0 +1,6 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- release.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/releases/ingress-nginx/release.yaml b/playbooks.d/k3s-master/manifests/infrastructure/releases/ingress-nginx/release.yaml
new file mode 100644
index 0000000..dc5a3e8
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/releases/ingress-nginx/release.yaml
@@ -0,0 +1,26 @@
+---
+apiVersion: helm.toolkit.fluxcd.io/v2beta1
+kind: HelmRelease
+metadata:
+ name: ingress-nginx
+ namespace: base-system
+spec:
+ interval: 5m
+ chart:
+ spec:
+ chart: ingress-nginx
+ version: 4.2.0
+ sourceRef:
+ kind: HelmRepository
+ name: ingress-nginx
+ namespace: flux-system
+ interval: 1m
+ values:
+ controller:
+ replicaCount: 1
+ service:
+ ports:
+ http: 8080
+ https: 8443
+ watchIngressWithoutClass: true
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/releases/kustomization.yaml b/playbooks.d/k3s-master/manifests/infrastructure/releases/kustomization.yaml
new file mode 100644
index 0000000..c3e8794
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/releases/kustomization.yaml
@@ -0,0 +1,9 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- sealed-secrets
+- ingress-nginx
+- cert-manager
+- seaweedfs-csi-driver
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/releases/sealed-secrets/kustomization.yaml b/playbooks.d/k3s-master/manifests/infrastructure/releases/sealed-secrets/kustomization.yaml
new file mode 100644
index 0000000..3c7eaaa
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/releases/sealed-secrets/kustomization.yaml
@@ -0,0 +1,6 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- release.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/releases/sealed-secrets/release.yaml b/playbooks.d/k3s-master/manifests/infrastructure/releases/sealed-secrets/release.yaml
new file mode 100644
index 0000000..fe9ef26
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/releases/sealed-secrets/release.yaml
@@ -0,0 +1,19 @@
+---
+apiVersion: helm.toolkit.fluxcd.io/v2beta1
+kind: HelmRelease
+metadata:
+ name: sealed-secrets-controller
+ namespace: kube-system
+spec:
+ interval: 5m
+ chart:
+ spec:
+ chart: sealed-secrets
+ version: 1.0.10
+ sourceRef:
+ kind: HelmRepository
+ name: bitnami
+ namespace: flux-system
+ interval: 1m
+ values: {}
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/releases/seaweedfs-csi-driver/kustomization.yaml b/playbooks.d/k3s-master/manifests/infrastructure/releases/seaweedfs-csi-driver/kustomization.yaml
new file mode 100644
index 0000000..3c7eaaa
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/releases/seaweedfs-csi-driver/kustomization.yaml
@@ -0,0 +1,6 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- release.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/releases/seaweedfs-csi-driver/release.yaml b/playbooks.d/k3s-master/manifests/infrastructure/releases/seaweedfs-csi-driver/release.yaml
new file mode 100644
index 0000000..750e6fa
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/releases/seaweedfs-csi-driver/release.yaml
@@ -0,0 +1,22 @@
+---
+apiVersion: helm.toolkit.fluxcd.io/v2beta1
+kind: HelmRelease
+metadata:
+ name: seaweedfs-csi-driver
+ namespace: base-system
+spec:
+ interval: 5m
+ chart:
+ spec:
+ chart: ./deploy/helm/seaweedfs-csi-driver
+ version: 0.1.1
+ sourceRef:
+ kind: GitRepository
+ name: seaweedfs
+ namespace: flux-system
+ interval: 1m
+ values:
+ seaweedfsFiler: 10.57.21.1
+ storageClassName: seaweedfs
+ isDefaultStorageClass: false
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/sources/bitnami.yaml b/playbooks.d/k3s-master/manifests/infrastructure/sources/bitnami.yaml
new file mode 100644
index 0000000..ef29afb
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/sources/bitnami.yaml
@@ -0,0 +1,10 @@
+---
+apiVersion: source.toolkit.fluxcd.io/v1beta2
+kind: HelmRepository
+metadata:
+ name: bitnami
+ namespace: flux-system
+spec:
+ interval: 1m
+ url: https://charts.bitnami.com/bitnami
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/sources/ingress-nginx.yaml b/playbooks.d/k3s-master/manifests/infrastructure/sources/ingress-nginx.yaml
new file mode 100644
index 0000000..cd006ac
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/sources/ingress-nginx.yaml
@@ -0,0 +1,10 @@
+---
+apiVersion: source.toolkit.fluxcd.io/v1beta2
+kind: HelmRepository
+metadata:
+ name: ingress-nginx
+ namespace: flux-system
+spec:
+ interval: 1m
+ url: https://kubernetes.github.io/ingress-nginx
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/sources/jetstack.yaml b/playbooks.d/k3s-master/manifests/infrastructure/sources/jetstack.yaml
new file mode 100644
index 0000000..782ba14
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/sources/jetstack.yaml
@@ -0,0 +1,10 @@
+---
+apiVersion: source.toolkit.fluxcd.io/v1beta2
+kind: HelmRepository
+metadata:
+ name: jetstack
+ namespace: flux-system
+spec:
+ interval: 1m
+ url: https://charts.jetstack.io
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/sources/kustomization.yaml b/playbooks.d/k3s-master/manifests/infrastructure/sources/kustomization.yaml
new file mode 100644
index 0000000..a87331d
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/sources/kustomization.yaml
@@ -0,0 +1,12 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- bitnami.yaml
+- ingress-nginx.yaml
+- jetstack.yaml
+- nextcloud.yaml
+- seaweedfs.yaml
+- tyil-invidious.yaml
+- tyil-nitter.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/sources/nextcloud.yaml b/playbooks.d/k3s-master/manifests/infrastructure/sources/nextcloud.yaml
new file mode 100644
index 0000000..1594b3b
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/sources/nextcloud.yaml
@@ -0,0 +1,10 @@
+---
+apiVersion: source.toolkit.fluxcd.io/v1beta2
+kind: HelmRepository
+metadata:
+ name: nextcloud
+ namespace: flux-system
+spec:
+ interval: 1m
+ url: https://nextcloud.github.io/helm/
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/sources/seaweedfs.yaml b/playbooks.d/k3s-master/manifests/infrastructure/sources/seaweedfs.yaml
new file mode 100644
index 0000000..cba7a16
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/sources/seaweedfs.yaml
@@ -0,0 +1,12 @@
+---
+apiVersion: source.toolkit.fluxcd.io/v1beta2
+kind: GitRepository
+metadata:
+ name: seaweedfs
+ namespace: flux-system
+spec:
+ interval: 1m
+ url: https://github.com/seaweedfs/seaweedfs-csi-driver
+ ref:
+ branch: master
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/sources/tyil-invidious.yaml b/playbooks.d/k3s-master/manifests/infrastructure/sources/tyil-invidious.yaml
new file mode 100644
index 0000000..1633026
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/sources/tyil-invidious.yaml
@@ -0,0 +1,12 @@
+---
+apiVersion: source.toolkit.fluxcd.io/v1beta2
+kind: GitRepository
+metadata:
+ name: tyil-helm-invidious
+ namespace: flux-system
+spec:
+ interval: 1m
+ url: https://git.sr.ht/~tyil/helm-invidious
+ ref:
+ branch: master
+...
diff --git a/playbooks.d/k3s-master/manifests/infrastructure/sources/tyil-nitter.yaml b/playbooks.d/k3s-master/manifests/infrastructure/sources/tyil-nitter.yaml
new file mode 100644
index 0000000..d7cc48c
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/infrastructure/sources/tyil-nitter.yaml
@@ -0,0 +1,12 @@
+---
+apiVersion: source.toolkit.fluxcd.io/v1beta2
+kind: GitRepository
+metadata:
+ name: tyil-helm-nitter
+ namespace: flux-system
+spec:
+ interval: 1m
+ url: https://git.sr.ht/~tyil/helm-nitter
+ ref:
+ branch: master
+...
diff --git a/playbooks.d/k3s-master/manifests/namespaces/base-system.yaml b/playbooks.d/k3s-master/manifests/namespaces/base-system.yaml
new file mode 100644
index 0000000..78d7ab7
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/namespaces/base-system.yaml
@@ -0,0 +1,6 @@
+---
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: base-system
+...
diff --git a/playbooks.d/k3s-master/manifests/namespaces/kustomization.yaml b/playbooks.d/k3s-master/manifests/namespaces/kustomization.yaml
new file mode 100644
index 0000000..b05f7e7
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/namespaces/kustomization.yaml
@@ -0,0 +1,10 @@
+---
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- base-system.yaml
+- media.yaml
+- personal-services.yaml
+- public-services.yaml
+- servarr.yaml
+...
diff --git a/playbooks.d/k3s-master/manifests/namespaces/media.yaml b/playbooks.d/k3s-master/manifests/namespaces/media.yaml
new file mode 100644
index 0000000..32f23de
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/namespaces/media.yaml
@@ -0,0 +1,6 @@
+---
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: media
+...
diff --git a/playbooks.d/k3s-master/manifests/namespaces/personal-services.yaml b/playbooks.d/k3s-master/manifests/namespaces/personal-services.yaml
new file mode 100644
index 0000000..f9151e9
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/namespaces/personal-services.yaml
@@ -0,0 +1,6 @@
+---
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: personal-services
+...
diff --git a/playbooks.d/k3s-master/manifests/namespaces/public-services.yaml b/playbooks.d/k3s-master/manifests/namespaces/public-services.yaml
new file mode 100644
index 0000000..15a4f07
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/namespaces/public-services.yaml
@@ -0,0 +1,6 @@
+---
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: public-services
+...
diff --git a/playbooks.d/k3s-master/manifests/namespaces/servarr.yaml b/playbooks.d/k3s-master/manifests/namespaces/servarr.yaml
new file mode 100644
index 0000000..247de1e
--- /dev/null
+++ b/playbooks.d/k3s-master/manifests/namespaces/servarr.yaml
@@ -0,0 +1,6 @@
+---
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: servarr
+...