update backup password
This commit is contained in:
		| @@ -21,10 +21,14 @@ spec: | ||||
|             command: ["curl"] | ||||
|             args: | ||||
|               - "-H" | ||||
|               - "Title: $(cat /proc/sys/kernel/hostname)" | ||||
|               - "Title: $OPERATION" | ||||
|               - "-d" | ||||
|               - "Restic operation to gdrive finished" | ||||
|               - "Finished successfully" | ||||
|               - "https://ntfy.kluster.moll.re/backup" | ||||
|             env: | ||||
|               - name: OPERATION | ||||
|                 value: "PLACEHOLDER" | ||||
|  | ||||
|           initContainers: | ||||
|           - name: restic-base-container | ||||
|             image: restic/restic:latest | ||||
|   | ||||
| @@ -23,3 +23,8 @@ spec: | ||||
|                   && | ||||
|                   restic | ||||
|                   list snapshots | ||||
|           containers: | ||||
|           - name: ntfy-command-send | ||||
|             env: | ||||
|               - name: OPERATION | ||||
|                 value: "Restic backup to gdrive" | ||||
| @@ -22,3 +22,8 @@ spec: | ||||
|                   --verbose=2 | ||||
|                   --keep-daily 7 --keep-weekly 5 | ||||
|                   --prune | ||||
|           containers: | ||||
|           - name: ntfy-command-send | ||||
|             env: | ||||
|               - name: OPERATION | ||||
|                 value: "Restic prune on gdrive" | ||||
| @@ -1,2 +0,0 @@ | ||||
| export RESTIC_REPOSITORY=rest:http://127.0.0.1:8000/kluster | ||||
| export RESTIC_PASSWORD="2r,TE0.,U@gni3e%xr)_LC64" | ||||
| @@ -16,7 +16,7 @@ | ||||
|       "type": "Opaque" | ||||
|     }, | ||||
|     "encryptedData": { | ||||
|       "restic-password": "AgB5b+dgVUtVo5QPPFBYWuqNZd7vMSbTapVh7SIl1ogy+/WWpzDDSgsPvki2Qtxv11tljTQkhkhonil0aYcHgA/4LDEt9yuvB2SNpEkl+C2N5NO1Fn3sUtaDRVBT/eaUhEjXTlRN6XiYfDRgNwBVpH3AUwKHa3dqxCJ6fQazUEhn3Xymxpo/GZkScf5k+fhkBi2/YnzM9Kdl3C9r8Ekw1eg2Pan7KSkFRk1rkGuDJKdhsYBrmu632yU7x8no7rGAIzxYJpDYqJnXp6Y3nUTBMpwNibOszAwTdP+ShgnILSmi0izZrIzvvvwAjNu6hKrhPlcTx3ZA2NrClRYtXx1gqCgVmGRzonqLuzVnWzd2efWDHkb8S0QnYjN0aAeAvR6x77TdIm8b9WMhAqeheikXh9zrrB4GqLoSxpkgmRezJFBVQ01vZrjkpu+KHHfVZqKg+3ChfjdbS4CQoK7IgUSguAifOaHH6Kb81LsraKKCDEr5vynHKL6jsuvgOPSkgPtzxasQQGR7CDNHnvm1ekFTbDpQ2KyHl3Ep5LCqlB79RhuPytprePHxQJa3qxv/EEIL8zxV1qhAvKa55RQIV3pLqDbPrj9EbD7LAYMbmIsFg3nSbZZaZV55gATN4PX86EZCIaC5/WTXSNIEmyedpcyhSzCZvpQOVjWggtCzUDsgCBADmmFAtuqd/POXXNbgPprEOJXyCdLvbL9cp3lG01sw+gqq08RqPlhKn5Q=" | ||||
|       "restic-password": "AgApoTzU3zoGZPcDxXwtF8/ZsPlzZH+WvL2E3yImCwfJQm/mMp4cLWqupn6mJLIJhewduM/9EWI/Yfe194Y6oY1wFlZChADa17nZbaWrbSlVAe5pNnkWUs/oB8D11Hnbw6fom5TnVjDxejG7GuitIVyVbpjETDrS7tCE2zhR1Xt3CjlpcM6BOcfCA/GOySixWGhN8CQlx9ujiQkofFZdB7GomcNbBlwo1SOc61un7casWPfGUEORObIQGqAc7APcUovpY/66iJ0IzZG9y+LNnnKgp2Vr91Oek2/S02S5HU+L5J6UO1KtAcCJGL4N0fhoHgstUqvycV4Aup24J3qnruzz1D83doghuHJEWx52wlMGiTNyK4ZCqaA19d6dFgpVNKiR/g0Qd/hx65/K4+U0nqm0GXCMmjUi3E0rx5u3KI2hUTwiffAPcfRZR7YBgFLAB1Gm+vanh23Qp2kdEojM63I/E35XD5ibr+HiEP6zFLgZw8KI4uJMxvCRiDFlYyQ3dXqTsi8sg7AzMwTtLsTAAmTCZdoD54SYYeLJ6nVW6FPznGF6CmMG/2ZpApZS8hsBsPclf3yipxON30dFmrDXDax9OSBPseucpZsJN2Vjikpuv5Lst2b+vL7/Bq/cfho58zFRHyc42G4xe5N+Evzv6jb/MaFWKmV5mBkMYdLZ0ANgFjrTXhI0T9zZTcgj4ohmHg7Z8v+1DgOgvAI6jo/kQSp4zJi69Q==" | ||||
|     } | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -1,34 +0,0 @@ | ||||
| apiVersion: apps/v1 | ||||
| kind: Deployment | ||||
| metadata: | ||||
|   name: aio | ||||
|   namespace: aio | ||||
|   labels: | ||||
|     app: aio | ||||
| spec: | ||||
|   replicas: 1 | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       app: aio | ||||
|   template: | ||||
|     metadata: | ||||
|       labels: | ||||
|         app: aio | ||||
|     spec: | ||||
|       containers: | ||||
|       - name: aio | ||||
|         image: mollre/aio:latest | ||||
|         tty: true | ||||
|         volumeMounts: | ||||
|         - mountPath: /keys/ | ||||
|           name: aio-nfs | ||||
|         resources: | ||||
|           requests: | ||||
|             memory: "250Mi" | ||||
|             cpu: 0.5 | ||||
|  | ||||
|  | ||||
|       volumes: | ||||
|       - name: aio-nfs | ||||
|         persistentVolumeClaim: | ||||
|           claimName: aio-nfs | ||||
| @@ -1,34 +0,0 @@ | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: aio | ||||
|   name: "aio-nfs" | ||||
|   labels: | ||||
|     directory: "aio" | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   capacity: | ||||
|     storage: "100Mi" | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   nfs: | ||||
|     path: /aio | ||||
|     server: 10.43.239.43 # assigned to nfs-server service. Won't change as long as service is not redeployed | ||||
|  | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: aio | ||||
|   name: "aio-nfs" | ||||
| spec: | ||||
|   storageClassName: "fast" | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "100Mi" | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       directory: "aio" | ||||
| @@ -1,114 +0,0 @@ | ||||
| apiVersion: v1 | ||||
| kind: Namespace | ||||
| metadata: | ||||
|   name: anki | ||||
|  | ||||
| --- | ||||
|  | ||||
| apiVersion: apps/v1 | ||||
| kind: Deployment | ||||
| metadata: | ||||
|   name: anki | ||||
|   namespace: anki | ||||
|   labels: | ||||
|     app: anki | ||||
| spec: | ||||
|   replicas: 1 | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       app: anki | ||||
|   template: | ||||
|     metadata: | ||||
|       labels: | ||||
|         app: anki | ||||
|     spec: | ||||
|       containers: | ||||
|       - name: anki-server | ||||
|         image: ankicommunity/anki-sync-server:20220516 | ||||
|         tty: true | ||||
|         volumeMounts: | ||||
|         - mountPath: /app/data | ||||
|           name: anki-data-nfs | ||||
|         resources: | ||||
|           requests: | ||||
|             memory: "250Mi" | ||||
|             cpu: 0.5 | ||||
|       nodeSelector: | ||||
|         kubernetes.io/arch: amd64 | ||||
|  | ||||
|  | ||||
|       volumes: | ||||
|       - name: anki-data-nfs | ||||
|         persistentVolumeClaim: | ||||
|           claimName: anki-data-nfs | ||||
|  | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: Service | ||||
| metadata: | ||||
|   name: anki-http | ||||
|   namespace: anki | ||||
| spec: | ||||
|   selector: | ||||
|     app: anki | ||||
|   ports: | ||||
|   - protocol: TCP | ||||
|     port: 27701 | ||||
|     targetPort: 27701 | ||||
|   type: ClusterIP | ||||
|  | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: anki | ||||
|   name: "anki-data-nfs" | ||||
|   labels: | ||||
|     directory: "anki" | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   capacity: | ||||
|     storage: "100Mi" | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   nfs: | ||||
|     path: /anki | ||||
|     server: 10.43.239.43 # assigned to nfs-server service. Won't change as long as service is not redeployed | ||||
|  | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: anki | ||||
|   name: "anki-data-nfs" | ||||
| spec: | ||||
|   storageClassName: "fast" | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "100Mi" | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       directory: "anki" | ||||
|  | ||||
|  | ||||
| --- | ||||
| apiVersion: traefik.containo.us/v1alpha1 | ||||
| kind: IngressRoute | ||||
| metadata: | ||||
|   name: anki-ingress | ||||
|   namespace: anki | ||||
| spec: | ||||
|   entryPoints: | ||||
|     - websecure | ||||
|   routes: | ||||
|     - match: Host(`anki.kluster.moll.re`) | ||||
|       kind: Rule | ||||
|       services: | ||||
|         - name: anki-http | ||||
|           port: 27701 | ||||
|   tls: | ||||
|     certResolver: default-tls | ||||
|  | ||||
|  | ||||
| @@ -1,92 +0,0 @@ | ||||
| # | ||||
| # IMPORTANT NOTE | ||||
| # | ||||
| # This chart inherits from our common library chart. You can check the default values/options here: | ||||
| # https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml | ||||
| # | ||||
|  | ||||
| image: | ||||
|   # -- image repository | ||||
|   repository: anonaddy/anonaddy | ||||
|   # -- image tag | ||||
|   tag: 0.11.2 | ||||
|   # -- image pull policy | ||||
|   pullPolicy: IfNotPresent | ||||
|  | ||||
| strategy: | ||||
|   type: Recreate | ||||
|  | ||||
| # -- environment variables. See more environment variables in the [anonaddy documentation](https://github.com/anonaddy/docker#environment-variables). | ||||
| # @default -- See below | ||||
| env: | ||||
|   TZ: "Europe/Berlin" | ||||
|   # -- Application key for encrypter service | ||||
|   # You can generate one through `anonaddy key:generate --show` or `echo "base64:$(openssl rand -base64 32)"` | ||||
|   APP_KEY: | ||||
|   # -- Root domain to receive email from | ||||
|   ANONADDY_DOMAIN: anonaddy.kluster.moll.re | ||||
|   # -- Long random string used when hashing data for the anonymous replies | ||||
|   ANONADDY_SECRET: | ||||
|  | ||||
| # -- Configures service settings for the chart. | ||||
| # @default -- See values.yaml | ||||
| service: | ||||
|   main: | ||||
|     ports: | ||||
|       http: | ||||
|         port: 8000 | ||||
|       smtp: | ||||
|         enabled: true | ||||
|         port: 25 | ||||
|     type: LoadBalancer | ||||
|  | ||||
| ingress: | ||||
|   # -- Enable and configure ingress settings for the chart under this key. | ||||
|   # @default -- See values.yaml | ||||
|   main: | ||||
|     enabled: true | ||||
|     annotations: | ||||
|       kubernetes.io/ingress.class: nginx | ||||
|       cert-manager.io/cluster-issuer: cloudflare-letsencrypt-prod | ||||
|     hosts: | ||||
|       - host: anonaddy.kluster.moll.re | ||||
|         paths: | ||||
|           - path: / | ||||
|             pathType: Prefix | ||||
|             service: | ||||
|               port: 8000 | ||||
|     tls: | ||||
|     - hosts: | ||||
|       - anonaddy.kluster.moll.re | ||||
|       secretName: cloudflare-letsencrypt-issuer-account-key | ||||
|  | ||||
| # -- Configure persistence settings for the chart under this key. | ||||
| # @default -- See values.yaml | ||||
| persistence: | ||||
|   config: | ||||
|     enabled: false | ||||
|     emptydir: | ||||
|       enabled: false | ||||
|  | ||||
| # https://github.com/bitnami/charts/tree/master/bitnami/mariadb/#installing-the-chart | ||||
| mariadb: | ||||
|   enabled: true | ||||
|   image:  | ||||
|     name: arm64v8/mariadb:latest | ||||
|     pullSecrets: [] | ||||
|   # primary: | ||||
|   #   persistence: | ||||
|   #     enabled: true | ||||
|   # auth: | ||||
|   #   username: "username" | ||||
|   #   password: "password" | ||||
|   #   database: database | ||||
|  | ||||
| # -- Enable and configure redis subchart under this key. | ||||
| #    For more options see [redis chart documentation](https://github.com/bitnami/charts/tree/master/bitnami/redis) | ||||
| # @default -- See values.yaml | ||||
| redis: | ||||
|   enabled: false | ||||
|   # auth: | ||||
|   #   enabled: false | ||||
|  | ||||
| @@ -1,119 +0,0 @@ | ||||
| apiVersion: v1 | ||||
| kind: Namespace | ||||
| metadata: | ||||
|   name: archive | ||||
|   labels: | ||||
|     app: archive | ||||
|  | ||||
| --- | ||||
|  | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: archive | ||||
|   name: archive-data-nfs | ||||
|   labels: | ||||
|     directory: archive | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   capacity: | ||||
|     storage: "100Gi" | ||||
|   volumeMode: Filesystem | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   nfs: | ||||
|     path: /helbing_archive | ||||
|     server: 10.43.239.43 # assigned to nfs-server service. Won't change as long as service is not redeployed | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: archive | ||||
|   name: archive-data-nfs | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "100Gi" | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       directory: archive | ||||
|  | ||||
| --- | ||||
|  | ||||
| apiVersion: apps/v1 | ||||
| kind: Deployment | ||||
| metadata: | ||||
|   name: archive | ||||
|   namespace: archive | ||||
|   labels: | ||||
|     app: archive | ||||
| spec: | ||||
|   replicas: 1 | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       app: archive | ||||
|   template: | ||||
|     metadata: | ||||
|       labels: | ||||
|         app: archive | ||||
|     spec: | ||||
|       containers: | ||||
|       - name: archive | ||||
|         image: archivebox/archivebox | ||||
|         tty: true | ||||
|         ports: | ||||
|           - containerPort: 8000 | ||||
|         volumeMounts: | ||||
|         - mountPath: /data | ||||
|           name: archive-data | ||||
|  | ||||
|  | ||||
|       volumes: | ||||
|       - name: archive-data | ||||
|         persistentVolumeClaim: | ||||
|           claimName: archive-data-nfs | ||||
|  | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: Service | ||||
| metadata: | ||||
|   name: archive | ||||
|   namespace: archive | ||||
|  | ||||
| spec: | ||||
|   type: ClusterIP | ||||
|   ports: | ||||
|     - name: http | ||||
|       port: 8000 | ||||
|   selector: | ||||
|     app: archive | ||||
|  | ||||
| --- | ||||
|  | ||||
| kind: Ingress | ||||
| apiVersion: networking.k8s.io/v1 | ||||
| metadata: | ||||
|   namespace: archive | ||||
|   name: archive-ingress | ||||
|   annotations: | ||||
|     kubernetes.io/ingress.class: nginx | ||||
|     cert-manager.io/cluster-issuer: cloudflare-letsencrypt-prod | ||||
| spec: | ||||
|   tls: | ||||
|   - hosts: | ||||
|     - archive.kluster.moll.re | ||||
|     secretName: cloudflare-letsencrypt-issuer-account-key | ||||
|   rules: | ||||
|     - host: archive.kluster.moll.re | ||||
|       http: | ||||
|         paths: | ||||
|         - backend: | ||||
|             service: | ||||
|               name: archive | ||||
|               port:  | ||||
|                 number: 8000 | ||||
|           path: / | ||||
|           pathType: Prefix | ||||
| @@ -1,34 +0,0 @@ | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: authelia | ||||
|   name: authelia-config-nfs | ||||
|   labels: | ||||
|     directory: authelia | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   capacity: | ||||
|     storage: "1Gi" | ||||
|   volumeMode: Filesystem | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   nfs: | ||||
|     path: /authelia | ||||
|     server: 10.43.239.43 # assigned to nfs-server service. Won't change as long as service is not redeployed | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: authelia | ||||
|   name: authelia-config-nfs | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "1Gi" | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       directory: authelia | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,34 +0,0 @@ | ||||
|  | ||||
| apiVersion: traefik.containo.us/v1alpha1 | ||||
| kind: IngressRoute | ||||
| metadata: | ||||
|   name: authentik-ingress | ||||
|   namespace: authentik | ||||
| spec: | ||||
|   entryPoints: | ||||
|     - websecure | ||||
|   routes: | ||||
|     - match: Host(`authentik.kluster.moll.re`) | ||||
|       kind: Rule | ||||
|       middlewares: | ||||
|         - name: authentik-websocket | ||||
|       services: | ||||
|         - name: authentik | ||||
|           port: 80 | ||||
|   tls: | ||||
|     certResolver: default-tls | ||||
|  | ||||
|  | ||||
| --- | ||||
| apiVersion: traefik.containo.us/v1alpha1 | ||||
| kind: Middleware | ||||
| metadata: | ||||
|   name: authentik-websocket | ||||
|   namespace: authentik | ||||
| spec: | ||||
|   headers: | ||||
|     customRequestHeaders: | ||||
|       X-Forwarded-Proto: "https" | ||||
|       Upgrade: "websocket" | ||||
|  | ||||
|  | ||||
| @@ -1,37 +0,0 @@ | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: authentik | ||||
|   name: authentik-postgres-nfs | ||||
|   labels: | ||||
|     directory: authentik | ||||
| spec: | ||||
|   storageClassName: slow | ||||
|   capacity: | ||||
|     storage: "5Gi" | ||||
|   volumeMode: Filesystem | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   nfs: | ||||
|     path: /export/kluster/authentik | ||||
|     server: 192.168.1.157 | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: authentik | ||||
|   name: authentik-postgres-nfs | ||||
| spec: | ||||
|   storageClassName: slow | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "5Gi" | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       directory: authentik | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -1,172 +0,0 @@ | ||||
| # -- Server replicas | ||||
| replicas: 1 | ||||
| # -- Custom priority class for different treatment by the scheduler | ||||
| priorityClassName: | ||||
| # -- server securityContext | ||||
| securityContext: {} | ||||
|  | ||||
| worker: | ||||
|   # -- worker replicas | ||||
|   replicas: 1 | ||||
|   # -- Custom priority class for different treatment by the scheduler | ||||
|   priorityClassName: | ||||
|   # -- worker securityContext | ||||
|   securityContext: {} | ||||
|  | ||||
| image: | ||||
|   repository: ghcr.io/goauthentik/server | ||||
|   tag: 2023.4.1 | ||||
|   pullPolicy: IfNotPresent | ||||
|   pullSecrets: [] | ||||
|  | ||||
| # -- See https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common#values | ||||
| initContainers: {} | ||||
|  | ||||
| # -- See https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common#values | ||||
| additionalContainers: {} | ||||
|  | ||||
| authentik: | ||||
|   # -- Log level for server and worker | ||||
|   log_level: info | ||||
|   # -- Secret key used for cookie singing and unique user IDs, | ||||
|   # don't change this after the first install | ||||
|   secret_key: "K9F5uNx1gzsk3q5tnjwFabBYgjBJcAv0qM135QRgzL81hRg4" | ||||
|   # -- Path for the geoip database. If the file doesn't exist, GeoIP features are disabled. | ||||
|   geoip: /geoip/GeoLite2-City.mmdb | ||||
|   # -- Mode for the avatars. Defaults to gravatar. Possible options 'gravatar' and 'none' | ||||
|   avatars: gravatar | ||||
|  | ||||
|   outposts: | ||||
|     # -- Template used for managed outposts. The following placeholders can be used | ||||
|     # %(type)s - the type of the outpost | ||||
|     # %(version)s - version of your authentik install | ||||
|     # %(build_hash)s - only for beta versions, the build hash of the image | ||||
|     container_image_base: ghcr.io/goauthentik/%(type)s:%(version)s | ||||
|   error_reporting: | ||||
|     # -- This sends anonymous usage-data, stack traces on errors and | ||||
|     # performance data to sentry.beryju.org, and is fully opt-in | ||||
|     enabled: false | ||||
|     # -- This is a string that is sent to sentry with your error reports | ||||
|     environment: "k8s" | ||||
|     # -- Send PII (Personally identifiable information) data to sentry | ||||
|     send_pii: false | ||||
|  | ||||
|  | ||||
|   postgresql: | ||||
|     # -- set the postgresql hostname to talk to | ||||
|     # if unset and .Values.postgresql.enabled == true, will generate the default | ||||
|     # @default -- `{{ .Release.Name }}-postgresql` | ||||
|     host: 'postgres-postgresql.postgres' | ||||
|     # -- postgresql Database name | ||||
|     # @default -- `authentik` | ||||
|     name: "authentik" | ||||
|     # -- postgresql Username | ||||
|     # @default -- `authentik` | ||||
|     user: "authentik" | ||||
|     password: "authentik" | ||||
|     port: 5432 | ||||
|  | ||||
|  | ||||
|   redis: | ||||
|     # -- set the redis hostname to talk to | ||||
|     # @default -- `{{ .Release.Name }}-redis-master` | ||||
|     host: '{{ .Release.Name }}-redis-master' | ||||
|     password: "" | ||||
|  | ||||
| # -- see configuration options at https://goauthentik.io/docs/installation/configuration/ | ||||
| env: {} | ||||
| # AUTHENTIK_VAR_NAME: VALUE | ||||
|  | ||||
| envFrom: [] | ||||
| #  - configMapRef: | ||||
| #      name: special-config | ||||
|  | ||||
| envValueFrom: {} | ||||
| #  AUTHENTIK_VAR_NAME: | ||||
| #    secretKeyRef: | ||||
| #      key: password | ||||
| #      name: my-secret | ||||
|  | ||||
| service: | ||||
|   # -- Service that is created to access authentik | ||||
|   enabled: true | ||||
|   type: ClusterIP | ||||
|   port: 80 | ||||
|   name: http | ||||
|   protocol: TCP | ||||
|   labels: {} | ||||
|   annotations: {} | ||||
|  | ||||
| volumes: [] | ||||
|  | ||||
| volumeMounts: [] | ||||
|  | ||||
| # -- affinity applied to the deployments | ||||
| affinity: {} | ||||
|  | ||||
| # -- nodeSelector applied to the deployments | ||||
|  | ||||
| resources: | ||||
|   server: {} | ||||
|   worker: {} | ||||
|  | ||||
| # WARNING! When initially deploying, authentik has to do a few DB migrations. This may cause it to die from probe | ||||
| # failure, but will continue on reboot. You can disable this during deployment if this is not desired | ||||
| livenessProbe: | ||||
|   # -- enables or disables the livenessProbe | ||||
|   enabled: true | ||||
|   httpGet: | ||||
|     # -- liveness probe url path | ||||
|     path: /-/health/live/ | ||||
|     port: http | ||||
|   initialDelaySeconds: 50 | ||||
|   periodSeconds: 10 | ||||
|  | ||||
| readinessProbe: | ||||
|   enabled: true | ||||
|   httpGet: | ||||
|     path: /-/health/ready/ | ||||
|     port: http | ||||
|   initialDelaySeconds: 50 | ||||
|   periodSeconds: 10 | ||||
|  | ||||
| serviceAccount: | ||||
|   # -- Service account is needed for managed outposts | ||||
|   create: true | ||||
|  | ||||
| prometheus: | ||||
|   serviceMonitor: | ||||
|     create: false | ||||
|     interval: 30s | ||||
|     scrapeTimeout: 3s | ||||
|   rules: | ||||
|     create: false | ||||
|  | ||||
| geoip: | ||||
|   # -- optional GeoIP, deploys a cronjob to download the maxmind database | ||||
|   enabled: false | ||||
|   # -- sign up under https://www.maxmind.com/en/geolite2/signup | ||||
|   accountId: "" | ||||
|   # -- sign up under https://www.maxmind.com/en/geolite2/signup | ||||
|   licenseKey: "" | ||||
|   editionIds: "GeoLite2-City" | ||||
|   image: maxmindinc/geoipupdate:v4.8 | ||||
|   # -- number of hours between update runs | ||||
|   updateInterval: 8 | ||||
|  | ||||
| postgresql: | ||||
|   # -- enable the bundled bitnami postgresql chart | ||||
|   enabled: false | ||||
|   postgresqlUsername: "authentik" | ||||
|   postgresqlPassword: "authentik" | ||||
|   postgresqlDatabase: "authentik" | ||||
|   # persistence: | ||||
|   #   enabled: true | ||||
|   #   existingClaim: authentik-postgres-nfs | ||||
| redis: | ||||
|   # -- enable the bundled bitnami redis chart | ||||
|   enabled: true | ||||
|   architecture: standalone | ||||
|   auth: | ||||
|     enabled: false | ||||
|  | ||||
| @@ -1,34 +0,0 @@ | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: backup | ||||
|   name: backup-nfs-access | ||||
|   labels: | ||||
|     directory: backup | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   volumeMode: Filesystem | ||||
|   accessModes: | ||||
|     - ReadOnlyMany | ||||
|   capacity: | ||||
|     storage: "5M" | ||||
|  | ||||
|   nfs: | ||||
|     path: /export/kluster | ||||
|     server: 192.168.1.157 | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: backup | ||||
|   name: backup-nfs-access | ||||
| spec: | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "5M" | ||||
|   storageClassName: fast | ||||
|   accessModes: | ||||
|     - ReadOnlyMany | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       directory: backup | ||||
| @@ -1,64 +0,0 @@ | ||||
| apiVersion: batch/v1 | ||||
| kind: CronJob | ||||
| metadata: | ||||
|   name: restic-backblaze | ||||
|    | ||||
| spec: | ||||
|   schedule: "0 2 * * *" | ||||
|   # at 2:00, every tuesday and saturday | ||||
|   successfulJobsHistoryLimit: 2 | ||||
|   failedJobsHistoryLimit: 2 | ||||
|  | ||||
|   jobTemplate: | ||||
|     spec: | ||||
|       template: | ||||
|         spec: | ||||
|           # nodeSelector: | ||||
|           #   kubernetes.io/arch: arm64 | ||||
|           # TODO no arm64 nodes anymore | ||||
|           restartPolicy: Never | ||||
|           hostname: restic-k3s-pod | ||||
|           # used by restic to identify the host | ||||
|           containers: | ||||
|           - name: restic-base-container | ||||
|             image: restic/restic:latest | ||||
|             command: | ||||
|               - /bin/sh | ||||
|               - -c | ||||
|             # >- strips newlines | ||||
|             # RESTIC_ARGS Can be for instance: --verbose --dry-run | ||||
|             args: [] | ||||
|              | ||||
|             volumeMounts: | ||||
|               - mountPath: /data | ||||
|                 name: backup-nfs-access | ||||
|               - mountPath: /credentials | ||||
|                 name: restic-credentials | ||||
|  | ||||
|             env: | ||||
|               - name: RESTIC_REPOSITORY | ||||
|                 valueFrom: | ||||
|                   secretKeyRef: | ||||
|                     name: restic-credentials | ||||
|                     key: RESTIC_REPOSITORY | ||||
|               - name: B2_ACCOUNT_ID | ||||
|                 valueFrom: | ||||
|                   secretKeyRef: | ||||
|                     name: restic-credentials | ||||
|                     key: B2_ACCOUNT_ID | ||||
|               - name: B2_ACCOUNT_KEY | ||||
|                 valueFrom: | ||||
|                   secretKeyRef: | ||||
|                     name: restic-credentials | ||||
|                     key: B2_ACCOUNT_KEY | ||||
|               - name: RESTIC_PASSWORD_FILE | ||||
|                 value: /credentials/restic-password | ||||
|  | ||||
|           volumes: | ||||
|             - name: backup-nfs-access | ||||
|               persistentVolumeClaim: | ||||
|                 claimName: backup-nfs-access | ||||
|             - name: restic-credentials | ||||
|               secret: | ||||
|                 secretName: restic-credentials | ||||
|                 optional: false | ||||
| @@ -1,5 +0,0 @@ | ||||
| apiVersion: kustomize.config.k8s.io/v1beta1 | ||||
| kind: Kustomization | ||||
| resources: | ||||
| - ./cronjob.yaml | ||||
| - ./restic-credentials.secret.yaml | ||||
| @@ -1,8 +0,0 @@ | ||||
| ``` | ||||
| k kustomize backup/overlays/backup | k apply -f - | ||||
| > secret/restic-credentials-backup created | ||||
| > cronjob.batch/restic-backblaze-backup created | ||||
| k kustomize backup/overlays/prune | k apply -f - | ||||
| > secret/restic-credentials-prune created | ||||
| > cronjob.batch/restic-backblaze-prune created | ||||
| ``` | ||||
| @@ -1,16 +0,0 @@ | ||||
| apiVersion: kustomize.config.k8s.io/v1beta1 | ||||
| kind: Kustomization | ||||
|  | ||||
| namespace: backup | ||||
| nameSuffix: -backup | ||||
| resources: | ||||
|   - ../../base | ||||
|   # - ./restic-commands.yaml | ||||
|  | ||||
|  | ||||
| # patch the cronjob args field: | ||||
| patches: | ||||
|   - path: ./restic-commands.yaml | ||||
|     target: | ||||
|       kind: CronJob | ||||
|        | ||||
| @@ -1,26 +0,0 @@ | ||||
| apiVersion: batch/v1 | ||||
| kind: CronJob | ||||
| metadata: | ||||
|   name: backup-patch | ||||
| spec: | ||||
|   jobTemplate: | ||||
|     spec: | ||||
|       template: | ||||
|         spec: | ||||
|           containers: | ||||
|           - name: restic-base-container | ||||
|             args: | ||||
|             # >- strips newlines | ||||
|             # RESTIC_ARGS Can be for instance: --verbose --dry-run | ||||
|             # restic_reository is set in the secret | ||||
|               - >- | ||||
|                   restic backup | ||||
|                   -r $(RESTIC_REPOSITORY) | ||||
|                   --verbose=2 | ||||
|                   /data | ||||
|                   --exclude=s3/ | ||||
|                 # && | ||||
|                 # restic | ||||
|                 # -r $(RESTIC_REPOSITORY) | ||||
|                 # list snapshots | ||||
|                 # Add command to copy existing backups to here! | ||||
| @@ -1,15 +0,0 @@ | ||||
| apiVersion: kustomize.config.k8s.io/v1beta1 | ||||
| kind: Kustomization | ||||
|  | ||||
| namespace: backup | ||||
| nameSuffix: -prune | ||||
| resources: | ||||
|   - ../../base | ||||
|   # - ./restic-commands.yaml | ||||
|  | ||||
|  | ||||
| # patch the cronjob args field: | ||||
| patches: | ||||
|   - path: ./restic-commands.yaml | ||||
|     target: | ||||
|       kind: CronJob | ||||
| @@ -1,23 +0,0 @@ | ||||
| apiVersion: batch/v1 | ||||
| kind: CronJob | ||||
| metadata: | ||||
|   name: prune-patch | ||||
| spec: | ||||
|   schedule: "0 0 1/15 * *" | ||||
|   # at midnight, the first and 15. of every month | ||||
|   jobTemplate: | ||||
|     spec: | ||||
|       template: | ||||
|         spec: | ||||
|           containers: | ||||
|           - name: restic-base-container | ||||
|             args: | ||||
|             # >- strips newlines | ||||
|             # RESTIC_ARGS Can be for instance: --verbose --dry-run | ||||
|             # RESTIC_REPOSITORY is set in the secret | ||||
|               - >- | ||||
|                   restic forget | ||||
|                   -r $(RESTIC_REPOSITORY) | ||||
|                   --verbose=2 | ||||
|                   --keep-daily 7 --keep-weekly 5 | ||||
|                   --prune | ||||
| @@ -1,54 +0,0 @@ | ||||
| # apiVersion: v1 | ||||
| # kind: Secret | ||||
| # metadata: | ||||
| #   name: cloudflare-api-token-secret | ||||
| #   namespace: cert-manager | ||||
| # type: Opaque | ||||
| # stringData: | ||||
| #   api-token:  | ||||
|  | ||||
|  | ||||
| # --- | ||||
|  | ||||
| apiVersion: cert-manager.io/v1 | ||||
| kind: ClusterIssuer | ||||
| metadata: | ||||
|   name: cloudflare-letsencrypt-staging | ||||
| spec: | ||||
|   acme: | ||||
|     email: me@moll.re | ||||
|     server: https://acme-staging-v02.api.letsencrypt.org/directory | ||||
|     privateKeySecretRef: | ||||
|       # Secret resource that will be used to store the account's private key. | ||||
|       name: cloudflare-letsencrypt-issuer-account-key | ||||
|     solvers: | ||||
|     - dns01: | ||||
|         cloudflare: | ||||
|           email: mollator2@gmail.com | ||||
|           apiTokenSecretRef: | ||||
|             # Name of the secret created on the other resource | ||||
|             name: cloudflare-api-token-secret | ||||
|             key: api-token | ||||
|  | ||||
| --- | ||||
|  | ||||
| apiVersion: cert-manager.io/v1 | ||||
| kind: ClusterIssuer | ||||
| metadata: | ||||
|   name: cloudflare-letsencrypt-prod | ||||
| spec: | ||||
|   acme: | ||||
|     email: me@moll.re | ||||
|     server: https://acme-v02.api.letsencrypt.org/directory | ||||
|     privateKeySecretRef: | ||||
|       # Secret resource that will be used to store the account's private key. | ||||
|       name: cloudflare-letsencrypt-issuer-account-key | ||||
|     solvers: | ||||
|     - dns01: | ||||
|         cloudflare: | ||||
|           email: mollator2@gmail.com | ||||
|           apiTokenSecretRef: | ||||
|             # Name of the secret created on the other resource | ||||
|             name: cloudflare-api-token-secret | ||||
|             key: api-token | ||||
|  | ||||
| @@ -1,494 +0,0 @@ | ||||
| # Default values for cert-manager. | ||||
| # This is a YAML-formatted file. | ||||
| # Declare variables to be passed into your templates. | ||||
| global: | ||||
|   ## Reference to one or more secrets to be used when pulling images | ||||
|   ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ | ||||
|   ## | ||||
|   imagePullSecrets: [] | ||||
|   # - name: "image-pull-secret" | ||||
|  | ||||
|   # Optional priority class to be used for the cert-manager pods | ||||
|   priorityClassName: "" | ||||
|   rbac: | ||||
|     create: true | ||||
|  | ||||
|   podSecurityPolicy: | ||||
|     enabled: false | ||||
|     useAppArmor: true | ||||
|  | ||||
|   # Set the verbosity of cert-manager. Range of 0 - 6 with 6 being the most verbose. | ||||
|   logLevel: 2 | ||||
|  | ||||
|   leaderElection: | ||||
|     # Override the namespace used to store the ConfigMap for leader election | ||||
|     namespace: "kube-system" | ||||
|  | ||||
|     # The duration that non-leader candidates will wait after observing a | ||||
|     # leadership renewal until attempting to acquire leadership of a led but | ||||
|     # unrenewed leader slot. This is effectively the maximum duration that a | ||||
|     # leader can be stopped before it is replaced by another candidate. | ||||
|     # leaseDuration: 60s | ||||
|  | ||||
|     # The interval between attempts by the acting master to renew a leadership | ||||
|     # slot before it stops leading. This must be less than or equal to the | ||||
|     # lease duration. | ||||
|     # renewDeadline: 40s | ||||
|  | ||||
|     # The duration the clients should wait between attempting acquisition and | ||||
|     # renewal of a leadership. | ||||
|     # retryPeriod: 15s | ||||
|  | ||||
| installCRDs: false | ||||
|  | ||||
| replicaCount: 1 | ||||
|  | ||||
| strategy: {} | ||||
|   # type: RollingUpdate | ||||
|   # rollingUpdate: | ||||
|   #   maxSurge: 0 | ||||
|   #   maxUnavailable: 1 | ||||
|  | ||||
| # Comma separated list of feature gates that should be enabled on the | ||||
| # controller pod. | ||||
| featureGates: "" | ||||
|  | ||||
| image: | ||||
|   repository: quay.io/jetstack/cert-manager-controller | ||||
|   # You can manage a registry with | ||||
|   # registry: quay.io | ||||
|   # repository: jetstack/cert-manager-controller | ||||
|  | ||||
|   # Override the image tag to deploy by setting this variable. | ||||
|   # If no value is set, the chart's appVersion will be used. | ||||
|   # tag: canary | ||||
|  | ||||
|   # Setting a digest will override any tag | ||||
|   # digest: sha256:0e072dddd1f7f8fc8909a2ca6f65e76c5f0d2fcfb8be47935ae3457e8bbceb20 | ||||
|   pullPolicy: IfNotPresent | ||||
|  | ||||
| # Override the namespace used to store DNS provider credentials etc. for ClusterIssuer | ||||
| # resources. By default, the same namespace as cert-manager is deployed within is | ||||
| # used. This namespace will not be automatically created by the Helm chart. | ||||
| clusterResourceNamespace: "" | ||||
|  | ||||
| serviceAccount: | ||||
|   # Specifies whether a service account should be created | ||||
|   create: true | ||||
|   # The name of the service account to use. | ||||
|   # If not set and create is true, a name is generated using the fullname template | ||||
|   # name: "" | ||||
|   # Optional additional annotations to add to the controller's ServiceAccount | ||||
|   # annotations: {} | ||||
|   # Automount API credentials for a Service Account. | ||||
|   automountServiceAccountToken: true | ||||
|  | ||||
| # Optional additional arguments | ||||
| extraArgs: [] | ||||
|   # Use this flag to set a namespace that cert-manager will use to store | ||||
|   # supporting resources required for each ClusterIssuer (default is kube-system) | ||||
|   # - --cluster-resource-namespace=kube-system | ||||
|   # When this flag is enabled, secrets will be automatically removed when the certificate resource is deleted | ||||
|   # - --enable-certificate-owner-ref=true | ||||
|   # Use this flag to enabled or disable arbitrary controllers, for example, disable the CertificiateRequests approver | ||||
|   # - --controllers=*,-certificaterequests-approver | ||||
|  | ||||
| extraEnv: [] | ||||
| # - name: SOME_VAR | ||||
| #   value: 'some value' | ||||
|  | ||||
| resources: {} | ||||
|   # requests: | ||||
|   #   cpu: 10m | ||||
|   #   memory: 32Mi | ||||
|  | ||||
| # Pod Security Context | ||||
| # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ | ||||
| securityContext: | ||||
|   runAsNonRoot: true | ||||
| # legacy securityContext parameter format: if enabled is set to true, only fsGroup and runAsUser are supported | ||||
| # securityContext: | ||||
| #   enabled: false | ||||
| #   fsGroup: 1001 | ||||
| #   runAsUser: 1001 | ||||
| # to support additional securityContext parameters, omit the `enabled` parameter and simply specify the parameters | ||||
| # you want to set, e.g. | ||||
| # securityContext: | ||||
| #   fsGroup: 1000 | ||||
| #   runAsUser: 1000 | ||||
| #   runAsNonRoot: true | ||||
|  | ||||
| # Container Security Context to be set on the controller component container | ||||
| # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ | ||||
| containerSecurityContext: {} | ||||
|   # capabilities: | ||||
|   #   drop: | ||||
|   #   - ALL | ||||
|   # readOnlyRootFilesystem: true | ||||
|   # runAsNonRoot: true | ||||
|  | ||||
|  | ||||
| volumes: [] | ||||
|  | ||||
| volumeMounts: [] | ||||
|  | ||||
| # Optional additional annotations to add to the controller Deployment | ||||
| # deploymentAnnotations: {} | ||||
|  | ||||
| # Optional additional annotations to add to the controller Pods | ||||
| # podAnnotations: {} | ||||
|  | ||||
| podLabels: {} | ||||
|  | ||||
| # Optional additional labels to add to the controller Service | ||||
| # serviceLabels: {} | ||||
|  | ||||
| # Optional additional annotations to add to the controller service | ||||
| # serviceAnnotations: {} | ||||
|  | ||||
| # Optional DNS settings, useful if you have a public and private DNS zone for | ||||
| # the same domain on Route 53. What follows is an example of ensuring | ||||
| # cert-manager can access an ingress or DNS TXT records at all times. | ||||
| # NOTE: This requires Kubernetes 1.10 or `CustomPodDNS` feature gate enabled for | ||||
| # the cluster to work. | ||||
| # podDnsPolicy: "None" | ||||
| # podDnsConfig: | ||||
| #   nameservers: | ||||
| #     - "1.1.1.1" | ||||
| #     - "8.8.8.8" | ||||
|  | ||||
| nodeSelector: {} | ||||
|  | ||||
| ingressShim: {} | ||||
|   # defaultIssuerName: "" | ||||
|   # defaultIssuerKind: "" | ||||
|   # defaultIssuerGroup: "" | ||||
|  | ||||
| prometheus: | ||||
|   enabled: true | ||||
|   servicemonitor: | ||||
|     enabled: false | ||||
|     prometheusInstance: default | ||||
|     targetPort: 9402 | ||||
|     path: /metrics | ||||
|     interval: 60s | ||||
|     scrapeTimeout: 30s | ||||
|     labels: {} | ||||
|  | ||||
| # Use these variables to configure the HTTP_PROXY environment variables | ||||
| # http_proxy: "http://proxy:8080" | ||||
| # https_proxy: "https://proxy:8080" | ||||
| # no_proxy: 127.0.0.1,localhost | ||||
|  | ||||
| # expects input structure as per specification https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.11/#affinity-v1-core | ||||
| # for example: | ||||
| #   affinity: | ||||
| #     nodeAffinity: | ||||
| #      requiredDuringSchedulingIgnoredDuringExecution: | ||||
| #        nodeSelectorTerms: | ||||
| #        - matchExpressions: | ||||
| #          - key: foo.bar.com/role | ||||
| #            operator: In | ||||
| #            values: | ||||
| #            - master | ||||
| affinity: {} | ||||
|  | ||||
| # expects input structure as per specification https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.11/#toleration-v1-core | ||||
| # for example: | ||||
| #   tolerations: | ||||
| #   - key: foo.bar.com/role | ||||
| #     operator: Equal | ||||
| #     value: master | ||||
| #     effect: NoSchedule | ||||
| tolerations: [] | ||||
|  | ||||
| webhook: | ||||
|   replicaCount: 1 | ||||
|   timeoutSeconds: 10 | ||||
|  | ||||
|   strategy: {} | ||||
|     # type: RollingUpdate | ||||
|     # rollingUpdate: | ||||
|     #   maxSurge: 0 | ||||
|     #   maxUnavailable: 1 | ||||
|  | ||||
|   # Pod Security Context to be set on the webhook component Pod | ||||
|   # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ | ||||
|   securityContext: | ||||
|     runAsNonRoot: true | ||||
|  | ||||
|   # Container Security Context to be set on the webhook component container | ||||
|   # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ | ||||
|   containerSecurityContext: {} | ||||
|     # capabilities: | ||||
|     #   drop: | ||||
|     #   - ALL | ||||
|     # readOnlyRootFilesystem: true | ||||
|     # runAsNonRoot: true | ||||
|  | ||||
|   # Optional additional annotations to add to the webhook Deployment | ||||
|   # deploymentAnnotations: {} | ||||
|  | ||||
|   # Optional additional annotations to add to the webhook Pods | ||||
|   # podAnnotations: {} | ||||
|  | ||||
|   # Optional additional annotations to add to the webhook MutatingWebhookConfiguration | ||||
|   # mutatingWebhookConfigurationAnnotations: {} | ||||
|  | ||||
|   # Optional additional annotations to add to the webhook ValidatingWebhookConfiguration | ||||
|   # validatingWebhookConfigurationAnnotations: {} | ||||
|  | ||||
|   # Optional additional annotations to add to the webhook service | ||||
|   # serviceAnnotations: {} | ||||
|  | ||||
|   # Optional additional arguments for webhook | ||||
|   extraArgs: [] | ||||
|  | ||||
|   resources: {} | ||||
|     # requests: | ||||
|     #   cpu: 10m | ||||
|     #   memory: 32Mi | ||||
|  | ||||
|   ## Liveness and readiness probe values | ||||
|   ## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes | ||||
|   ## | ||||
|   livenessProbe: | ||||
|     failureThreshold: 3 | ||||
|     initialDelaySeconds: 60 | ||||
|     periodSeconds: 10 | ||||
|     successThreshold: 1 | ||||
|     timeoutSeconds: 1 | ||||
|   readinessProbe: | ||||
|     failureThreshold: 3 | ||||
|     initialDelaySeconds: 5 | ||||
|     periodSeconds: 5 | ||||
|     successThreshold: 1 | ||||
|     timeoutSeconds: 1 | ||||
|  | ||||
|   nodeSelector: {} | ||||
|  | ||||
|   affinity: {} | ||||
|  | ||||
|   tolerations: [] | ||||
|  | ||||
|   # Optional additional labels to add to the Webhook Pods | ||||
|   podLabels: {} | ||||
|  | ||||
|   # Optional additional labels to add to the Webhook Service | ||||
|   serviceLabels: {} | ||||
|  | ||||
|   image: | ||||
|     repository: quay.io/jetstack/cert-manager-webhook | ||||
|     # You can manage a registry with | ||||
|     # registry: quay.io | ||||
|     # repository: jetstack/cert-manager-webhook | ||||
|  | ||||
|     # Override the image tag to deploy by setting this variable. | ||||
|     # If no value is set, the chart's appVersion will be used. | ||||
|     # tag: canary | ||||
|  | ||||
|     # Setting a digest will override any tag | ||||
|     # digest: sha256:0e072dddd1f7f8fc8909a2ca6f65e76c5f0d2fcfb8be47935ae3457e8bbceb20 | ||||
|  | ||||
|     pullPolicy: IfNotPresent | ||||
|  | ||||
|   serviceAccount: | ||||
|     # Specifies whether a service account should be created | ||||
|     create: true | ||||
|     # The name of the service account to use. | ||||
|     # If not set and create is true, a name is generated using the fullname template | ||||
|     # name: "" | ||||
|     # Optional additional annotations to add to the controller's ServiceAccount | ||||
|     # annotations: {} | ||||
|     # Automount API credentials for a Service Account. | ||||
|     automountServiceAccountToken: true | ||||
|  | ||||
|   # The port that the webhook should listen on for requests. | ||||
|   # In GKE private clusters, by default kubernetes apiservers are allowed to | ||||
|   # talk to the cluster nodes only on 443 and 10250. so configuring | ||||
|   # securePort: 10250, will work out of the box without needing to add firewall | ||||
|   # rules or requiring NET_BIND_SERVICE capabilities to bind port numbers <1000 | ||||
|   securePort: 10250 | ||||
|  | ||||
|   # Specifies if the webhook should be started in hostNetwork mode. | ||||
|   # | ||||
|   # Required for use in some managed kubernetes clusters (such as AWS EKS) with custom | ||||
|   # CNI (such as calico), because control-plane managed by AWS cannot communicate | ||||
|   # with pods' IP CIDR and admission webhooks are not working | ||||
|   # | ||||
|   # Since the default port for the webhook conflicts with kubelet on the host | ||||
|   # network, `webhook.securePort` should be changed to an available port if | ||||
|   # running in hostNetwork mode. | ||||
|   hostNetwork: false | ||||
|  | ||||
|   # Specifies how the service should be handled. Useful if you want to expose the | ||||
|   # webhook to outside of the cluster. In some cases, the control plane cannot | ||||
|   # reach internal services. | ||||
|   serviceType: ClusterIP | ||||
|   # loadBalancerIP: | ||||
|  | ||||
|   # Overrides the mutating webhook and validating webhook so they reach the webhook | ||||
|   # service using the `url` field instead of a service. | ||||
|   url: {} | ||||
|     # host: | ||||
|  | ||||
| cainjector: | ||||
|   enabled: true | ||||
|   replicaCount: 1 | ||||
|  | ||||
|   strategy: {} | ||||
|     # type: RollingUpdate | ||||
|     # rollingUpdate: | ||||
|     #   maxSurge: 0 | ||||
|     #   maxUnavailable: 1 | ||||
|  | ||||
|   # Pod Security Context to be set on the cainjector component Pod | ||||
|   # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ | ||||
|   securityContext: | ||||
|     runAsNonRoot: true | ||||
|  | ||||
|   # Container Security Context to be set on the cainjector component container | ||||
|   # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ | ||||
|   containerSecurityContext: {} | ||||
|     # capabilities: | ||||
|     #   drop: | ||||
|     #   - ALL | ||||
|     # readOnlyRootFilesystem: true | ||||
|     # runAsNonRoot: true | ||||
|  | ||||
|  | ||||
|   # Optional additional annotations to add to the cainjector Deployment | ||||
|   # deploymentAnnotations: {} | ||||
|  | ||||
|   # Optional additional annotations to add to the cainjector Pods | ||||
|   # podAnnotations: {} | ||||
|  | ||||
|   # Optional additional arguments for cainjector | ||||
|   extraArgs: [] | ||||
|  | ||||
|   resources: {} | ||||
|     # requests: | ||||
|     #   cpu: 10m | ||||
|     #   memory: 32Mi | ||||
|  | ||||
|   nodeSelector: {} | ||||
|  | ||||
|   affinity: {} | ||||
|  | ||||
|   tolerations: [] | ||||
|  | ||||
|   # Optional additional labels to add to the CA Injector Pods | ||||
|   podLabels: {} | ||||
|  | ||||
|   image: | ||||
|     repository: quay.io/jetstack/cert-manager-cainjector | ||||
|     # You can manage a registry with | ||||
|     # registry: quay.io | ||||
|     # repository: jetstack/cert-manager-cainjector | ||||
|  | ||||
|     # Override the image tag to deploy by setting this variable. | ||||
|     # If no value is set, the chart's appVersion will be used. | ||||
|     # tag: canary | ||||
|  | ||||
|     # Setting a digest will override any tag | ||||
|     # digest: sha256:0e072dddd1f7f8fc8909a2ca6f65e76c5f0d2fcfb8be47935ae3457e8bbceb20 | ||||
|  | ||||
|     pullPolicy: IfNotPresent | ||||
|  | ||||
|   serviceAccount: | ||||
|     # Specifies whether a service account should be created | ||||
|     create: true | ||||
|     # The name of the service account to use. | ||||
|     # If not set and create is true, a name is generated using the fullname template | ||||
|     # name: "" | ||||
|     # Optional additional annotations to add to the controller's ServiceAccount | ||||
|     # annotations: {} | ||||
|     # Automount API credentials for a Service Account. | ||||
|     automountServiceAccountToken: true | ||||
|  | ||||
| # This startupapicheck is a Helm post-install hook that waits for the webhook | ||||
| # endpoints to become available. | ||||
| # The check is implemented using a Kubernetes Job- if you are injecting mesh | ||||
| # sidecar proxies into cert-manager pods, you probably want to ensure that they | ||||
| # are not injected into this Job's pod. Otherwise the installation may time out | ||||
| # due to the Job never being completed because the sidecar proxy does not exit. | ||||
| # See https://github.com/jetstack/cert-manager/pull/4414 for context. | ||||
| startupapicheck: | ||||
|   enabled: true | ||||
|  | ||||
|   # Pod Security Context to be set on the startupapicheck component Pod | ||||
|   # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ | ||||
|   securityContext: | ||||
|     runAsNonRoot: true | ||||
|  | ||||
|   # Timeout for 'kubectl check api' command | ||||
|   timeout: 1m | ||||
|  | ||||
|   # Job backoffLimit | ||||
|   backoffLimit: 4 | ||||
|  | ||||
|   # Optional additional annotations to add to the startupapicheck Job | ||||
|   jobAnnotations: | ||||
|     helm.sh/hook: post-install | ||||
|     helm.sh/hook-weight: "1" | ||||
|     helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded | ||||
|  | ||||
|   # Optional additional annotations to add to the startupapicheck Pods | ||||
|   # podAnnotations: {} | ||||
|  | ||||
|   # Optional additional arguments for startupapicheck | ||||
|   extraArgs: [] | ||||
|  | ||||
|   resources: {} | ||||
|     # requests: | ||||
|     #   cpu: 10m | ||||
|     #   memory: 32Mi | ||||
|  | ||||
|   nodeSelector: {} | ||||
|  | ||||
|   affinity: {} | ||||
|  | ||||
|   tolerations: [] | ||||
|  | ||||
|   # Optional additional labels to add to the startupapicheck Pods | ||||
|   podLabels: {} | ||||
|  | ||||
|   image: | ||||
|     repository: quay.io/jetstack/cert-manager-ctl | ||||
|     # You can manage a registry with | ||||
|     # registry: quay.io | ||||
|     # repository: jetstack/cert-manager-ctl | ||||
|  | ||||
|     # Override the image tag to deploy by setting this variable. | ||||
|     # If no value is set, the chart's appVersion will be used. | ||||
|     # tag: canary | ||||
|  | ||||
|     # Setting a digest will override any tag | ||||
|     # digest: sha256:0e072dddd1f7f8fc8909a2ca6f65e76c5f0d2fcfb8be47935ae3457e8bbceb20 | ||||
|  | ||||
|     pullPolicy: IfNotPresent | ||||
|  | ||||
|   rbac: | ||||
|     # annotations for the startup API Check job RBAC and PSP resources | ||||
|     annotations: | ||||
|       helm.sh/hook: post-install | ||||
|       helm.sh/hook-weight: "-5" | ||||
|       helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded | ||||
|  | ||||
|   serviceAccount: | ||||
|     # Specifies whether a service account should be created | ||||
|     create: true | ||||
|  | ||||
|     # The name of the service account to use. | ||||
|     # If not set and create is true, a name is generated using the fullname template | ||||
|     # name: "" | ||||
|  | ||||
|     # Optional additional annotations to add to the Job's ServiceAccount | ||||
|     annotations: | ||||
|       helm.sh/hook: post-install | ||||
|       helm.sh/hook-weight: "-5" | ||||
|       helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded | ||||
|  | ||||
|     # Automount API credentials for a Service Account. | ||||
|     automountServiceAccountToken: true | ||||
|  | ||||
| @@ -1,26 +0,0 @@ | ||||
| kind: Ingress | ||||
| apiVersion: networking.k8s.io/v1 | ||||
| metadata: | ||||
|   namespace: crowdsec | ||||
|   name: crowdsec-ingress | ||||
|   annotations: | ||||
|     kubernetes.io/ingress.class: nginx | ||||
|     cert-manager.io/cluster-issuer: cloudflare-letsencrypt-prod | ||||
|      | ||||
|  | ||||
| spec: | ||||
|   tls: | ||||
|   - hosts: | ||||
|     - crowdsec.kluster.moll.re | ||||
|     secretName: cloudflare-letsencrypt-issuer-account-key | ||||
|   rules: | ||||
|     - host: crowdsec.kluster.moll.re | ||||
|       http: | ||||
|         paths: | ||||
|         - backend: | ||||
|             service: | ||||
|               name: crowdsec-service | ||||
|               port:  | ||||
|                 number: 3000 | ||||
|           path: / | ||||
|           pathType: Prefix | ||||
| @@ -1,30 +0,0 @@ | ||||
| controller: | ||||
|   extraVolumes: | ||||
|   - name: crowdsec-bouncer-plugin | ||||
|     emptyDir: {} | ||||
|   extraInitContainers: | ||||
|   - name: init-clone-crowdsec-bouncer | ||||
|     image: crowdsecurity/lua-bouncer-plugin | ||||
|     imagePullPolicy: IfNotPresent | ||||
|     env: | ||||
|       - name: API_URL | ||||
|         value: "http://crowdsec-service.crowdsec.svc.cluster.local:8080" # crowdsec lapi service-name | ||||
|       - name: API_KEY | ||||
|         value: "6cc4c975f123f4f24174e2d544e81282" # generated with `cscli bouncers add -n <bouncer_name> | ||||
|       - name: BOUNCER_CONFIG | ||||
|         value: "/crowdsec/crowdsec-bouncer.conf" | ||||
|       - name: BAN_TEMPLATE_PATH | ||||
|         value: /etc/nginx/lua/plugins/crowdsec/templates/ban.html | ||||
|       - name: CAPTCHA_TEMPLATE_PATH | ||||
|         value: /etc/nginx/lua/plugins/crowdsec/templates/captcha.html | ||||
|     command: ['sh', '-c', "sh /docker_start.sh; mkdir -p /lua_plugins/crowdsec/; cp -R /crowdsec/* /lua_plugins/crowdsec/"] | ||||
|     volumeMounts: | ||||
|     - name: crowdsec-bouncer-plugin | ||||
|       mountPath: /lua_plugins | ||||
|   extraVolumeMounts: | ||||
|   - name: crowdsec-bouncer-plugin | ||||
|     mountPath: /etc/nginx/lua/plugins/crowdsec | ||||
|     subPath: crowdsec | ||||
|   config: | ||||
|     plugins: "crowdsec" | ||||
|     lua-shared-dicts: "crowdsec_cache: 50m" | ||||
| @@ -1,178 +0,0 @@ | ||||
| # Default values for crowdsec-chart. | ||||
| # This is a YAML-formatted file. | ||||
| # Declare variables to be passed into your templates. | ||||
|  | ||||
| # -- for raw logs format: json or cri (docker|containerd) | ||||
| container_runtime: containerd | ||||
|  | ||||
| image: | ||||
|   # -- docker image repository name | ||||
|   repository: crowdsecurity/crowdsec | ||||
|   # -- pullPolicy | ||||
|   pullPolicy: IfNotPresent | ||||
|   # -- docker image tag | ||||
|   tag: "" | ||||
|  | ||||
| # If you want to specify secrets that will be used for all your crowdsec-agents | ||||
| # secrets can be provided be env variables | ||||
| secrets: | ||||
|   # -- agent username (default is generated randomly) | ||||
|   username: "" | ||||
|   # -- agent password (default is generated randomly) | ||||
|   password: "" | ||||
|  | ||||
| # lapi will deploy pod with crowdsec lapi and dashboard as deployment | ||||
| lapi: | ||||
|   # -- environment variables from crowdsecurity/crowdsec docker image | ||||
|   env: [] | ||||
|     # by default disable the agent because it only the local API. | ||||
|     #- name: DISABLE_AGENT | ||||
|     #  value: "true" | ||||
|   dashboard: | ||||
|     # -- Enable Metabase Dashboard (by default disabled) | ||||
|     enabled: true | ||||
|     image: | ||||
|       # -- docker image repository name | ||||
|       repository: loancrate/metabase | ||||
|       # -- pullPolicy | ||||
|       pullPolicy: IfNotPresent | ||||
|       # -- docker image tag | ||||
|       tag: "latest" | ||||
|     # -- Metabase SQLite static DB containing Dashboards | ||||
|     assetURL: https://crowdsec-statics-assets.s3-eu-west-1.amazonaws.com/metabase_sqlite.zip | ||||
|  | ||||
|     # -- Enable ingress object | ||||
|     ingress: | ||||
|       enabled: false | ||||
|       annotations: | ||||
|         # metabase only supports http so we need this annotation | ||||
|         nginx.ingress.kubernetes.io/backend-protocol: "HTTP" | ||||
|       # labels: {} | ||||
|       ingressClassName: "nginx" | ||||
|       host: "" # metabase.example.com | ||||
|       # tls: {} | ||||
|  | ||||
|   resources: | ||||
|     limits: | ||||
|       memory: 100Mi | ||||
|     requests: | ||||
|       cpu: 150m | ||||
|       memory: 100Mi | ||||
|   # -- Enable persistent volumes | ||||
|   persistentVolume: | ||||
|     # -- Persistent volume for data folder. Stores e.g. registered bouncer api keys | ||||
|     data: | ||||
|       enabled: true | ||||
|       accessModes: | ||||
|         - ReadWriteOnce | ||||
|       storageClassName: "" | ||||
|       size: 1Gi | ||||
|     # -- Persistent volume for config folder. Stores e.g. online api credentials | ||||
|     config: | ||||
|       enabled: true | ||||
|       accessModes: | ||||
|         - ReadWriteOnce | ||||
|       storageClassName: "" | ||||
|       size: 100Mi | ||||
|  | ||||
|   # -- nodeSelector for lapi | ||||
|   nodeSelector: {} | ||||
|   # -- tolerations for lapi | ||||
|   tolerations: {} | ||||
|  | ||||
|   # -- Enable service monitoring (exposes "metrics" port "6060" for Prometheus) | ||||
|   metrics: | ||||
|     enabled: false | ||||
|     # -- Creates a ServiceMonitor so Prometheus will monitor this service | ||||
|     # -- Prometheus needs to be configured to watch on all namespaces for ServiceMonitors | ||||
|     # -- See the documentation: https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack#prometheusioscrape | ||||
|     # -- See also: https://github.com/prometheus-community/helm-charts/issues/106#issuecomment-700847774 | ||||
|     serviceMonitor: | ||||
|       enabled: false | ||||
|  | ||||
|   strategy: | ||||
|     type: RollingUpdate | ||||
|  | ||||
| # agent will deploy pod on every node as daemonSet to read wanted pods logs | ||||
| agent: | ||||
|   acquisition: | ||||
|     # -- Specify each pod you want to process it logs (namespace, podName and program) | ||||
|     - namespace: kube-system | ||||
|       # -- to select pod logs to process | ||||
|       podName: nginx-nginx-ingress-* | ||||
|       # -- program name related to specific parser you will use (see https://hub.crowdsec.net/author/crowdsecurity/configurations/docker-logs) | ||||
|       program: nginx | ||||
|   resources: | ||||
|     limits: | ||||
|       memory: 100Mi | ||||
|     requests: | ||||
|       cpu: 150m | ||||
|       memory: 100Mi | ||||
|   # -- Enable persistent volumes | ||||
|   persistentVolume: | ||||
|     # -- Persistent volume for config folder. Stores local config (parsers, scenarios etc.) | ||||
|     config: | ||||
|       enabled: true | ||||
|       accessModes: | ||||
|         - ReadWriteOnce | ||||
|       storageClassName: "" | ||||
|       size: 100Mi | ||||
|   # -- environment variables from crowdsecurity/crowdsec docker image | ||||
|   env: [] | ||||
|     # by default we the docker-logs parser to be able to parse docker logs in k8s | ||||
|     # by default we disable local API on the agent pod | ||||
|     # - name: SCENARIOS | ||||
|     #   value: "scenario/name otherScenario/name" | ||||
|     # - name: PARSERS | ||||
|     #   value: "parser/name otherParser/name" | ||||
|     # - name: POSTOVERFLOWS | ||||
|     #   value: "postoverflow/name otherPostoverflow/name" | ||||
|     # - name: CONFIG_FILE | ||||
|     #   value: "/etc/crowdsec/config.yaml" | ||||
|     # - name: DSN | ||||
|     #   value: "file:///var/log/toto.log" | ||||
|     # - name: TYPE | ||||
|     #   value: "Labels.type_for_time-machine_mode" | ||||
|     # - name: TEST_MODE | ||||
|     #   value: "false" | ||||
|     # - name: TZ | ||||
|     #   value: "" | ||||
|     # - name: DISABLE_AGENT | ||||
|     #   value: "false" | ||||
|     # - name: DISABLE_ONLINE_API | ||||
|     #   value: "false" | ||||
|     # - name: LEVEL_TRACE | ||||
|     #   value: "false" | ||||
|     # - name: LEVEL_DEBUG | ||||
|     #   value: "false" | ||||
|     # - name: LEVEL_INFO | ||||
|     #   value: "false" | ||||
|  | ||||
|   # -- nodeSelector for agent | ||||
|   nodeSelector: {} | ||||
|   # -- tolerations for agent | ||||
|   tolerations: {} | ||||
|  | ||||
|   # -- Enable service monitoring (exposes "metrics" port "6060" for Prometheus) | ||||
|   metrics: | ||||
|     enabled: false | ||||
|     # -- Creates a ServiceMonitor so Prometheus will monitor this service | ||||
|     # -- Prometheus needs to be configured to watch on all namespaces for ServiceMonitors | ||||
|     # -- See the documentation: https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack#prometheusioscrape | ||||
|     # -- See also: https://github.com/prometheus-community/helm-charts/issues/106#issuecomment-700847774 | ||||
|     serviceMonitor: | ||||
|       enabled: false | ||||
|  | ||||
|   # -- wait-for-lapi init container | ||||
|   wait_for_lapi: | ||||
|     image: | ||||
|       # -- docker image repository name | ||||
|       repository: busybox | ||||
|       # -- pullPolicy | ||||
|       pullPolicy: IfNotPresent | ||||
|       # -- docker image tag | ||||
|       tag: "1.28" | ||||
|  | ||||
| #service: {} | ||||
|  | ||||
|  | ||||
| @@ -1,34 +0,0 @@ | ||||
| apiVersion: apps/v1 | ||||
| kind: Deployment | ||||
| metadata: | ||||
|   namespace: ddns | ||||
|   name: cloudflare-ddns | ||||
| spec: | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       app: cloudflare-ddns | ||||
|    | ||||
|   template: | ||||
|     metadata: | ||||
|       labels: | ||||
|         app: cloudflare-ddns | ||||
|      | ||||
|     spec: | ||||
|       containers: | ||||
|       - name: cloudflare-ddns | ||||
|         image: timothyjmiller/cloudflare-ddns:latest | ||||
|         resources: | ||||
|           limits: | ||||
|             memory: "32Mi" | ||||
|             cpu: "50m" | ||||
|         env: | ||||
|             - name: CONFIG_PATH | ||||
|               value: "/etc/cloudflare-ddns/" | ||||
|         volumeMounts: | ||||
|           - mountPath: "/etc/cloudflare-ddns" | ||||
|             name: config-cloudflare-ddns | ||||
|             readOnly: true | ||||
|       volumes: | ||||
|       - name: config-cloudflare-ddns | ||||
|         secret: | ||||
|           secretName: config-cloudflare-ddns | ||||
| @@ -1,32 +0,0 @@ | ||||
| apiVersion: traefik.containo.us/v1alpha1 | ||||
| kind: IngressRoute | ||||
| metadata: | ||||
|   name: focalboard-ingress | ||||
|   namespace: focalboard | ||||
| spec: | ||||
|   entryPoints: | ||||
|     - websecure | ||||
|   routes: | ||||
|     - match: Host(`focalboard.kluster.moll.re`) | ||||
|       middlewares: | ||||
|         - name: focalboard-websocket | ||||
|       kind: Rule | ||||
|       services: | ||||
|         - name: focalboard | ||||
|           port: 8000 | ||||
|   tls: | ||||
|     certResolver: default-tls | ||||
|  | ||||
| --- | ||||
| apiVersion: traefik.containo.us/v1alpha1 | ||||
| kind: Middleware | ||||
| metadata: | ||||
|   name: focalboard-websocket | ||||
|   namespace: focalboard | ||||
| spec: | ||||
|   headers: | ||||
|     customRequestHeaders: | ||||
|       X-Forwarded-Proto: "https" | ||||
|       Upgrade: "websocket" | ||||
|  | ||||
|  | ||||
| @@ -1,37 +0,0 @@ | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: focalboard | ||||
|   name: focalboard-nfs | ||||
|   labels: | ||||
|     directory: focalboard | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   capacity: | ||||
|     storage: "5Gi" | ||||
|   volumeMode: Filesystem | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   nfs: | ||||
|     path: /focalboard | ||||
|     server: 10.43.239.43 # assigned to nfs-server service. Won't change as long as service is not redeployed | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: focalboard | ||||
|   name: focalboard-nfs | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "5Gi" | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       directory: focalboard | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -1,63 +0,0 @@ | ||||
| # | ||||
| # IMPORTANT NOTE | ||||
| # | ||||
| # This chart inherits from our common library chart. You can check the default values/options here: | ||||
| # https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml | ||||
| # | ||||
|  | ||||
| image: | ||||
|   # -- image repository | ||||
|   repository: flyskype2021/focalboard | ||||
|   # -- image pull policy | ||||
|   pullPolicy: IfNotPresent | ||||
|   # -- image tag | ||||
|   tag: latest | ||||
|  | ||||
|  | ||||
| enableServiceLinks: false | ||||
|  | ||||
| # -- environment variables. | ||||
| # @default -- See below | ||||
| env: {} | ||||
|  | ||||
| # See the Administrator's Guide for config reference: https://www.focalboard.com/guide/admin/ | ||||
| config: | | ||||
|   { | ||||
|     "serverRoot": "https://focalboard.kluster.moll.re", | ||||
|     "port": 8000, | ||||
|     "dbtype": "sqlite3", | ||||
|     "dbconfig": "/data/focalboard.db", | ||||
|     "postgres_dbconfig": "dbname=focalboard sslmode=disable", | ||||
|     "useSSL": false, | ||||
|     "webpath": "./pack", | ||||
|     "filespath": "/data/files", | ||||
|     "telemetry": false, | ||||
|     "session_expire_time": 2592000, | ||||
|     "session_refresh_time": 18000, | ||||
|     "localOnly": false, | ||||
|     "enableLocalMode": true, | ||||
|     "localModeSocketLocation": "/var/tmp/focalboard_local.socket" | ||||
|   } | ||||
|  | ||||
|  | ||||
| # -- Configures service settings for the chart. | ||||
| # @default -- See values.yaml | ||||
| service: | ||||
|   main: | ||||
|     ports: | ||||
|       http: | ||||
|         port: 8000 | ||||
|  | ||||
| ingress: | ||||
|   # -- Enable and configure ingress settings for the chart under this key. | ||||
|   # @default -- See values.yaml | ||||
|   main: | ||||
|     enabled: false | ||||
|  | ||||
| # -- Configure persistence settings for the chart under this key. | ||||
| # @default -- See values.yaml | ||||
| persistence: | ||||
|   data: | ||||
|     enabled: true | ||||
|     existingClaim: focalboard-nfs | ||||
|  | ||||
| @@ -1,47 +0,0 @@ | ||||
| # | ||||
| # IMPORTANT NOTE | ||||
| # | ||||
| # This chart inherits from our common library chart. You can check the default values/options here: | ||||
| # https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml | ||||
| # | ||||
|  | ||||
| image: | ||||
|   # -- image repository | ||||
|   repository: linuxserver/freshrss | ||||
|   # -- image pull policy | ||||
|   pullPolicy: IfNotPresent | ||||
|   # -- image tag | ||||
|   tag: version-1.18.1 | ||||
|  | ||||
| # -- environment variables. See more environment variables in the [freshrss documentation](https://github.com/linuxserver/docker-freshrss#parameters). | ||||
| # @default -- See below | ||||
| env: | ||||
|   # -- Set the container timezone | ||||
|   TZ: "Europe/Berlin" | ||||
|   # -- Set the container user id | ||||
|   PUID: "1001" | ||||
|   # -- Set the container group id | ||||
|   PGID: "1001" | ||||
|  | ||||
| # -- Configures service settings for the chart. | ||||
| # @default -- See values.yaml | ||||
| service: | ||||
|   main: | ||||
|     ports: | ||||
|       http: | ||||
|         port: 80 | ||||
|  | ||||
| ingress: | ||||
|   # -- Enable and configure ingress settings for the chart under this key. | ||||
|   # @default -- See values.yaml | ||||
|   main: | ||||
|     enabled: false | ||||
|  | ||||
| # -- Configure persistence settings for the chart under this key. | ||||
| # @default -- See values.yaml | ||||
| persistence: | ||||
|   config: | ||||
|     enabled: true | ||||
|     useExisting: true | ||||
|     name: freshrss-nfs | ||||
|  | ||||
| @@ -1,24 +0,0 @@ | ||||
| kind: Ingress | ||||
| apiVersion: networking.k8s.io/v1 | ||||
| metadata: | ||||
|   namespace: freshrss | ||||
|   name: freshrss-ingress | ||||
|   annotations: | ||||
|     kubernetes.io/ingress.class: nginx | ||||
|     cert-manager.io/cluster-issuer: cloudflare-letsencrypt-prod | ||||
| spec: | ||||
|   tls: | ||||
|   - hosts: | ||||
|     - rss.kluster.moll.re | ||||
|     secretName: cloudflare-letsencrypt-issuer-account-key | ||||
|   rules: | ||||
|     - host: rss.kluster.moll.re | ||||
|       http: | ||||
|         paths: | ||||
|         - backend: | ||||
|             service: | ||||
|               name: freshrss | ||||
|               port:  | ||||
|                 number: 80 | ||||
|           path: / | ||||
|           pathType: Prefix | ||||
| @@ -1,37 +0,0 @@ | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: freshrss | ||||
|   name: freshrss-nfs | ||||
|   labels: | ||||
|     directory: freshrss | ||||
| spec: | ||||
|   storageClassName: slow | ||||
|   capacity: | ||||
|     storage: "1Gi" | ||||
|   volumeMode: Filesystem | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   nfs: | ||||
|     path: /freshrss | ||||
|     server: 10.43.239.43 # assigned to nfs-server service. Won't change as long as service is not redeployed | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: freshrss | ||||
|   name: freshrss-nfs | ||||
| spec: | ||||
|   storageClassName: slow | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "1Gi" | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       directory: freshrss | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -1,54 +0,0 @@ | ||||
| --- | ||||
| apiVersion: batch/v1 | ||||
| kind: CronJob | ||||
| metadata: | ||||
|   name: gcloud-backup | ||||
|   namespace: backup | ||||
|    | ||||
| spec: | ||||
|   schedule: "0 2 15 * *" | ||||
|   # at 2:00, the 1. and 15. of every month | ||||
|   successfulJobsHistoryLimit: 2 | ||||
|   failedJobsHistoryLimit: 2 | ||||
|  | ||||
|   jobTemplate: | ||||
|     spec: | ||||
|       template: | ||||
|         spec: | ||||
|           restartPolicy: Never | ||||
|           containers: | ||||
|           - name: gcloud-backup | ||||
|             image: shirakiya/gcloud-sdk:latest | ||||
|             command: ["/bin/bash", "-c", "--"] | ||||
|             args:  | ||||
|             - |  | ||||
|               ln -s /config/.boto /root/.boto && | ||||
|               gsutil -m rsync -x "^(jellyfin|config|webtop|other root folder)/.*$" -U -r -e -d /data gs://kluster-backup | ||||
|              # command: | ||||
|             # -m multithreaded | ||||
|             # -U skip unsupported objects | ||||
|             # -e don't follow symlinks | ||||
|             # -r recursively follow folder structure | ||||
|             # -d deletes files from dst if they are not in src anymore | ||||
|             # -n dry runs | ||||
|             # This command runs with the knowledge the gs-bucket is set up with versioning. Rsync therefore serves as an incremental backup whose individual stages can be recovered | ||||
|             volumeMounts: | ||||
|               - mountPath: /data | ||||
|                 name: backup-nfs-access | ||||
|               - mountPath: /config | ||||
|                 name: gcloud-credentials | ||||
|                 # entry .boto in the secret is mounted as /root/.boto | ||||
|            | ||||
|           volumes: | ||||
|             - name: backup-nfs-access | ||||
|               persistentVolumeClaim: | ||||
|                 claimName: backup-nfs-access | ||||
|             - name: gcloud-credentials | ||||
|               secret: | ||||
|                 secretName: gcloud-credentials | ||||
|                 optional: false | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -1,749 +0,0 @@ | ||||
| ## nginx configuration | ||||
| ## Ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/index.md | ||||
| ## | ||||
|  | ||||
| ## Overrides for generated resource names | ||||
| # See templates/_helpers.tpl | ||||
| # nameOverride: | ||||
| # fullnameOverride: | ||||
|  | ||||
| ## Labels to apply to all resources | ||||
| ## | ||||
| commonLabels: {} | ||||
| # scmhash: abc123 | ||||
| # myLabel: aakkmd | ||||
|  | ||||
| controller: | ||||
|   name: controller | ||||
|   image: | ||||
|     ## Keep false as default for now! | ||||
|     chroot: false | ||||
|     registry: registry.k8s.io | ||||
|     image: ingress-nginx/controller | ||||
|     ## for backwards compatibility consider setting the full image url via the repository value below | ||||
|     ## use *either* current default registry/image or repository format or installing chart by providing the values.yaml will fail | ||||
|     ## repository: | ||||
|     tag: "v1.3.0" | ||||
|     digest: sha256:d1707ca76d3b044ab8a28277a2466a02100ee9f58a86af1535a3edf9323ea1b5 | ||||
|     digestChroot: sha256:0fcb91216a22aae43b374fc2e6a03b8afe9e8c78cbf07a09d75636dc4ea3c191 | ||||
|     pullPolicy: IfNotPresent | ||||
|     # www-data -> uid 101 | ||||
|     runAsUser: 101 | ||||
|     allowPrivilegeEscalation: true | ||||
|  | ||||
|   # -- Use an existing PSP instead of creating one | ||||
|   existingPsp: "" | ||||
|  | ||||
|   # -- Configures the controller container name | ||||
|   containerName: controller | ||||
|  | ||||
|   # -- Configures the ports that the nginx-controller listens on | ||||
|   containerPort: | ||||
|     http: 80 | ||||
|     https: 443 | ||||
|  | ||||
|   # -- Will add custom configuration options to Nginx https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/ | ||||
|   config: {} | ||||
|  | ||||
|   # -- Annotations to be added to the controller config configuration configmap. | ||||
|   configAnnotations: {} | ||||
|  | ||||
|   # -- Will add custom headers before sending traffic to backends according to https://github.com/kubernetes/ingress-nginx/tree/main/docs/examples/customization/custom-headers | ||||
|   proxySetHeaders: {} | ||||
|  | ||||
|   # -- Will add custom headers before sending response traffic to the client according to: https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/#add-headers | ||||
|   addHeaders: {} | ||||
|  | ||||
|   # -- Optionally customize the pod dnsConfig. | ||||
|   dnsConfig: {} | ||||
|  | ||||
|   # -- Optionally customize the pod hostname. | ||||
|   hostname: {} | ||||
|  | ||||
|   # -- Optionally change this to ClusterFirstWithHostNet in case you have 'hostNetwork: true'. | ||||
|   # By default, while using host network, name resolution uses the host's DNS. If you wish nginx-controller | ||||
|   # to keep resolving names inside the k8s network, use ClusterFirstWithHostNet. | ||||
|   dnsPolicy: ClusterFirst | ||||
|  | ||||
|   # -- Bare-metal considerations via the host network https://kubernetes.github.io/ingress-nginx/deploy/baremetal/#via-the-host-network | ||||
|   # Ingress status was blank because there is no Service exposing the NGINX Ingress controller in a configuration using the host network, the default --publish-service flag used in standard cloud setups does not apply | ||||
|   reportNodeInternalIp: false | ||||
|  | ||||
|   # -- Process Ingress objects without ingressClass annotation/ingressClassName field | ||||
|   # Overrides value for --watch-ingress-without-class flag of the controller binary | ||||
|   # Defaults to false | ||||
|   watchIngressWithoutClass: false | ||||
|  | ||||
|   # -- Process IngressClass per name (additionally as per spec.controller). | ||||
|   ingressClassByName: false | ||||
|  | ||||
|   # -- This configuration defines if Ingress Controller should allow users to set | ||||
|   # their own *-snippet annotations, otherwise this is forbidden / dropped | ||||
|   # when users add those annotations. | ||||
|   # Global snippets in ConfigMap are still respected | ||||
|   allowSnippetAnnotations: true | ||||
|  | ||||
|   # -- Required for use with CNI based kubernetes installations (such as ones set up by kubeadm), | ||||
|   # since CNI and hostport don't mix yet. Can be deprecated once https://github.com/kubernetes/kubernetes/issues/23920 | ||||
|   # is merged | ||||
|   hostNetwork: false | ||||
|  | ||||
|   ## Use host ports 80 and 443 | ||||
|   ## Disabled by default | ||||
|   hostPort: | ||||
|     # -- Enable 'hostPort' or not | ||||
|     enabled: false | ||||
|     ports: | ||||
|       # -- 'hostPort' http port | ||||
|       http: 80 | ||||
|       # -- 'hostPort' https port | ||||
|       https: 443 | ||||
|  | ||||
|   # -- Election ID to use for status update | ||||
|   electionID: ingress-controller-leader | ||||
|  | ||||
|   ## This section refers to the creation of the IngressClass resource | ||||
|   ## IngressClass resources are supported since k8s >= 1.18 and required since k8s >= 1.19 | ||||
|   ingressClassResource: | ||||
|     # -- Name of the ingressClass | ||||
|     name: nginx-new | ||||
|     # -- Is this ingressClass enabled or not | ||||
|     enabled: true | ||||
|     # -- Is this the default ingressClass for the cluster | ||||
|     default: false | ||||
|     # -- Controller-value of the controller that is processing this ingressClass | ||||
|     controllerValue: "k8s.io/ingress-nginx" | ||||
|  | ||||
|     # -- Parameters is a link to a custom resource containing additional | ||||
|     # configuration for the controller. This is optional if the controller | ||||
|     # does not require extra parameters. | ||||
|     parameters: {} | ||||
|  | ||||
|   # -- For backwards compatibility with ingress.class annotation, use ingressClass. | ||||
|   # Algorithm is as follows, first ingressClassName is considered, if not present, controller looks for ingress.class annotation | ||||
|   ingressClass: nginx | ||||
|  | ||||
|   # -- Labels to add to the pod container metadata | ||||
|   podLabels: {} | ||||
|   #  key: value | ||||
|  | ||||
|   # -- Security Context policies for controller pods | ||||
|   podSecurityContext: {} | ||||
|  | ||||
|   # -- See https://kubernetes.io/docs/tasks/administer-cluster/sysctl-cluster/ for notes on enabling and using sysctls | ||||
|   sysctls: {} | ||||
|   # sysctls: | ||||
|   #   "net.core.somaxconn": "8192" | ||||
|  | ||||
|   # -- Allows customization of the source of the IP address or FQDN to report | ||||
|   # in the ingress status field. By default, it reads the information provided | ||||
|   # by the service. If disable, the status field reports the IP address of the | ||||
|   # node or nodes where an ingress controller pod is running. | ||||
|   publishService: | ||||
|     # -- Enable 'publishService' or not | ||||
|     enabled: true | ||||
|     # -- Allows overriding of the publish service to bind to | ||||
|     # Must be <namespace>/<service_name> | ||||
|     pathOverride: "" | ||||
|  | ||||
|   # Limit the scope of the controller to a specific namespace | ||||
|   scope: | ||||
|     # -- Enable 'scope' or not | ||||
|     enabled: false | ||||
|     # -- Namespace to limit the controller to; defaults to $(POD_NAMESPACE) | ||||
|     namespace: "" | ||||
|     # -- When scope.enabled == false, instead of watching all namespaces, we watching namespaces whose labels | ||||
|     # only match with namespaceSelector. Format like foo=bar. Defaults to empty, means watching all namespaces. | ||||
|     namespaceSelector: "" | ||||
|  | ||||
|   # -- Allows customization of the configmap / nginx-configmap namespace; defaults to $(POD_NAMESPACE) | ||||
|   configMapNamespace: "" | ||||
|  | ||||
|   tcp: | ||||
|     # -- Allows customization of the tcp-services-configmap; defaults to $(POD_NAMESPACE) | ||||
|     configMapNamespace: "" | ||||
|     # -- Annotations to be added to the tcp config configmap | ||||
|     annotations: {} | ||||
|  | ||||
|   udp: | ||||
|     # -- Allows customization of the udp-services-configmap; defaults to $(POD_NAMESPACE) | ||||
|     configMapNamespace: "" | ||||
|     # -- Annotations to be added to the udp config configmap | ||||
|     annotations: {} | ||||
|  | ||||
|   # -- Maxmind license key to download GeoLite2 Databases. | ||||
|   ## https://blog.maxmind.com/2019/12/18/significant-changes-to-accessing-and-using-geolite2-databases | ||||
|   maxmindLicenseKey: "" | ||||
|  | ||||
|   # -- Additional command line arguments to pass to nginx-ingress-controller | ||||
|   # E.g. to specify the default SSL certificate you can use | ||||
|   extraArgs: {} | ||||
|   ## extraArgs: | ||||
|   ##   default-ssl-certificate: "<namespace>/<secret_name>" | ||||
|  | ||||
|   # -- Additional environment variables to set | ||||
|   extraEnvs: [] | ||||
|   # extraEnvs: | ||||
|   #   - name: FOO | ||||
|   #     valueFrom: | ||||
|   #       secretKeyRef: | ||||
|   #         key: FOO | ||||
|   #         name: secret-resource | ||||
|  | ||||
|   # -- Use a `DaemonSet` or `Deployment` | ||||
|   kind: Deployment | ||||
|  | ||||
|   # -- Annotations to be added to the controller Deployment or DaemonSet | ||||
|   ## | ||||
|   annotations: {} | ||||
|   #  keel.sh/pollSchedule: "@every 60m" | ||||
|  | ||||
|   # -- Labels to be added to the controller Deployment or DaemonSet and other resources that do not have option to specify labels | ||||
|   ## | ||||
|   labels: {} | ||||
|   #  keel.sh/policy: patch | ||||
|   #  keel.sh/trigger: poll | ||||
|  | ||||
|  | ||||
|   # -- The update strategy to apply to the Deployment or DaemonSet | ||||
|   ## | ||||
|   updateStrategy: {} | ||||
|   #  rollingUpdate: | ||||
|   #    maxUnavailable: 1 | ||||
|   #  type: RollingUpdate | ||||
|  | ||||
|   # -- `minReadySeconds` to avoid killing pods before we are ready | ||||
|   ## | ||||
|   minReadySeconds: 0 | ||||
|  | ||||
|  | ||||
|   # -- Node tolerations for server scheduling to nodes with taints | ||||
|   ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ | ||||
|   ## | ||||
|   tolerations: [] | ||||
|   #  - key: "key" | ||||
|   #    operator: "Equal|Exists" | ||||
|   #    value: "value" | ||||
|   #    effect: "NoSchedule|PreferNoSchedule|NoExecute(1.6 only)" | ||||
|  | ||||
|   # -- Affinity and anti-affinity rules for server scheduling to nodes | ||||
|   ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity | ||||
|   ## | ||||
|   affinity: {} | ||||
|     # # An example of preferred pod anti-affinity, weight is in the range 1-100 | ||||
|     # podAntiAffinity: | ||||
|     #   preferredDuringSchedulingIgnoredDuringExecution: | ||||
|     #   - weight: 100 | ||||
|     #     podAffinityTerm: | ||||
|     #       labelSelector: | ||||
|     #         matchExpressions: | ||||
|     #         - key: app.kubernetes.io/name | ||||
|     #           operator: In | ||||
|     #           values: | ||||
|     #           - ingress-nginx | ||||
|     #         - key: app.kubernetes.io/instance | ||||
|     #           operator: In | ||||
|     #           values: | ||||
|     #           - ingress-nginx | ||||
|     #         - key: app.kubernetes.io/component | ||||
|     #           operator: In | ||||
|     #           values: | ||||
|     #           - controller | ||||
|     #       topologyKey: kubernetes.io/hostname | ||||
|  | ||||
|     # # An example of required pod anti-affinity | ||||
|     # podAntiAffinity: | ||||
|     #   requiredDuringSchedulingIgnoredDuringExecution: | ||||
|     #   - labelSelector: | ||||
|     #       matchExpressions: | ||||
|     #       - key: app.kubernetes.io/name | ||||
|     #         operator: In | ||||
|     #         values: | ||||
|     #         - ingress-nginx | ||||
|     #       - key: app.kubernetes.io/instance | ||||
|     #         operator: In | ||||
|     #         values: | ||||
|     #         - ingress-nginx | ||||
|     #       - key: app.kubernetes.io/component | ||||
|     #         operator: In | ||||
|     #         values: | ||||
|     #         - controller | ||||
|     #     topologyKey: "kubernetes.io/hostname" | ||||
|  | ||||
|   # -- Topology spread constraints rely on node labels to identify the topology domain(s) that each Node is in. | ||||
|   ## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ | ||||
|   ## | ||||
|   topologySpreadConstraints: [] | ||||
|     # - maxSkew: 1 | ||||
|     #   topologyKey: topology.kubernetes.io/zone | ||||
|     #   whenUnsatisfiable: DoNotSchedule | ||||
|     #   labelSelector: | ||||
|     #     matchLabels: | ||||
|     #       app.kubernetes.io/instance: ingress-nginx-internal | ||||
|  | ||||
|   # -- `terminationGracePeriodSeconds` to avoid killing pods before we are ready | ||||
|   ## wait up to five minutes for the drain of connections | ||||
|   ## | ||||
|   terminationGracePeriodSeconds: 300 | ||||
|  | ||||
|   # -- Node labels for controller pod assignment | ||||
|   ## Ref: https://kubernetes.io/docs/user-guide/node-selection/ | ||||
|   ## | ||||
|   nodeSelector: | ||||
|     kubernetes.io/os: linux | ||||
|  | ||||
|   ## Liveness and readiness probe values | ||||
|   ## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes | ||||
|   ## | ||||
|   ## startupProbe: | ||||
|   ##   httpGet: | ||||
|   ##     # should match container.healthCheckPath | ||||
|   ##     path: "/healthz" | ||||
|   ##     port: 10254 | ||||
|   ##     scheme: HTTP | ||||
|   ##   initialDelaySeconds: 5 | ||||
|   ##   periodSeconds: 5 | ||||
|   ##   timeoutSeconds: 2 | ||||
|   ##   successThreshold: 1 | ||||
|   ##   failureThreshold: 5 | ||||
|   livenessProbe: | ||||
|     httpGet: | ||||
|       # should match container.healthCheckPath | ||||
|       path: "/healthz" | ||||
|       port: 10254 | ||||
|       scheme: HTTP | ||||
|     initialDelaySeconds: 10 | ||||
|     periodSeconds: 10 | ||||
|     timeoutSeconds: 1 | ||||
|     successThreshold: 1 | ||||
|     failureThreshold: 5 | ||||
|   readinessProbe: | ||||
|     httpGet: | ||||
|       # should match container.healthCheckPath | ||||
|       path: "/healthz" | ||||
|       port: 10254 | ||||
|       scheme: HTTP | ||||
|     initialDelaySeconds: 10 | ||||
|     periodSeconds: 10 | ||||
|     timeoutSeconds: 1 | ||||
|     successThreshold: 1 | ||||
|     failureThreshold: 3 | ||||
|  | ||||
|  | ||||
|   # -- Path of the health check endpoint. All requests received on the port defined by | ||||
|   # the healthz-port parameter are forwarded internally to this path. | ||||
|   healthCheckPath: "/healthz" | ||||
|  | ||||
|   # -- Address to bind the health check endpoint. | ||||
|   # It is better to set this option to the internal node address | ||||
|   # if the ingress nginx controller is running in the `hostNetwork: true` mode. | ||||
|   healthCheckHost: "" | ||||
|  | ||||
|   # -- Annotations to be added to controller pods | ||||
|   ## | ||||
|   podAnnotations: {} | ||||
|  | ||||
|   replicaCount: 1 | ||||
|  | ||||
|   minAvailable: 1 | ||||
|  | ||||
|   ## Define requests resources to avoid probe issues due to CPU utilization in busy nodes | ||||
|   ## ref: https://github.com/kubernetes/ingress-nginx/issues/4735#issuecomment-551204903 | ||||
|   ## Ideally, there should be no limits. | ||||
|   ## https://engineering.indeedblog.com/blog/2019/12/cpu-throttling-regression-fix/ | ||||
|   resources: | ||||
|   ##  limits: | ||||
|   ##    cpu: 100m | ||||
|   ##    memory: 90Mi | ||||
|     requests: | ||||
|       cpu: 100m | ||||
|       memory: 90Mi | ||||
|  | ||||
|   # Mutually exclusive with keda autoscaling | ||||
|   autoscaling: | ||||
|     enabled: false | ||||
|     minReplicas: 1 | ||||
|     maxReplicas: 11 | ||||
|     targetCPUUtilizationPercentage: 50 | ||||
|     targetMemoryUtilizationPercentage: 50 | ||||
|     behavior: {} | ||||
|       # scaleDown: | ||||
|       #   stabilizationWindowSeconds: 300 | ||||
|       #  policies: | ||||
|       #   - type: Pods | ||||
|       #     value: 1 | ||||
|       #     periodSeconds: 180 | ||||
|       # scaleUp: | ||||
|       #   stabilizationWindowSeconds: 300 | ||||
|       #   policies: | ||||
|       #   - type: Pods | ||||
|       #     value: 2 | ||||
|       #     periodSeconds: 60 | ||||
|  | ||||
|   autoscalingTemplate: [] | ||||
|   # Custom or additional autoscaling metrics | ||||
|   # ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-custom-metrics | ||||
|   # - type: Pods | ||||
|   #   pods: | ||||
|   #     metric: | ||||
|   #       name: nginx_ingress_controller_nginx_process_requests_total | ||||
|   #     target: | ||||
|   #       type: AverageValue | ||||
|   #       averageValue: 10000m | ||||
|  | ||||
|   # Mutually exclusive with hpa autoscaling | ||||
|  | ||||
|   # -- Enable mimalloc as a drop-in replacement for malloc. | ||||
|   ## ref: https://github.com/microsoft/mimalloc | ||||
|   ## | ||||
|   enableMimalloc: true | ||||
|  | ||||
|   ## Override NGINX template | ||||
|   customTemplate: | ||||
|     configMapName: "" | ||||
|     configMapKey: "" | ||||
|  | ||||
|   service: | ||||
|     enabled: true | ||||
|  | ||||
|     # -- If enabled is adding an appProtocol option for Kubernetes service. An appProtocol field replacing annotations that were | ||||
|     # using for setting a backend protocol. Here is an example for AWS: service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http | ||||
|     # It allows choosing the protocol for each backend specified in the Kubernetes service. | ||||
|     # See the following GitHub issue for more details about the purpose: https://github.com/kubernetes/kubernetes/issues/40244 | ||||
|     # Will be ignored for Kubernetes versions older than 1.20 | ||||
|     ## | ||||
|     appProtocol: true | ||||
|  | ||||
|     annotations: {} | ||||
|     labels: {} | ||||
|     # clusterIP: "" | ||||
|  | ||||
|     # -- List of IP addresses at which the controller services are available | ||||
|     ## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips | ||||
|     ## | ||||
|     externalIPs: [] | ||||
|  | ||||
|     # -- Used by cloud providers to connect the resulting `LoadBalancer` to a pre-existing static IP according to https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer | ||||
|     loadBalancerSourceRanges: [] | ||||
|  | ||||
|     enableHttp: true | ||||
|     enableHttps: true | ||||
|  | ||||
|     ## Set external traffic policy to: "Local" to preserve source IP on providers supporting it. | ||||
|     ## Ref: https://kubernetes.io/docs/tutorials/services/source-ip/#source-ip-for-services-with-typeloadbalancer | ||||
|     # externalTrafficPolicy: "" | ||||
|  | ||||
|     ## Must be either "None" or "ClientIP" if set. Kubernetes will default to "None". | ||||
|     ## Ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies | ||||
|     # sessionAffinity: "" | ||||
|  | ||||
|     ## Specifies the health check node port (numeric port number) for the service. If healthCheckNodePort isn’t specified, | ||||
|     ## the service controller allocates a port from your cluster’s NodePort range. | ||||
|     ## Ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip | ||||
|     # healthCheckNodePort: 0 | ||||
|  | ||||
|     # -- Represents the dual-stack-ness requested or required by this Service. Possible values are | ||||
|     # SingleStack, PreferDualStack or RequireDualStack. | ||||
|     # The ipFamilies and clusterIPs fields depend on the value of this field. | ||||
|     ## Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/ | ||||
|     ipFamilyPolicy: "SingleStack" | ||||
|  | ||||
|     # -- List of IP families (e.g. IPv4, IPv6) assigned to the service. This field is usually assigned automatically | ||||
|     # based on cluster configuration and the ipFamilyPolicy field. | ||||
|     ## Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/ | ||||
|     ipFamilies: | ||||
|       - IPv4 | ||||
|  | ||||
|     ports: | ||||
|       http: 80 | ||||
|       https: 443 | ||||
|  | ||||
|     targetPorts: | ||||
|       http: http | ||||
|       https: https | ||||
|  | ||||
|     type: LoadBalancer | ||||
|     loadBalancerIP: "192.168.1.4" | ||||
|  | ||||
|     ## type: NodePort | ||||
|     ## nodePorts: | ||||
|     ##   http: 32080 | ||||
|     ##   https: 32443 | ||||
|     ##   tcp: | ||||
|     ##     8080: 32808 | ||||
|  | ||||
|  | ||||
|   # shareProcessNamespace enables process namespace sharing within the pod. | ||||
|   # This can be used for example to signal log rotation using `kill -USR1` from a sidecar. | ||||
|   shareProcessNamespace: false | ||||
|  | ||||
|  | ||||
|   extraContainers: []       | ||||
|   #  - name: my-sidecar | ||||
|   #    image: nginx:latest | ||||
|   #  - name: lemonldap-ng-controller | ||||
|   #    image: lemonldapng/lemonldap-ng-controller:0.2.0 | ||||
|   #    args: | ||||
|   #      - /lemonldap-ng-controller | ||||
|   #      - --alsologtostderr | ||||
|   #      - --configmap=$(POD_NAMESPACE)/lemonldap-ng-configuration | ||||
|   #    env: | ||||
|   #      - name: POD_NAME | ||||
|   #        valueFrom: | ||||
|   #          fieldRef: | ||||
|   #            fieldPath: metadata.name | ||||
|   #      - name: POD_NAMESPACE | ||||
|   #        valueFrom: | ||||
|   #          fieldRef: | ||||
|   #            fieldPath: metadata.namespace | ||||
|   #    volumeMounts: | ||||
|   #    - name: copy-portal-skins | ||||
|   #      mountPath: /srv/var/lib/lemonldap-ng/portal/skins | ||||
|  | ||||
|   # -- Additional volumeMounts to the controller main container. | ||||
|   extraVolumeMounts: [] | ||||
|      | ||||
|   #  - name: copy-portal-skins | ||||
|   #   mountPath: /var/lib/lemonldap-ng/portal/skins | ||||
|  | ||||
|   # -- Additional volumes to the controller pod. | ||||
|   extraVolumes: [] | ||||
|   #  - name: copy-portal-skins | ||||
|   #    emptyDir: {} | ||||
|  | ||||
|   # -- Containers, which are run before the app containers are started. | ||||
|   extraInitContainers: [] | ||||
|   # - name: init-myservice | ||||
|   #   image: busybox | ||||
|   #   command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;'] | ||||
|  | ||||
|   extraModules: [] | ||||
|   ## Modules, which are mounted into the core nginx image | ||||
|   # - name: opentelemetry | ||||
|   #   image: registry.k8s.io/ingress-nginx/opentelemetry:v20220801-g00ee51f09@sha256:482562feba02ad178411efc284f8eb803a185e3ea5588b6111ccbc20b816b427 | ||||
|   # | ||||
|   # The image must contain a `/usr/local/bin/init_module.sh` executable, which | ||||
|   # will be executed as initContainers, to move its config files within the | ||||
|   # mounted volume. | ||||
|  | ||||
|   admissionWebhooks: | ||||
|     annotations: {} | ||||
|     # ignore-check.kube-linter.io/no-read-only-rootfs: "This deployment needs write access to root filesystem". | ||||
|  | ||||
|     ## Additional annotations to the admission webhooks. | ||||
|     ## These annotations will be added to the ValidatingWebhookConfiguration and | ||||
|     ## the Jobs Spec of the admission webhooks. | ||||
|     enabled: true | ||||
|     # -- Additional environment variables to set | ||||
|     extraEnvs: [] | ||||
|     # extraEnvs: | ||||
|     #   - name: FOO | ||||
|     #     valueFrom: | ||||
|     #       secretKeyRef: | ||||
|     #         key: FOO | ||||
|     #         name: secret-resource | ||||
|     # -- Admission Webhook failure policy to use | ||||
|     failurePolicy: Fail | ||||
|     # timeoutSeconds: 10 | ||||
|     port: 8443 | ||||
|     certificate: "/usr/local/certificates/cert" | ||||
|     key: "/usr/local/certificates/key" | ||||
|     namespaceSelector: {} | ||||
|     objectSelector: {} | ||||
|     # -- Labels to be added to admission webhooks | ||||
|     labels: {} | ||||
|  | ||||
|     # -- Use an existing PSP instead of creating one | ||||
|     existingPsp: "" | ||||
|     networkPolicyEnabled: false | ||||
|  | ||||
|     service: | ||||
|       annotations: {} | ||||
|       # clusterIP: "" | ||||
|       externalIPs: [] | ||||
|       # loadBalancerIP: "" | ||||
|       loadBalancerSourceRanges: [] | ||||
|       servicePort: 443 | ||||
|       type: ClusterIP | ||||
|  | ||||
|     createSecretJob: | ||||
|       resources: {} | ||||
|         # limits: | ||||
|         #   cpu: 10m | ||||
|         #   memory: 20Mi | ||||
|         # requests: | ||||
|         #   cpu: 10m | ||||
|         #   memory: 20Mi | ||||
|  | ||||
|     patchWebhookJob: | ||||
|       resources: {} | ||||
|  | ||||
|     patch: | ||||
|       enabled: true | ||||
|       image: | ||||
|         registry: registry.k8s.io | ||||
|         image: ingress-nginx/kube-webhook-certgen | ||||
|         ## for backwards compatibility consider setting the full image url via the repository value below | ||||
|         ## use *either* current default registry/image or repository format or installing chart by providing the values.yaml will fail | ||||
|         ## repository: | ||||
|         tag: v1.3.0 | ||||
|         digest: sha256:549e71a6ca248c5abd51cdb73dbc3083df62cf92ed5e6147c780e30f7e007a47 | ||||
|         pullPolicy: IfNotPresent | ||||
|       # -- Provide a priority class name to the webhook patching job | ||||
|       ## | ||||
|       priorityClassName: "" | ||||
|       podAnnotations: {} | ||||
|       nodeSelector: | ||||
|         kubernetes.io/os: linux | ||||
|       tolerations: [] | ||||
|       # -- Labels to be added to patch job resources | ||||
|       labels: {} | ||||
|       securityContext: | ||||
|         runAsNonRoot: true | ||||
|         runAsUser: 2000 | ||||
|         fsGroup: 2000 | ||||
|  | ||||
|  | ||||
|   metrics: | ||||
|     port: 10254 | ||||
|     # if this port is changed, change healthz-port: in extraArgs: accordingly | ||||
|     enabled: false | ||||
|  | ||||
|     service: | ||||
|       annotations: {} | ||||
|       # prometheus.io/scrape: "true" | ||||
|       # prometheus.io/port: "10254" | ||||
|  | ||||
|       # clusterIP: "" | ||||
|  | ||||
|       # -- List of IP addresses at which the stats-exporter service is available | ||||
|       ## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips | ||||
|       ## | ||||
|       externalIPs: [] | ||||
|  | ||||
|       # loadBalancerIP: "" | ||||
|       loadBalancerSourceRanges: [] | ||||
|       servicePort: 10254 | ||||
|       type: ClusterIP | ||||
|       # externalTrafficPolicy: "" | ||||
|       # nodePort: "" | ||||
|  | ||||
|     serviceMonitor: | ||||
|       enabled: false | ||||
|       additionalLabels: {} | ||||
|       ## The label to use to retrieve the job name from. | ||||
|       ## jobLabel: "app.kubernetes.io/name" | ||||
|       namespace: "" | ||||
|       namespaceSelector: {} | ||||
|       ## Default: scrape .Release.Namespace only | ||||
|       ## To scrape all, use the following: | ||||
|       ## namespaceSelector: | ||||
|       ##   any: true | ||||
|       scrapeInterval: 30s | ||||
|       # honorLabels: true | ||||
|       targetLabels: [] | ||||
|       relabelings: [] | ||||
|       metricRelabelings: [] | ||||
|  | ||||
|     prometheusRule: | ||||
|       enabled: false | ||||
|       additionalLabels: {} | ||||
|       # namespace: "" | ||||
|       rules: [] | ||||
|         # # These are just examples rules, please adapt them to your needs | ||||
|         # - alert: NGINXConfigFailed | ||||
|         #   expr: count(nginx_ingress_controller_config_last_reload_successful == 0) > 0 | ||||
|         #   for: 1s | ||||
|         #   labels: | ||||
|         #     severity: critical | ||||
|         #   annotations: | ||||
|         #     description: bad ingress config - nginx config test failed | ||||
|         #     summary: uninstall the latest ingress changes to allow config reloads to resume | ||||
|         # - alert: NGINXCertificateExpiry | ||||
|         #   expr: (avg(nginx_ingress_controller_ssl_expire_time_seconds) by (host) - time()) < 604800 | ||||
|         #   for: 1s | ||||
|         #   labels: | ||||
|         #     severity: critical | ||||
|         #   annotations: | ||||
|         #     description: ssl certificate(s) will expire in less then a week | ||||
|         #     summary: renew expiring certificates to avoid downtime | ||||
|         # - alert: NGINXTooMany500s | ||||
|         #   expr: 100 * ( sum( nginx_ingress_controller_requests{status=~"5.+"} ) / sum(nginx_ingress_controller_requests) ) > 5 | ||||
|         #   for: 1m | ||||
|         #   labels: | ||||
|         #     severity: warning | ||||
|         #   annotations: | ||||
|         #     description: Too many 5XXs | ||||
|         #     summary: More than 5% of all requests returned 5XX, this requires your attention | ||||
|         # - alert: NGINXTooMany400s | ||||
|         #   expr: 100 * ( sum( nginx_ingress_controller_requests{status=~"4.+"} ) / sum(nginx_ingress_controller_requests) ) > 5 | ||||
|         #   for: 1m | ||||
|         #   labels: | ||||
|         #     severity: warning | ||||
|         #   annotations: | ||||
|         #     description: Too many 4XXs | ||||
|         #     summary: More than 5% of all requests returned 4XX, this requires your attention | ||||
|  | ||||
|   # -- Improve connection draining when ingress controller pod is deleted using a lifecycle hook: | ||||
|   # With this new hook, we increased the default terminationGracePeriodSeconds from 30 seconds | ||||
|   # to 300, allowing the draining of connections up to five minutes. | ||||
|   # If the active connections end before that, the pod will terminate gracefully at that time. | ||||
|   # To effectively take advantage of this feature, the Configmap feature | ||||
|   # worker-shutdown-timeout new value is 240s instead of 10s. | ||||
|   ## | ||||
|   lifecycle: | ||||
|     preStop: | ||||
|       exec: | ||||
|         command: | ||||
|           - /wait-shutdown | ||||
|  | ||||
|   priorityClassName: "" | ||||
|  | ||||
| # -- Rollback limit | ||||
| ## | ||||
| revisionHistoryLimit: 10 | ||||
|  | ||||
|  | ||||
| ## Enable RBAC as per https://github.com/kubernetes/ingress-nginx/blob/main/docs/deploy/rbac.md and https://github.com/kubernetes/ingress-nginx/issues/266 | ||||
| rbac: | ||||
|   create: true | ||||
|   scope: false | ||||
|  | ||||
| ## If true, create & use Pod Security Policy resources | ||||
| ## https://kubernetes.io/docs/concepts/policy/pod-security-policy/ | ||||
| podSecurityPolicy: | ||||
|   enabled: false | ||||
|  | ||||
| serviceAccount: | ||||
|   create: true | ||||
|   name: "" | ||||
|   automountServiceAccountToken: true | ||||
|   # -- Annotations for the controller service account | ||||
|   annotations: {} | ||||
|  | ||||
| # -- Optional array of imagePullSecrets containing private registry credentials | ||||
| ## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ | ||||
| imagePullSecrets: [] | ||||
| # - name: secretName | ||||
|  | ||||
| # -- TCP service key-value pairs | ||||
| ## Ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/exposing-tcp-udp-services.md | ||||
| ## | ||||
| tcp: {} | ||||
| #  8080: "default/example-tcp-svc:9000" | ||||
|  | ||||
| # -- UDP service key-value pairs | ||||
| ## Ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/exposing-tcp-udp-services.md | ||||
| ## | ||||
| udp: {} | ||||
| #  53: "kube-system/kube-dns:53" | ||||
|  | ||||
| # -- Prefix for TCP and UDP ports names in ingress controller service | ||||
| ## Some cloud providers, like Yandex Cloud may have a requirements for a port name regex to support cloud load balancer integration | ||||
| portNamePrefix: "" | ||||
|  | ||||
| # -- (string) A base64-encoded Diffie-Hellman parameter. | ||||
| # This can be generated with: `openssl dhparam 4096 2> /dev/null | base64` | ||||
| ## Ref: https://github.com/kubernetes/ingress-nginx/tree/main/docs/examples/customization/ssl-dh-param | ||||
| dhParam: | ||||
|  | ||||
| @@ -1,34 +0,0 @@ | ||||
| --- | ||||
|   apiVersion: v1 | ||||
|   kind: PersistentVolume | ||||
|   metadata: | ||||
|     namespace: gitea | ||||
|     name: jenkins-data-nfs | ||||
|     labels: | ||||
|       directory: jenkins | ||||
|   spec: | ||||
|     storageClassName: fast | ||||
|     capacity: | ||||
|       storage: "10Gi" | ||||
|     volumeMode: Filesystem | ||||
|     accessModes: | ||||
|       - ReadWriteOnce | ||||
|     nfs: | ||||
|       path: /jenkins | ||||
|       server: 10.43.239.43 # assigned to nfs-server service. Won't change as long as service is not redeployed | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: gitea | ||||
|   name: jenkins-data-nfs | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "10Gi" | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       directory: jenkins | ||||
| @@ -1,669 +0,0 @@ | ||||
| # Default values for jenkins. | ||||
| # This is a YAML-formatted file. | ||||
| # Declare name/value pairs to be passed into your templates. | ||||
| # name: value | ||||
|  | ||||
| ## Overrides for generated resource names | ||||
| # See templates/_helpers.tpl | ||||
| # nameOverride: | ||||
| # fullnameOverride: | ||||
| # namespaceOverride: | ||||
|  | ||||
| # For FQDN resolving of the controller service. Change this value to match your existing configuration. | ||||
| # ref: https://github.com/kubernetes/dns/blob/master/docs/specification.md | ||||
| clusterZone: "cluster.local" | ||||
|  | ||||
| renderHelmLabels: true | ||||
|  | ||||
| controller: | ||||
|   # Used for label app.kubernetes.io/component | ||||
|   componentName: "jenkins-controller" | ||||
|   image: "jenkins/jenkins" | ||||
|   # tag: "2.346.1-jdk11" | ||||
|   tagLabel: jdk11 | ||||
|   imagePullPolicy: "Always" | ||||
|   imagePullSecretName: | ||||
|   # Optionally configure lifetime for controller-container | ||||
|   lifecycle: | ||||
|   #  postStart: | ||||
|   #    exec: | ||||
|   #      command: | ||||
|   #      - "uname" | ||||
|   #      - "-a" | ||||
|   disableRememberMe: false | ||||
|   numExecutors: 0 | ||||
|   # configures the executor mode of the Jenkins node. Possible values are: NORMAL or EXCLUSIVE | ||||
|   executorMode: "NORMAL" | ||||
|   # This is ignored if enableRawHtmlMarkupFormatter is true | ||||
|   markupFormatter: plainText | ||||
|   customJenkinsLabels: [] | ||||
|   # The default configuration uses this secret to configure an admin user | ||||
|   # If you don't need that user or use a different security realm then you can disable it | ||||
|   adminSecret: true | ||||
|  | ||||
|   hostNetworking: false | ||||
|   # When enabling LDAP or another non-Jenkins identity source, the built-in admin account will no longer exist. | ||||
|   # If you disable the non-Jenkins identity store and instead use the Jenkins internal one, | ||||
|   # you should revert controller.adminUser to your preferred admin user: | ||||
|   adminUser: "admin" | ||||
|   # adminPassword: <defaults to random> | ||||
|   admin: | ||||
|     existingSecret: "" | ||||
|     userKey: jenkins-admin-user | ||||
|     passwordKey: jenkins-admin-password | ||||
|   # This values should not be changed unless you use your custom image of jenkins or any devired from. If you want to use | ||||
|   # Cloudbees Jenkins Distribution docker, you should set jenkinsHome: "/var/cloudbees-jenkins-distribution" | ||||
|   jenkinsHome: "/var/jenkins_home" | ||||
|   # This values should not be changed unless you use your custom image of jenkins or any devired from. If you want to use | ||||
|   # Cloudbees Jenkins Distribution docker, you should set jenkinsRef: "/usr/share/cloudbees-jenkins-distribution/ref" | ||||
|   jenkinsRef: "/usr/share/jenkins/ref" | ||||
|   # Path to the jenkins war file which is used by jenkins-plugin-cli. | ||||
|   jenkinsWar: "/usr/share/jenkins/jenkins.war" | ||||
|   # Overrides the default arguments passed to the war | ||||
|   # overrideArgs: | ||||
|   #   - --httpPort=8080 | ||||
|   resources: | ||||
|     requests: | ||||
|       cpu: "50m" | ||||
|       memory: "256Mi" | ||||
|     limits: | ||||
|       cpu: "2000m" | ||||
|       memory: "4096Mi" | ||||
|   # Overrides the init container default values | ||||
|   # initContainerResources: | ||||
|   #   requests: | ||||
|   #     cpu: "50m" | ||||
|   #     memory: "256Mi" | ||||
|   #   limits: | ||||
|   #     cpu: "2000m" | ||||
|   #     memory: "4096Mi" | ||||
|   # Environment variables that get added to the init container (useful for e.g. http_proxy) | ||||
|   # initContainerEnv: | ||||
|   #   - name: http_proxy | ||||
|   #     value: "http://192.168.64.1:3128" | ||||
|   # containerEnv: | ||||
|   #   - name: http_proxy | ||||
|   #     value: "http://192.168.64.1:3128" | ||||
|   # Set min/max heap here if needed with: | ||||
|   # javaOpts: "-Xms512m -Xmx512m" | ||||
|   # jenkinsOpts: "" | ||||
|   # If you are using the ingress definitions provided by this chart via the `controller.ingress` block the configured hostname will be the ingress hostname starting with `https://` or `http://` depending on the `tls` configuration. | ||||
|   # The Protocol can be overwritten by specifying `controller.jenkinsUrlProtocol`. | ||||
|   # jenkinsUrlProtocol: "https" | ||||
|   # If you are not using the provided ingress you can specify `controller.jenkinsUrl` to change the url definition. | ||||
|   # jenkinsUrl: "" | ||||
|   # If you set this prefix and use ingress controller then you might want to set the ingress path below | ||||
|   # jenkinsUriPrefix: "/jenkins" | ||||
|   # Enable pod security context (must be `true` if podSecurityContextOverride, runAsUser or fsGroup are set) | ||||
|   usePodSecurityContext: true | ||||
|   # Note that `runAsUser`, `fsGroup`, and `securityContextCapabilities` are | ||||
|   # being deprecated and replaced by `podSecurityContextOverride`. | ||||
|   # Set runAsUser to 1000 to let Jenkins run as non-root user 'jenkins' which exists in 'jenkins/jenkins' docker image. | ||||
|   # When setting runAsUser to a different value than 0 also set fsGroup to the same value: | ||||
|   runAsUser: 1000 | ||||
|   fsGroup: 1000 | ||||
|   # If you have PodSecurityPolicies that require dropping of capabilities as suggested by CIS K8s benchmark, put them here | ||||
|   securityContextCapabilities: {} | ||||
|   #  drop: | ||||
|   #    - NET_RAW | ||||
|   # Completely overwrites the contents of the `securityContext`, ignoring the | ||||
|   # values provided for the deprecated fields: `runAsUser`, `fsGroup`, and | ||||
|   # `securityContextCapabilities`.  In the case of mounting an ext4 filesystem, | ||||
|   # it might be desirable to use `supplementalGroups` instead of `fsGroup` in | ||||
|   # the `securityContext` block: https://github.com/kubernetes/kubernetes/issues/67014#issuecomment-589915496 | ||||
|   # podSecurityContextOverride: | ||||
|   #   runAsUser: 1000 | ||||
|   #   runAsNonRoot: true | ||||
|   #   supplementalGroups: [1000] | ||||
|   #   # capabilities: {} | ||||
|   # Container securityContext | ||||
|   containerSecurityContext: | ||||
|     runAsUser: 1000 | ||||
|     runAsGroup: 1000 | ||||
|     readOnlyRootFilesystem: true | ||||
|     allowPrivilegeEscalation: false | ||||
|   servicePort: 8080 | ||||
|   targetPort: 8080 | ||||
|   # For minikube, set this to NodePort, elsewhere use LoadBalancer | ||||
|   # Use ClusterIP if your setup includes ingress controller | ||||
|   serviceType: ClusterIP | ||||
|   # Use Local to preserve the client source IP and avoids a second hop for LoadBalancer and Nodeport type services, | ||||
|   # but risks potentially imbalanced traffic spreading. | ||||
|   serviceExternalTrafficPolicy: | ||||
|   # Jenkins controller service annotations | ||||
|   serviceAnnotations: {} | ||||
|   # Jenkins controller custom labels | ||||
|   statefulSetLabels: {} | ||||
|   #   foo: bar | ||||
|   #   bar: foo | ||||
|   # Jenkins controller service labels | ||||
|   serviceLabels: {} | ||||
|   #   service.beta.kubernetes.io/aws-load-balancer-backend-protocol: https | ||||
|   # Put labels on Jenkins controller pod | ||||
|   podLabels: {} | ||||
|   # Used to create Ingress record (should used with ServiceType: ClusterIP) | ||||
|   # nodePort: <to set explicitly, choose port between 30000-32767 | ||||
|   # Enable Kubernetes Startup, Liveness and Readiness Probes | ||||
|   # if Startup Probe is supported, enable it too | ||||
|   # ~ 2 minutes to allow Jenkins to restart when upgrading plugins. Set ReadinessTimeout to be shorter than LivenessTimeout. | ||||
|   healthProbes: true | ||||
|   probes: | ||||
|     startupProbe: | ||||
|       httpGet: | ||||
|         path: '{{ default "" .Values.controller.jenkinsUriPrefix }}/login' | ||||
|         port: http | ||||
|       periodSeconds: 10 | ||||
|       timeoutSeconds: 5 | ||||
|       failureThreshold: 12 | ||||
|     livenessProbe: | ||||
|       failureThreshold: 5 | ||||
|       httpGet: | ||||
|         path: '{{ default "" .Values.controller.jenkinsUriPrefix }}/login' | ||||
|         port: http | ||||
|       periodSeconds: 10 | ||||
|       timeoutSeconds: 5 | ||||
|       # If Startup Probe is not supported on your Kubernetes cluster, you might want to use "initialDelaySeconds" instead. | ||||
|       # It delays the initial liveness probe while Jenkins is starting | ||||
|       # initialDelaySeconds: 60 | ||||
|     readinessProbe: | ||||
|       failureThreshold: 3 | ||||
|       httpGet: | ||||
|         path: '{{ default "" .Values.controller.jenkinsUriPrefix }}/login' | ||||
|         port: http | ||||
|       periodSeconds: 10 | ||||
|       timeoutSeconds: 5 | ||||
|       # If Startup Probe is not supported on your Kubernetes cluster, you might want to use "initialDelaySeconds" instead. | ||||
|       # It delays the initial readyness probe while Jenkins is starting | ||||
|       # initialDelaySeconds: 60 | ||||
|  | ||||
|   # PodDisruptionBudget config | ||||
|   podDisruptionBudget: | ||||
|     enabled: false | ||||
|     # For Kubernetes v1.5+, use 'policy/v1beta1' | ||||
|     # For Kubernetes v1.21+, use 'policy/v1' | ||||
|     apiVersion: "policy/v1beta1" | ||||
|     annotations: {} | ||||
|     labels: {} | ||||
|     # maxUnavailable: "0" | ||||
|  | ||||
|   agentListenerEnabled: true | ||||
|   agentListenerPort: 50000 | ||||
|   agentListenerHostPort: | ||||
|   agentListenerNodePort: | ||||
|   agentListenerExternalTrafficPolicy: | ||||
|   agentListenerLoadBalancerSourceRanges: | ||||
|   - 0.0.0.0/0 | ||||
|   disabledAgentProtocols: | ||||
|     - JNLP-connect | ||||
|     - JNLP2-connect | ||||
|   csrf: | ||||
|     defaultCrumbIssuer: | ||||
|       enabled: true | ||||
|       proxyCompatability: true | ||||
|   # Kubernetes service type for the JNLP agent service | ||||
|   # agentListenerServiceType is the Kubernetes Service type for the JNLP agent service, | ||||
|   # either 'LoadBalancer', 'NodePort', or 'ClusterIP' | ||||
|   # Note if you set this to 'LoadBalancer', you *must* define annotations to secure it. By default | ||||
|   # this will be an external load balancer and allowing inbound 0.0.0.0/0, a HUGE | ||||
|   # security risk:  https://github.com/kubernetes/charts/issues/1341 | ||||
|   agentListenerServiceType: "ClusterIP" | ||||
|   # Optionally assign an IP to the LoadBalancer agentListenerService LoadBalancer | ||||
|   # GKE users: only regional static IPs will work for Service Load balancer. | ||||
|   agentListenerLoadBalancerIP: | ||||
|   agentListenerServiceAnnotations: {} | ||||
|  | ||||
|   # Example of 'LoadBalancer' type of agent listener with annotations securing it | ||||
|   # agentListenerServiceType: LoadBalancer | ||||
|   # agentListenerServiceAnnotations: | ||||
|   #   service.beta.kubernetes.io/aws-load-balancer-internal: "True" | ||||
|   #   service.beta.kubernetes.io/load-balancer-source-ranges: "172.0.0.0/8, 10.0.0.0/8" | ||||
|  | ||||
|   # LoadBalancerSourcesRange is a list of allowed CIDR values, which are combined with ServicePort to | ||||
|   # set allowed inbound rules on the security group assigned to the controller load balancer | ||||
|   loadBalancerSourceRanges: | ||||
|   - 0.0.0.0/0 | ||||
|   # Optionally assign a known public LB IP | ||||
|   # loadBalancerIP: 1.2.3.4 | ||||
|   # Optionally configure a JMX port | ||||
|   # requires additional javaOpts, ie | ||||
|   # javaOpts: > | ||||
|   #   -Dcom.sun.management.jmxremote.port=4000 | ||||
|   #   -Dcom.sun.management.jmxremote.authenticate=false | ||||
|   #   -Dcom.sun.management.jmxremote.ssl=false | ||||
|   # jmxPort: 4000 | ||||
|   # Optionally configure other ports to expose in the controller container | ||||
|   extraPorts: [] | ||||
|   # - name: BuildInfoProxy | ||||
|   #   port: 9000 | ||||
|  | ||||
|   # List of plugins to be install during Jenkins controller start | ||||
|   installPlugins: | ||||
|     - kubernetes:3600.v144b_cd192ca_a_ | ||||
|     - workflow-aggregator:581.v0c46fa_697ffd | ||||
|     - git:4.11.3 | ||||
|     - gitea:1.4.3 | ||||
|     - configuration-as-code:1429.v09b_044a_c93de | ||||
|  | ||||
|   # Set to false to download the minimum required version of all dependencies. | ||||
|   installLatestPlugins: true | ||||
|  | ||||
|   # Set to true to download latest dependencies of any plugin that is requested to have the latest version. | ||||
|   installLatestSpecifiedPlugins: false | ||||
|  | ||||
|   # List of plugins to install in addition to those listed in controller.installPlugins | ||||
|   additionalPlugins: [] | ||||
|  | ||||
|   # Enable to initialize the Jenkins controller only once on initial installation. | ||||
|   # Without this, whenever the controller gets restarted (Evicted, etc.) it will fetch plugin updates which has the potential to cause breakage. | ||||
|   # Note that for this to work, `persistence.enabled` needs to be set to `true` | ||||
|   initializeOnce: false | ||||
|  | ||||
|   # Enable to always override the installed plugins with the values of 'controller.installPlugins' on upgrade or redeployment. | ||||
|   # overwritePlugins: true | ||||
|  | ||||
|   # Configures if plugins bundled with `controller.image` should be overwritten with the values of 'controller.installPlugins' on upgrade or redeployment. | ||||
|   overwritePluginsFromImage: true | ||||
|  | ||||
|   # Enable HTML parsing using OWASP Markup Formatter Plugin (antisamy-markup-formatter), useful with ghprb plugin. | ||||
|   # The plugin is not installed by default, please update controller.installPlugins. | ||||
|   enableRawHtmlMarkupFormatter: false | ||||
|   # Used to approve a list of groovy functions in pipelines used the script-security plugin. Can be viewed under /scriptApproval | ||||
|   scriptApproval: [] | ||||
|   #  - "method groovy.json.JsonSlurperClassic parseText java.lang.String" | ||||
|   #  - "new groovy.json.JsonSlurperClassic" | ||||
|   # List of groovy init scripts to be executed during Jenkins controller start | ||||
|   initScripts: [] | ||||
|   #  - | | ||||
|   #    print 'adding global pipeline libraries, register properties, bootstrap jobs...' | ||||
|  | ||||
|   # 'name' is a name of an existing secret in same namespace as jenkins, | ||||
|   # 'keyName' is the name of one of the keys inside current secret. | ||||
|   # the 'name' and 'keyName' are concatenated with a '-' in between, so for example: | ||||
|   # an existing secret "secret-credentials" and a key inside it named "github-password" should be used in Jcasc as ${secret-credentials-github-password} | ||||
|   # 'name' and 'keyName' must be lowercase RFC 1123 label must consist of lower case alphanumeric characters or '-', | ||||
|   # and must start and end with an alphanumeric character (e.g. 'my-name',  or '123-abc') | ||||
|   additionalExistingSecrets: [] | ||||
|   #  - name: secret-name-1 | ||||
|   #    keyName: username | ||||
|   #  - name: secret-name-1 | ||||
|   #    keyName: password | ||||
|  | ||||
|   additionalSecrets: [] | ||||
|   #  - name: nameOfSecret | ||||
|   #    value: secretText | ||||
|  | ||||
|   # Generate SecretClaim resources in order to create Kubernetes secrets from HashiCorp Vault using kube-vault-controller. | ||||
|   # 'name' is name of the secret that will be created in Kubernetes. The Jenkins fullname is prepended to this value. | ||||
|   # 'path' is the fully qualified path to the secret in Vault | ||||
|   # 'type' is an optional Kubernetes secret type. Defaults to 'Opaque' | ||||
|   # 'renew' is an optional secret renewal time in seconds | ||||
|   secretClaims: [] | ||||
|   # - name: secretName        # required | ||||
|   #   path: testPath          # required | ||||
|   #   type: kubernetes.io/tls # optional | ||||
|   #   renew: 60               # optional | ||||
|  | ||||
|   # Name of default cloud configuration. | ||||
|   cloudName: "kubernetes" | ||||
|  | ||||
|   # Below is the implementation of Jenkins Configuration as Code.  Add a key under configScripts for each configuration area, | ||||
|   # where each corresponds to a plugin or section of the UI.  Each key (prior to | character) is just a label, and can be any value. | ||||
|   # Keys are only used to give the section a meaningful name.  The only restriction is they may only contain RFC 1123 \ DNS label | ||||
|   # characters: lowercase letters, numbers, and hyphens.  The keys become the name of a configuration yaml file on the controller in | ||||
|   # /var/jenkins_home/casc_configs (by default) and will be processed by the Configuration as Code Plugin.  The lines after each | | ||||
|   # become the content of the configuration yaml file.  The first line after this is a JCasC root element, eg jenkins, credentials, | ||||
|   # etc.  Best reference is https://<jenkins_url>/configuration-as-code/reference.  The example below creates a welcome message: | ||||
|   JCasC: | ||||
|     defaultConfig: true | ||||
|     configScripts: {} | ||||
|     #  welcome-message: | | ||||
|     #    jenkins: | ||||
|     #      systemMessage: Welcome to our CI\CD server.  This Jenkins is configured and managed 'as code'. | ||||
|     # Ignored if securityRealm is defined in controller.JCasC.configScripts and | ||||
|     securityRealm: |- | ||||
|       local: | ||||
|         allowsSignup: false | ||||
|         enableCaptcha: false | ||||
|         users: | ||||
|         - id: "${chart-admin-username}" | ||||
|           name: "Jenkins Admin" | ||||
|           password: "${chart-admin-password}" | ||||
|     # Ignored if authorizationStrategy is defined in controller.JCasC.configScripts | ||||
|     authorizationStrategy: |- | ||||
|       loggedInUsersCanDoAnything: | ||||
|         allowAnonymousRead: false | ||||
|   # Optionally specify additional init-containers | ||||
|   customInitContainers: [] | ||||
|   # - name: custom-init | ||||
|   #   image: "alpine:3.7" | ||||
|   #   imagePullPolicy: Always | ||||
|   #   command: [ "uname", "-a" ] | ||||
|  | ||||
|   sidecars: | ||||
|     configAutoReload: | ||||
|       # If enabled: true, Jenkins Configuration as Code will be reloaded on-the-fly without a reboot.  If false or not-specified, | ||||
|       # jcasc changes will cause a reboot and will only be applied at the subsequent start-up.  Auto-reload uses the | ||||
|       # http://<jenkins_url>/reload-configuration-as-code endpoint to reapply config when changes to the configScripts are detected. | ||||
|       enabled: true | ||||
|       image: kiwigrid/k8s-sidecar:1.15.0 | ||||
|       imagePullPolicy: IfNotPresent | ||||
|       resources: {} | ||||
|         #   limits: | ||||
|         #     cpu: 100m | ||||
|         #     memory: 100Mi | ||||
|         #   requests: | ||||
|         #     cpu: 50m | ||||
|         #     memory: 50Mi | ||||
|       # How many connection-related errors to retry on | ||||
|       reqRetryConnect: 10 | ||||
|       # env: | ||||
|       #   - name: REQ_TIMEOUT | ||||
|       #     value: "30" | ||||
|       # SSH port value can be set to any unused TCP port.  The default, 1044, is a non-standard SSH port that has been chosen at random. | ||||
|       # Is only used to reload jcasc config from the sidecar container running in the Jenkins controller pod. | ||||
|       # This TCP port will not be open in the pod (unless you specifically configure this), so Jenkins will not be | ||||
|       # accessible via SSH from outside of the pod.  Note if you use non-root pod privileges (runAsUser & fsGroup), | ||||
|       # this must be > 1024: | ||||
|       sshTcpPort: 1044 | ||||
|       # folder in the pod that should hold the collected dashboards: | ||||
|       folder: "/var/jenkins_home/casc_configs" | ||||
|       # If specified, the sidecar will search for JCasC config-maps inside this namespace. | ||||
|       # Otherwise the namespace in which the sidecar is running will be used. | ||||
|       # It's also possible to specify ALL to search in all namespaces: | ||||
|       # searchNamespace: | ||||
|       containerSecurityContext: | ||||
|         readOnlyRootFilesystem: true | ||||
|         allowPrivilegeEscalation: false | ||||
|  | ||||
|     # Allows you to inject additional/other sidecars | ||||
|     other: [] | ||||
|     ## The example below runs the client for https://smee.io as sidecar container next to Jenkins, | ||||
|     ## that allows to trigger build behind a secure firewall. | ||||
|     ## https://jenkins.io/blog/2019/01/07/webhook-firewalls/#triggering-builds-with-webhooks-behind-a-secure-firewall | ||||
|     ## | ||||
|     ## Note: To use it you should go to https://smee.io/new and update the url to the generete one. | ||||
|     # - name: smee | ||||
|     #   image: docker.io/twalter/smee-client:1.0.2 | ||||
|     #   args: ["--port", "{{ .Values.controller.servicePort }}", "--path", "/github-webhook/", "--url", "https://smee.io/new"] | ||||
|     #   resources: | ||||
|     #     limits: | ||||
|     #       cpu: 50m | ||||
|     #       memory: 128Mi | ||||
|     #     requests: | ||||
|     #       cpu: 10m | ||||
|     #       memory: 32Mi | ||||
|   # Name of the Kubernetes scheduler to use | ||||
|   schedulerName: "" | ||||
|   # Node labels and tolerations for pod assignment | ||||
|   # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector | ||||
|   # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#taints-and-tolerations-beta-feature | ||||
|   nodeSelector: {} | ||||
|  | ||||
|   terminationGracePeriodSeconds: | ||||
|  | ||||
|   terminationMessagePath: | ||||
|   terminationMessagePolicy: | ||||
|  | ||||
|   tolerations: [] | ||||
|  | ||||
|   affinity: {} | ||||
|   # Leverage a priorityClass to ensure your pods survive resource shortages | ||||
|   # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/ | ||||
|   priorityClassName: | ||||
|  | ||||
|   podAnnotations: {} | ||||
|   # Add StatefulSet annotations | ||||
|   statefulSetAnnotations: {} | ||||
|  | ||||
|   # StatefulSet updateStrategy | ||||
|   # ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies | ||||
|   updateStrategy: {} | ||||
|  | ||||
|   ingress: | ||||
|     enabled: true | ||||
|     # Override for the default paths that map requests to the backend | ||||
|     paths: [] | ||||
|       # - backend: | ||||
|       #     serviceName: >- | ||||
|       #       {{ template "jenkins.fullname" . }} | ||||
|       #     # Don't use string here, use only integer value! | ||||
|       #     servicePort: 8080 | ||||
|     # For Kubernetes v1.19+, use 'networking.k8s.io/v1' | ||||
|     apiVersion: "networking.k8s.io/v1" | ||||
|     labels: {} | ||||
|     annotations: | ||||
|       kubernetes.io/ingress.class: nginx | ||||
|       cert-manager.io/cluster-issuer: cloudflare-letsencrypt-prod | ||||
|  | ||||
|     hostName: jenkins.kluster.moll.re | ||||
|     tls:  | ||||
|     - secretName: cloudflare-letsencrypt-issuer-account-key | ||||
|       hosts: | ||||
|         - jenkins.kluster.moll.re | ||||
|  | ||||
|   # often you want to have your controller all locked down and private | ||||
|   # but you still want to get webhooks from your SCM | ||||
|   # A secondary ingress will let you expose different urls | ||||
|   # with a differnt configuration | ||||
|   secondaryingress: | ||||
|     enabled: false | ||||
|     # paths you want forwarded to the backend | ||||
|     # ex /github-webhook | ||||
|     paths: [] | ||||
|     # For Kubernetes v1.14+, use 'networking.k8s.io/v1beta1' | ||||
|     # For Kubernetes v1.19+, use 'networking.k8s.io/v1' | ||||
|     apiVersion: "extensions/v1beta1" | ||||
|     labels: {} | ||||
|     annotations: {} | ||||
|     # kubernetes.io/ingress.class: nginx | ||||
|     # kubernetes.io/tls-acme: "true" | ||||
|     # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName | ||||
|     # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress | ||||
|     # ingressClassName: nginx | ||||
|     # configures the hostname e.g. jenkins-external.example.com | ||||
|     hostName: | ||||
|     tls: | ||||
|     # - secretName: jenkins-external.example.com | ||||
|     #   hosts: | ||||
|     #     - jenkins-external.example.com | ||||
|  | ||||
|  | ||||
| agent: | ||||
|   enabled: true | ||||
|   defaultsProviderTemplate: "" | ||||
|   # URL for connecting to the Jenkins contoller | ||||
|   jenkinsUrl: | ||||
|   # connect to the specified host and port, instead of connecting directly to the Jenkins controller | ||||
|   jenkinsTunnel: | ||||
|   kubernetesConnectTimeout: 5 | ||||
|   kubernetesReadTimeout: 15 | ||||
|   maxRequestsPerHostStr: "32" | ||||
|   namespace: | ||||
|   image: "jenkins/inbound-agent" | ||||
|   tag: "4.11.2-4" | ||||
|   workingDir: "/home/jenkins/agent" | ||||
|   nodeUsageMode: "NORMAL" | ||||
|   customJenkinsLabels: [] | ||||
|   # name of the secret to be used for image pulling | ||||
|   imagePullSecretName: | ||||
|   componentName: "jenkins-agent" | ||||
|   websocket: false | ||||
|   privileged: false | ||||
|   runAsUser: | ||||
|   runAsGroup: | ||||
|   resources: | ||||
|     requests: | ||||
|       cpu: "512m" | ||||
|       memory: "512Mi" | ||||
|     limits: | ||||
|       cpu: "512m" | ||||
|       memory: "512Mi" | ||||
|   # You may want to change this to true while testing a new image | ||||
|   alwaysPullImage: false | ||||
|   # Controls how agent pods are retained after the Jenkins build completes | ||||
|   # Possible values: Always, Never, OnFailure | ||||
|   podRetention: "Never" | ||||
|   # Disable if you do not want the Yaml the agent pod template to show up | ||||
|   # in the job Console Output. This can be helpful for either security reasons | ||||
|   # or simply to clean up the output to make it easier to read. | ||||
|   showRawYaml: true | ||||
|   # You can define the volumes that you want to mount for this container | ||||
|   # Allowed types are: ConfigMap, EmptyDir, HostPath, Nfs, PVC, Secret | ||||
|   # Configure the attributes as they appear in the corresponding Java class for that type | ||||
|   # https://github.com/jenkinsci/kubernetes-plugin/tree/master/src/main/java/org/csanchez/jenkins/plugins/kubernetes/volumes | ||||
|   volumes: [] | ||||
|   # - type: ConfigMap | ||||
|   #   configMapName: myconfigmap | ||||
|   #   mountPath: /var/myapp/myconfigmap | ||||
|   # - type: EmptyDir | ||||
|   #   mountPath: /var/myapp/myemptydir | ||||
|   #   memory: false | ||||
|   # - type: HostPath | ||||
|   #   hostPath: /var/lib/containers | ||||
|   #   mountPath: /var/myapp/myhostpath | ||||
|   # - type: Nfs | ||||
|   #   mountPath: /var/myapp/mynfs | ||||
|   #   readOnly: false | ||||
|   #   serverAddress: "192.0.2.0" | ||||
|   #   serverPath: /var/lib/containers | ||||
|   # - type: PVC | ||||
|   #   claimName: mypvc | ||||
|   #   mountPath: /var/myapp/mypvc | ||||
|   #   readOnly: false | ||||
|   # - type: Secret | ||||
|   #   defaultMode: "600" | ||||
|   #   mountPath: /var/myapp/mysecret | ||||
|   #   secretName: mysecret | ||||
|   # Pod-wide environment, these vars are visible to any container in the agent pod | ||||
|  | ||||
|   # You can define the workspaceVolume that you want to mount for this container | ||||
|   # Allowed types are: DynamicPVC, EmptyDir, HostPath, Nfs, PVC | ||||
|   # Configure the attributes as they appear in the corresponding Java class for that type | ||||
|   # https://github.com/jenkinsci/kubernetes-plugin/tree/master/src/main/java/org/csanchez/jenkins/plugins/kubernetes/volumes/workspace | ||||
|   workspaceVolume: {} | ||||
|   ## DynamicPVC example | ||||
|   # type: DynamicPVC | ||||
|   # configMapName: myconfigmap | ||||
|   ## EmptyDir example | ||||
|   # type: EmptyDir | ||||
|   # memory: false | ||||
|   ## HostPath example | ||||
|   # type: HostPath | ||||
|   # hostPath: /var/lib/containers | ||||
|   ## NFS example | ||||
|   # type: Nfs | ||||
|   # readOnly: false | ||||
|   # serverAddress: "192.0.2.0" | ||||
|   # serverPath: /var/lib/containers | ||||
|   ## PVC example | ||||
|   # type: PVC | ||||
|   # claimName: mypvc | ||||
|   # readOnly: false | ||||
|   # | ||||
|   # Pod-wide environment, these vars are visible to any container in the agent pod | ||||
|   envVars: [] | ||||
|   # - name: PATH | ||||
|   #   value: /usr/local/bin | ||||
|   nodeSelector: {} | ||||
|   # Key Value selectors. Ex: | ||||
|   # jenkins-agent: v1 | ||||
|  | ||||
|   # Executed command when side container gets started | ||||
|   command: | ||||
|   args: "${computer.jnlpmac} ${computer.name}" | ||||
|   # Side container name | ||||
|   sideContainerName: "jnlp" | ||||
|   # Doesn't allocate pseudo TTY by default | ||||
|   TTYEnabled: false | ||||
|   # Max number of spawned agent | ||||
|   containerCap: 10 | ||||
|   # Pod name | ||||
|   podName: "default" | ||||
|   # Allows the Pod to remain active for reuse until the configured number of | ||||
|   # minutes has passed since the last step was executed on it. | ||||
|   idleMinutes: 0 | ||||
|   # Raw yaml template for the Pod. For example this allows usage of toleration for agent pods. | ||||
|   # https://github.com/jenkinsci/kubernetes-plugin#using-yaml-to-define-pod-templates | ||||
|   # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ | ||||
|   yamlTemplate: "" | ||||
|   # yamlTemplate: |- | ||||
|   #   apiVersion: v1 | ||||
|   #   kind: Pod | ||||
|   #   spec: | ||||
|   #     tolerations: | ||||
|   #     - key: "key" | ||||
|   #       operator: "Equal" | ||||
|   #       value: "value" | ||||
|   # Defines how the raw yaml field gets merged with yaml definitions from inherited pod templates: merge or override | ||||
|   yamlMergeStrategy: "override" | ||||
|   # Timeout in seconds for an agent to be online | ||||
|   connectTimeout: 100 | ||||
|   # Annotations to apply to the pod. | ||||
|   annotations: {} | ||||
|  | ||||
|   # Disable the default Jenkins Agent configuration. | ||||
|   # Useful when configuring agents only with the podTemplates value, since the default podTemplate populated by values mentioned above will be excluded in the rendered template. | ||||
|   disableDefaultAgent: false | ||||
|  | ||||
|   # Below is the implementation of custom pod templates for the default configured kubernetes cloud. | ||||
|   # Add a key under podTemplates for each pod template. Each key (prior to | character) is just a label, and can be any value. | ||||
|   # Keys are only used to give the pod template a meaningful name.  The only restriction is they may only contain RFC 1123 \ DNS label | ||||
|   # characters: lowercase letters, numbers, and hyphens. Each pod template can contain multiple containers. | ||||
|   # For this pod templates configuration to be loaded the following values must be set: | ||||
|   # controller.JCasC.defaultConfig: true | ||||
|   # Best reference is https://<jenkins_url>/configuration-as-code/reference#Cloud-kubernetes. The example below creates a python pod template. | ||||
|   podTemplates: {} | ||||
|   #  python: | | ||||
|   #    - name: python | ||||
|   #      label: jenkins-python | ||||
|   #      serviceAccount: jenkins | ||||
|   #      containers: | ||||
|   #        - name: python | ||||
|   #          image: python:3 | ||||
|   #          command: "/bin/sh -c" | ||||
|   #          args: "cat" | ||||
|   #          ttyEnabled: true | ||||
|   #          privileged: true | ||||
|   #          resourceRequestCpu: "400m" | ||||
|   #          resourceRequestMemory: "512Mi" | ||||
|   #          resourceLimitCpu: "1" | ||||
|   #          resourceLimitMemory: "1024Mi" | ||||
|  | ||||
| # Here you can add additional agents | ||||
| # They inherit all values from `agent` so you only need to specify values which differ | ||||
| additionalAgents: {} | ||||
| #  maven: | ||||
| #    podName: maven | ||||
| #    customJenkinsLabels: maven | ||||
| #    # An example of overriding the jnlp container | ||||
| #    # sideContainerName: jnlp | ||||
| #    image: jenkins/jnlp-agent-maven | ||||
| #    tag: latest | ||||
| #  python: | ||||
| #    podName: python | ||||
| #    customJenkinsLabels: python | ||||
| #    sideContainerName: python | ||||
| #    image: python | ||||
| #    tag: "3" | ||||
| #    command: "/bin/sh -c" | ||||
| #    args: "cat" | ||||
| #    TTYEnabled: true | ||||
|  | ||||
| persistence: | ||||
|   enabled: true | ||||
|   ## A manually managed Persistent Volume and Claim | ||||
|   ## Requires persistence.enabled: true | ||||
|   ## If defined, PVC must be created manually before volume will be bound | ||||
|   existingClaim: jenkins-data-nfs | ||||
|  | ||||
| ## Install Default RBAC roles and bindings | ||||
| rbac: | ||||
|   create: true | ||||
|   readSecrets: false | ||||
|  | ||||
| serviceAccount: | ||||
|   create: true | ||||
|   # The name of the service account is autogenerated by default | ||||
|   name: | ||||
|   annotations: {} | ||||
|   imagePullSecretName: | ||||
| @@ -1,34 +0,0 @@ | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: mathieu | ||||
|   name: mathieu-nfs | ||||
|   labels: | ||||
|     directory: mathieu | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   capacity: | ||||
|     storage: "10Gi" | ||||
|   volumeMode: Filesystem | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   nfs: | ||||
|     path: /mathieu | ||||
|     server: 10.43.239.43 # assigned to nfs-server service. Won't change as long as service is not redeployed | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: mathieu | ||||
|   name: mathieu-nfs | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "10Gi" | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       directory: mathieu | ||||
| @@ -1,72 +0,0 @@ | ||||
| # | ||||
| # IMPORTANT NOTE | ||||
| # | ||||
| # This chart inherits from our common library chart. You can check the default values/options here: | ||||
| # https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml | ||||
| # | ||||
|  | ||||
| image: | ||||
|   # -- image repository | ||||
|   repository: ghost | ||||
|   # -- image tag | ||||
|   # @default -- chart.appVersion | ||||
|   tag: | ||||
|   # -- image pull policy | ||||
|   pullPolicy: IfNotPresent | ||||
|  | ||||
| # See https://ghost.org/docs/config/#running-ghost-with-config-env-variables | ||||
| env: | ||||
|   url: "https://cinema.kluster.moll.re" | ||||
|   database__client: sqlite3 | ||||
|   database__connection__filename: "content/data/ghost-data.db" | ||||
|   database__useNullAsDefault: true, | ||||
|   database__debug: false | ||||
|   NODE_ENV: production | ||||
|  | ||||
| # -- Configures service settings for the chart. | ||||
| # @default -- See values.yaml | ||||
| service: | ||||
|   main: | ||||
|     ports: | ||||
|       http: | ||||
|         port: 2368 | ||||
|  | ||||
|  | ||||
|  | ||||
| ingress: | ||||
|   # -- Enable and configure ingress settings for the chart under this key. | ||||
|   # @default -- See values.yaml | ||||
|   main: | ||||
|     enabled: true | ||||
|     annotations: | ||||
|       kubernetes.io/ingress.class: nginx | ||||
|       cert-manager.io/cluster-issuer: cloudflare-letsencrypt-prod | ||||
|     hosts: | ||||
|     - host: cinema.kluster.moll.re | ||||
|       paths: | ||||
|         - path: / | ||||
|           pathType: Prefix | ||||
|     tls: | ||||
|     - hosts: | ||||
|       - cinema.kluster.moll.re | ||||
|       secretName: cloudflare-letsencrypt-issuer-account-key | ||||
|  | ||||
| # -- Configure persistence settings for the chart under this key. | ||||
| # @default -- See values.yaml | ||||
| persistence: | ||||
|   content: | ||||
|     enabled: true | ||||
|     existingClaim: mathieu-nfs | ||||
|  | ||||
| mariadb: | ||||
|   enabled: false | ||||
|   architecture: standalone | ||||
|   auth: | ||||
|     database: ghost | ||||
|     username: ghost | ||||
|     password: ghost | ||||
|     rootPassword: ghost-rootpass | ||||
|   primary: | ||||
|     persistance: | ||||
|       enabled: false | ||||
|  | ||||
| @@ -1,52 +0,0 @@ | ||||
| apiVersion: v1 | ||||
| kind: Namespace | ||||
| metadata: | ||||
|   name: minecraft | ||||
|   labels: | ||||
|     app: minecraft | ||||
|  | ||||
| --- | ||||
| apiVersion: apps/v1 | ||||
| kind: Deployment | ||||
| metadata: | ||||
|   name: forwarding | ||||
|   namespace: minecraft | ||||
|   labels: | ||||
|     app: forwarding | ||||
| spec: | ||||
|   replicas: 1 | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       app: forwarding | ||||
|   template: | ||||
|     metadata: | ||||
|       labels: | ||||
|         app: forwarding | ||||
|     spec: | ||||
|       containers: | ||||
|       - name: forwarding | ||||
|         image: simonrupf/socat | ||||
|         tty: true | ||||
|         ports: | ||||
|           - containerPort: 25565 | ||||
|         args: ["TCP4-LISTEN:25565,fork", "TCP6:mc.game.moll.re:25565"] | ||||
|       hostNetwork: true | ||||
|       nodeSelector: | ||||
|         hdd: enabled | ||||
|         # ensures we are running on 192.168.1.122, ie pi node 0 | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: Service | ||||
| metadata: | ||||
|   name: forwarding | ||||
|   namespace: minecraft | ||||
|  | ||||
| spec: | ||||
|   type: NodePort | ||||
|   ipFamilyPolicy: PreferDualStack | ||||
|   ports: | ||||
|     - name: mc | ||||
|       port: 25565 | ||||
|   selector: | ||||
|     app: forwarding | ||||
|  | ||||
| @@ -1,351 +0,0 @@ | ||||
| controller: | ||||
|   ## The name of the Ingress Controller daemonset or deployment. | ||||
|   ## Autogenerated if not set or set to "". | ||||
|   # name: nginx-ingress | ||||
|  | ||||
|   ## The kind of the Ingress Controller installation - deployment or daemonset. | ||||
|   kind: deployment | ||||
|  | ||||
|   ## Deploys the Ingress Controller for NGINX Plus. | ||||
|   nginxplus: false | ||||
|  | ||||
|   # Timeout in milliseconds which the Ingress Controller will wait for a successful NGINX reload after a change or at the initial start. | ||||
|   nginxReloadTimeout: 60000 | ||||
|  | ||||
|   ## Support for App Protect | ||||
|   appprotect: | ||||
|     ## Enable the App Protect module in the Ingress Controller. | ||||
|     enable: false | ||||
|     ## Sets log level for App Protect. Allowed values: fatal, error, warn, info, debug, trace | ||||
|     # logLevel: fatal | ||||
|  | ||||
|   ## Support for App Protect Dos | ||||
|   appprotectdos: | ||||
|     ## Enable the App Protect Dos module in the Ingress Controller. | ||||
|     enable: false | ||||
|     ## Enable debugging for App Protect Dos. | ||||
|     debug: false | ||||
|     ## Max number of nginx processes to support. | ||||
|     maxWorkers: 0 | ||||
|     ## Max number of ADMD instances. | ||||
|     maxDaemons: 0 | ||||
|     ## RAM memory size to consume in MB. | ||||
|     memory: 0 | ||||
|  | ||||
|   ## Enables the Ingress Controller pods to use the host's network namespace. | ||||
|   hostNetwork: false | ||||
|  | ||||
|   ## Enables debugging for NGINX. Uses the nginx-debug binary. Requires error-log-level: debug in the ConfigMap via `controller.config.entries`. | ||||
|   nginxDebug: false | ||||
|  | ||||
|   ## The log level of the Ingress Controller. | ||||
|   logLevel: 1 | ||||
|  | ||||
|   ## A list of custom ports to expose on the NGINX ingress controller pod. Follows the conventional Kubernetes yaml syntax for container ports. | ||||
|   customPorts: [] | ||||
|  | ||||
|   image: | ||||
|     ## The image repository of the Ingress Controller. | ||||
|     repository: nginx/nginx-ingress | ||||
|  | ||||
|     ## The tag of the Ingress Controller image. | ||||
|     tag: "2.2.0" | ||||
|  | ||||
|     ## The pull policy for the Ingress Controller image. | ||||
|     pullPolicy: IfNotPresent | ||||
|  | ||||
|   config: | ||||
|     ## The name of the ConfigMap used by the Ingress Controller. | ||||
|     ## Autogenerated if not set or set to "". | ||||
|     # name: nginx-config | ||||
|  | ||||
|     ## The annotations of the Ingress Controller configmap. | ||||
|     annotations: {} | ||||
|  | ||||
|     ## The entries of the ConfigMap for customizing NGINX configuration. | ||||
|     entries: {} | ||||
|  | ||||
|   ## It is recommended to use your own TLS certificates and keys | ||||
|   defaultTLS: | ||||
|     ## The base64-encoded TLS certificate for the default HTTPS server. If not specified, a pre-generated self-signed certificate is used. | ||||
|     ## Note: It is recommended that you specify your own certificate. | ||||
|     cert: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN2akNDQWFZQ0NRREFPRjl0THNhWFhEQU5CZ2txaGtpRzl3MEJBUXNGQURBaE1SOHdIUVlEVlFRRERCWk8KUjBsT1dFbHVaM0psYzNORGIyNTBjbTlzYkdWeU1CNFhEVEU0TURreE1qRTRNRE16TlZvWERUSXpNRGt4TVRFNApNRE16TlZvd0lURWZNQjBHQTFVRUF3d1dUa2RKVGxoSmJtZHlaWE56UTI5dWRISnZiR3hsY2pDQ0FTSXdEUVlKCktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUwvN2hIUEtFWGRMdjNyaUM3QlBrMTNpWkt5eTlyQ08KR2xZUXYyK2EzUDF0azIrS3YwVGF5aGRCbDRrcnNUcTZzZm8vWUk1Y2Vhbkw4WGM3U1pyQkVRYm9EN2REbWs1Qgo4eDZLS2xHWU5IWlg0Rm5UZ0VPaStlM2ptTFFxRlBSY1kzVnNPazFFeUZBL0JnWlJVbkNHZUtGeERSN0tQdGhyCmtqSXVuektURXUyaDU4Tlp0S21ScUJHdDEwcTNRYzhZT3ExM2FnbmovUWRjc0ZYYTJnMjB1K1lYZDdoZ3krZksKWk4vVUkxQUQ0YzZyM1lma1ZWUmVHd1lxQVp1WXN2V0RKbW1GNWRwdEMzN011cDBPRUxVTExSakZJOTZXNXIwSAo1TmdPc25NWFJNV1hYVlpiNWRxT3R0SmRtS3FhZ25TZ1JQQVpQN2MwQjFQU2FqYzZjNGZRVXpNQ0F3RUFBVEFOCkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWpLb2tRdGRPcEsrTzhibWVPc3lySmdJSXJycVFVY2ZOUitjb0hZVUoKdGhrYnhITFMzR3VBTWI5dm15VExPY2xxeC9aYzJPblEwMEJCLzlTb0swcitFZ1U2UlVrRWtWcitTTFA3NTdUWgozZWI4dmdPdEduMS9ienM3bzNBaS9kclkrcUI5Q2k1S3lPc3FHTG1US2xFaUtOYkcyR1ZyTWxjS0ZYQU80YTY3Cklnc1hzYktNbTQwV1U3cG9mcGltU1ZmaXFSdkV5YmN3N0NYODF6cFErUyt1eHRYK2VBZ3V0NHh3VlI5d2IyVXYKelhuZk9HbWhWNThDd1dIQnNKa0kxNXhaa2VUWXdSN0diaEFMSkZUUkk3dkhvQXprTWIzbjAxQjQyWjNrN3RXNQpJUDFmTlpIOFUvOWxiUHNoT21FRFZkdjF5ZytVRVJxbStGSis2R0oxeFJGcGZnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= | ||||
|  | ||||
|     ## The base64-encoded TLS key for the default HTTPS server. Note: If not specified, a pre-generated key is used. | ||||
|     ## Note: It is recommended that you specify your own key. | ||||
|     key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBdi91RWM4b1JkMHUvZXVJTHNFK1RYZUprckxMMnNJNGFWaEMvYjVyYy9XMlRiNHEvClJOcktGMEdYaVN1eE9ycXgrajlnamx4NXFjdnhkenRKbXNFUkJ1Z1B0ME9hVGtIekhvb3FVWmcwZGxmZ1dkT0EKUTZMNTdlT1l0Q29VOUZ4amRXdzZUVVRJVUQ4R0JsRlNjSVo0b1hFTkhzbysyR3VTTWk2Zk1wTVM3YUhudzFtMApxWkdvRWEzWFNyZEJ6eGc2clhkcUNlUDlCMXl3VmRyYURiUzc1aGQzdUdETDU4cGszOVFqVUFQaHpxdmRoK1JWClZGNGJCaW9CbTVpeTlZTW1hWVhsMm0wTGZzeTZuUTRRdFFzdEdNVWozcGJtdlFmazJBNnljeGRFeFpkZFZsdmwKMm82MjBsMllxcHFDZEtCRThCay90elFIVTlKcU56cHpoOUJUTXdJREFRQUJBb0lCQVFDZklHbXowOHhRVmorNwpLZnZJUXQwQ0YzR2MxNld6eDhVNml4MHg4Mm15d1kxUUNlL3BzWE9LZlRxT1h1SENyUlp5TnUvZ2IvUUQ4bUFOCmxOMjRZTWl0TWRJODg5TEZoTkp3QU5OODJDeTczckM5bzVvUDlkazAvYzRIbjAzSkVYNzZ5QjgzQm9rR1FvYksKMjhMNk0rdHUzUmFqNjd6Vmc2d2szaEhrU0pXSzBwV1YrSjdrUkRWYmhDYUZhNk5nMUZNRWxhTlozVDhhUUtyQgpDUDNDeEFTdjYxWTk5TEI4KzNXWVFIK3NYaTVGM01pYVNBZ1BkQUk3WEh1dXFET1lvMU5PL0JoSGt1aVg2QnRtCnorNTZud2pZMy8yUytSRmNBc3JMTnIwMDJZZi9oY0IraVlDNzVWYmcydVd6WTY3TWdOTGQ5VW9RU3BDRkYrVm4KM0cyUnhybnhBb0dCQU40U3M0ZVlPU2huMVpQQjdhTUZsY0k2RHR2S2ErTGZTTXFyY2pOZjJlSEpZNnhubmxKdgpGenpGL2RiVWVTbWxSekR0WkdlcXZXaHFISy9iTjIyeWJhOU1WMDlRQ0JFTk5jNmtWajJTVHpUWkJVbEx4QzYrCk93Z0wyZHhKendWelU0VC84ajdHalRUN05BZVpFS2FvRHFyRG5BYWkyaW5oZU1JVWZHRXFGKzJyQW9HQkFOMVAKK0tZL0lsS3RWRzRKSklQNzBjUis3RmpyeXJpY05iWCtQVzUvOXFHaWxnY2grZ3l4b25BWlBpd2NpeDN3QVpGdwpaZC96ZFB2aTBkWEppc1BSZjRMazg5b2pCUmpiRmRmc2l5UmJYbyt3TFU4NUhRU2NGMnN5aUFPaTVBRHdVU0FkCm45YWFweUNweEFkREtERHdObit3ZFhtaTZ0OHRpSFRkK3RoVDhkaVpBb0dCQUt6Wis1bG9OOTBtYlF4VVh5YUwKMjFSUm9tMGJjcndsTmVCaWNFSmlzaEhYa2xpSVVxZ3hSZklNM2hhUVRUcklKZENFaHFsV01aV0xPb2I2NTNyZgo3aFlMSXM1ZUtka3o0aFRVdnpldm9TMHVXcm9CV2xOVHlGanIrSWhKZnZUc0hpOGdsU3FkbXgySkJhZUFVWUNXCndNdlQ4NmNLclNyNkQrZG8wS05FZzFsL0FvR0FlMkFVdHVFbFNqLzBmRzgrV3hHc1RFV1JqclRNUzRSUjhRWXQKeXdjdFA4aDZxTGxKUTRCWGxQU05rMXZLTmtOUkxIb2pZT2pCQTViYjhibXNVU1BlV09NNENoaFJ4QnlHbmR2eAphYkJDRkFwY0IvbEg4d1R0alVZYlN5T294ZGt5OEp0ek90ajJhS0FiZHd6NlArWDZDODhjZmxYVFo5MWpYL3RMCjF3TmRKS2tDZ1lCbyt0UzB5TzJ2SWFmK2UwSkN5TGhzVDQ5cTN3Zis2QWVqWGx2WDJ1VnRYejN5QTZnbXo5aCsKcDNlK2JMRUxwb3B0WFhNdUFRR0xhUkcrYlNNcjR5dERYbE5ZSndUeThXczNKY3dlSTdqZVp2b0ZpbmNvVlVIMwphdmxoTUVCRGYxSjltSDB5cDBwWUNaS2ROdHNvZEZtQktzVEtQMjJhTmtsVVhCS3gyZzR6cFE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo= | ||||
|  | ||||
|     ## The secret with a TLS certificate and key for the default HTTPS server. | ||||
|     ## The value must follow the following format: `<namespace>/<name>`. | ||||
|     ## Used as an alternative to specifying a certificate and key using `controller.defaultTLS.cert` and `controller.defaultTLS.key` parameters. | ||||
|     ## Format: <namespace>/<secret_name> | ||||
|     secret: | ||||
|  | ||||
|   wildcardTLS: | ||||
|     ## The base64-encoded TLS certificate for every Ingress/VirtualServer host that has TLS enabled but no secret specified. | ||||
|     ## If the parameter is not set, for such Ingress/VirtualServer hosts NGINX will break any attempt to establish a TLS connection. | ||||
|     cert: "" | ||||
|  | ||||
|     ## The base64-encoded TLS key for every Ingress/VirtualServer host that has TLS enabled but no secret specified. | ||||
|     ## If the parameter is not set, for such Ingress/VirtualServer hosts NGINX will break any attempt to establish a TLS connection. | ||||
|     key: "" | ||||
|  | ||||
|     ## The secret with a TLS certificate and key for every Ingress/VirtualServer host that has TLS enabled but no secret specified. | ||||
|     ## The value must follow the following format: `<namespace>/<name>`. | ||||
|     ## Used as an alternative to specifying a certificate and key using `controller.wildcardTLS.cert` and `controller.wildcardTLS.key` parameters. | ||||
|     ## Format: <namespace>/<secret_name> | ||||
|     secret: | ||||
|  | ||||
|   ## The node selector for pod assignment for the Ingress Controller pods. | ||||
|   nodeSelector: {} | ||||
|  | ||||
|   ## The termination grace period of the Ingress Controller pod. | ||||
|   terminationGracePeriodSeconds: 30 | ||||
|  | ||||
|   ## The resources of the Ingress Controller pods. | ||||
|   resources: {} | ||||
|     # limits: | ||||
|     #   cpu: 100m | ||||
|     #   memory: 64Mi | ||||
|     # requests: | ||||
|     #   cpu: 100m | ||||
|     #   memory: 64Mi | ||||
|  | ||||
|   ## The tolerations of the Ingress Controller pods. | ||||
|   tolerations: [] | ||||
|  | ||||
|   ## The affinity of the Ingress Controller pods. | ||||
|   affinity: {} | ||||
|  | ||||
|   ## The volumes of the Ingress Controller pods. | ||||
|   volumes: [] | ||||
|   # - name: extra-conf | ||||
|   #   configMap: | ||||
|   #     name: extra-conf | ||||
|  | ||||
|   ## The volumeMounts of the Ingress Controller pods. | ||||
|   volumeMounts: [] | ||||
|   # - name: extra-conf | ||||
|   #   mountPath: /etc/nginx/conf.d/extra.conf | ||||
|   #   subPath: extra.conf | ||||
|  | ||||
|   ## InitContainers for the Ingress Controller pods. | ||||
|   initContainers: [] | ||||
|   # - name: init-container | ||||
|   #   image: busybox:1.34 | ||||
|   #   command: ['sh', '-c', 'echo this is initial setup!'] | ||||
|  | ||||
|   ## Extra containers for the Ingress Controller pods. | ||||
|   extraContainers: [] | ||||
|   # - name: container | ||||
|   #   image: busybox:1.34 | ||||
|   #   command: ['sh', '-c', 'echo this is a sidecar!'] | ||||
|  | ||||
|   ## The number of replicas of the Ingress Controller deployment. | ||||
|   replicaCount: 1 | ||||
|  | ||||
|   ## A class of the Ingress Controller. | ||||
|  | ||||
|   ## IngressClass resource with the name equal to the class must be deployed. Otherwise, | ||||
|   ## the Ingress Controller will fail to start. | ||||
|   ## The Ingress Controller only processes resources that belong to its class - i.e. have the "ingressClassName" field resource equal to the class. | ||||
|  | ||||
|   ## The Ingress Controller processes all the resources that do not have the "ingressClassName" field for all versions of kubernetes. | ||||
|   ingressClass: nginx | ||||
|  | ||||
|   ## New Ingresses without an ingressClassName field specified will be assigned the class specified in `controller.ingressClass`. | ||||
|   setAsDefaultIngress: false | ||||
|  | ||||
|   ## Namespace to watch for Ingress resources. By default the Ingress Controller watches all namespaces. | ||||
|   watchNamespace: "" | ||||
|  | ||||
|   ## Enable the custom resources. | ||||
|   enableCustomResources: true | ||||
|  | ||||
|   ## Enable preview policies. This parameter is deprecated. To enable OIDC Policies please use controller.enableOIDC instead. | ||||
|   enablePreviewPolicies: false | ||||
|  | ||||
|   ## Enable OIDC policies. | ||||
|   enableOIDC: false | ||||
|  | ||||
|   ## Enable TLS Passthrough on port 443. Requires controller.enableCustomResources. | ||||
|   enableTLSPassthrough: false | ||||
|  | ||||
|   ## Enable cert manager for Virtual Server resources. Requires controller.enableCustomResources. | ||||
|   enableCertManager: false | ||||
|  | ||||
|   globalConfiguration: | ||||
|     ## Creates the GlobalConfiguration custom resource. Requires controller.enableCustomResources. | ||||
|     create: false | ||||
|  | ||||
|     ## The spec of the GlobalConfiguration for defining the global configuration parameters of the Ingress Controller. | ||||
|     spec: {} | ||||
|       # listeners: | ||||
|       # - name: dns-udp | ||||
|       #   port: 5353 | ||||
|       #   protocol: UDP | ||||
|       # - name: dns-tcp | ||||
|       #   port: 5353 | ||||
|       #   protocol: TCP | ||||
|  | ||||
|   ## Enable custom NGINX configuration snippets in Ingress, VirtualServer, VirtualServerRoute and TransportServer resources. | ||||
|   enableSnippets: false | ||||
|  | ||||
|   ## Add a location based on the value of health-status-uri to the default server. The location responds with the 200 status code for any request. | ||||
|   ## Useful for external health-checking of the Ingress Controller. | ||||
|   healthStatus: false | ||||
|  | ||||
|   ## Sets the URI of health status location in the default server. Requires controller.healthStatus. | ||||
|   healthStatusURI: "/nginx-health" | ||||
|  | ||||
|   nginxStatus: | ||||
|     ## Enable the NGINX stub_status, or the NGINX Plus API. | ||||
|     enable: true | ||||
|  | ||||
|     ## Set the port where the NGINX stub_status or the NGINX Plus API is exposed. | ||||
|     port: 8080 | ||||
|  | ||||
|     ## Add IPv4 IP/CIDR blocks to the allow list for NGINX stub_status or the NGINX Plus API. Separate multiple IP/CIDR by commas. | ||||
|     allowCidrs: "127.0.0.1" | ||||
|  | ||||
|   service: | ||||
|     ## Creates a service to expose the Ingress Controller pods. | ||||
|     create: true | ||||
|  | ||||
|     ## The type of service to create for the Ingress Controller. | ||||
|     type: LoadBalancer | ||||
|  | ||||
|     ## The externalTrafficPolicy of the service. The value Local preserves the client source IP. | ||||
|     externalTrafficPolicy: Local | ||||
|  | ||||
|     ## The annotations of the Ingress Controller service. | ||||
|     annotations: {} | ||||
|  | ||||
|     ## The extra labels of the service. | ||||
|     extraLabels: {} | ||||
|  | ||||
|     ## The static IP address for the load balancer. Requires controller.service.type set to LoadBalancer. The cloud provider must support this feature. | ||||
|     loadBalancerIP: "" | ||||
|  | ||||
|     ## The list of external IPs for the Ingress Controller service. | ||||
|     externalIPs: [] | ||||
|  | ||||
|     ## The IP ranges (CIDR) that are allowed to access the load balancer. Requires controller.service.type set to LoadBalancer. The cloud provider must support this feature. | ||||
|     loadBalancerSourceRanges: [] | ||||
|  | ||||
|     ## The name of the service | ||||
|     ## Autogenerated if not set or set to "". | ||||
|     # name: nginx-ingress | ||||
|  | ||||
|     httpPort: | ||||
|       ## Enables the HTTP port for the Ingress Controller service. | ||||
|       enable: true | ||||
|  | ||||
|       ## The HTTP port of the Ingress Controller service. | ||||
|       port: 80 | ||||
|  | ||||
|       ## The custom NodePort for the HTTP port. Requires controller.service.type set to NodePort. | ||||
|       nodePort: "" | ||||
|  | ||||
|       ## The HTTP port on the POD where the Ingress Controller service is running. | ||||
|       targetPort: 80 | ||||
|  | ||||
|     httpsPort: | ||||
|       ## Enables the HTTPS port for the Ingress Controller service. | ||||
|       enable: true | ||||
|  | ||||
|       ## The HTTPS port of the Ingress Controller service. | ||||
|       port: 443 | ||||
|  | ||||
|       ## The custom NodePort for the HTTPS port. Requires controller.service.type set to NodePort. | ||||
|       nodePort: "" | ||||
|  | ||||
|       ## The HTTPS port on the POD where the Ingress Controller service is running. | ||||
|       targetPort: 443 | ||||
|  | ||||
|     ## A list of custom ports to expose through the Ingress Controller service. Follows the conventional Kubernetes yaml syntax for service ports. | ||||
|     customPorts: [] | ||||
|  | ||||
|   serviceAccount: | ||||
|     ## The name of the service account of the Ingress Controller pods. Used for RBAC. | ||||
|     ## Autogenerated if not set or set to "". | ||||
|     # name: nginx-ingress | ||||
|  | ||||
|     ## The name of the secret containing docker registry credentials. | ||||
|     ## Secret must exist in the same namespace as the helm release. | ||||
|     imagePullSecretName: "" | ||||
|  | ||||
|   reportIngressStatus: | ||||
|     ## Updates the address field in the status of Ingress resources with an external address of the Ingress Controller. | ||||
|     ## You must also specify the source of the external address either through an external service via controller.reportIngressStatus.externalService, | ||||
|     ## controller.reportIngressStatus.ingressLink or the external-status-address entry in the ConfigMap via controller.config.entries. | ||||
|     ## Note: controller.config.entries.external-status-address takes precedence over the others. | ||||
|     enable: true | ||||
|  | ||||
|     ## Specifies the name of the service with the type LoadBalancer through which the Ingress Controller is exposed externally. | ||||
|     ## The external address of the service is used when reporting the status of Ingress, VirtualServer and VirtualServerRoute resources. | ||||
|     ## controller.reportIngressStatus.enable must be set to true. | ||||
|     ## The default is autogenerated and matches the created service (see controller.service.create). | ||||
|     # externalService: nginx-ingress | ||||
|  | ||||
|     ## Specifies the name of the IngressLink resource, which exposes the Ingress Controller pods via a BIG-IP system. | ||||
|     ## The IP of the BIG-IP system is used when reporting the status of Ingress, VirtualServer and VirtualServerRoute resources. | ||||
|     ## controller.reportIngressStatus.enable must be set to true. | ||||
|     ingressLink: "" | ||||
|  | ||||
|     ## Enable Leader election to avoid multiple replicas of the controller reporting the status of Ingress resources. controller.reportIngressStatus.enable must be set to true. | ||||
|     enableLeaderElection: true | ||||
|  | ||||
|     ## Specifies the name of the ConfigMap, within the same namespace as the controller, used as the lock for leader election. controller.reportIngressStatus.enableLeaderElection must be set to true. | ||||
|     ## Autogenerated if not set or set to "". | ||||
|     # leaderElectionLockName: "nginx-ingress-leader-election" | ||||
|  | ||||
|     ## The annotations of the leader election configmap. | ||||
|     annotations: {} | ||||
|  | ||||
|   pod: | ||||
|     ## The annotations of the Ingress Controller pod. | ||||
|     annotations: {} | ||||
|  | ||||
|     ## The additional extra labels of the Ingress Controller pod. | ||||
|     extraLabels: {} | ||||
|  | ||||
|   ## The PriorityClass of the ingress controller pods. | ||||
|   priorityClassName: | ||||
|  | ||||
|   readyStatus: | ||||
|     ## Enables readiness endpoint "/nginx-ready". The endpoint returns a success code when NGINX has loaded all the config after startup. | ||||
|     enable: true | ||||
|  | ||||
|     ## Set the port where the readiness endpoint is exposed. | ||||
|     port: 8081 | ||||
|  | ||||
|   ## Enable collection of latency metrics for upstreams. Requires prometheus.create. | ||||
|   enableLatencyMetrics: false | ||||
|  | ||||
| rbac: | ||||
|   ## Configures RBAC. | ||||
|   create: true | ||||
|  | ||||
| prometheus: | ||||
|   ## Expose NGINX or NGINX Plus metrics in the Prometheus format. | ||||
|   create: true | ||||
|  | ||||
|   ## Configures the port to scrape the metrics. | ||||
|   port: 9113 | ||||
|  | ||||
|   ## Specifies the namespace/name of a Kubernetes TLS Secret which will be used to protect the Prometheus endpoint. | ||||
|   secret: "" | ||||
|  | ||||
|   ## Configures the HTTP scheme used. | ||||
|   scheme: http | ||||
|  | ||||
| nginxServiceMesh: | ||||
|   ## Enables integration with NGINX Service Mesh. | ||||
|   ## Requires controller.nginxplus | ||||
|   enable: false | ||||
|  | ||||
|   ## Enables NGINX Service Mesh workload to route egress traffic through the Ingress Controller. | ||||
|   ## Requires nginxServiceMesh.enable | ||||
|   enableEgress: false | ||||
|  | ||||
| @@ -1,75 +0,0 @@ | ||||
| apiVersion: v1 | ||||
| kind: Namespace | ||||
| metadata: | ||||
|   name: nocodb | ||||
|   labels: | ||||
|     app: nocodb | ||||
|  | ||||
|  | ||||
|  | ||||
| --- | ||||
| apiVersion: apps/v1 | ||||
| kind: Deployment | ||||
| metadata: | ||||
|   name: nocodb | ||||
|   namespace: nocodb | ||||
|   labels: | ||||
|     app: nocodb | ||||
| spec: | ||||
|   replicas: 1 | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       app: nocodb | ||||
|   template: | ||||
|     metadata: | ||||
|       labels: | ||||
|         app: nocodb | ||||
|     spec: | ||||
|       containers: | ||||
|       - name: nocodb | ||||
|         image: nocodb/nocodb | ||||
|         tty: true | ||||
|         ports: | ||||
|           - containerPort: 8080 | ||||
|  | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: Service | ||||
| metadata: | ||||
|   name: nocodb | ||||
|   namespace: nocodb | ||||
|  | ||||
| spec: | ||||
|   type: ClusterIP | ||||
|   ports: | ||||
|     - name: http | ||||
|       port: 8080 | ||||
|   selector: | ||||
|     app: nocodb | ||||
|  | ||||
| --- | ||||
|  | ||||
| kind: Ingress | ||||
| apiVersion: networking.k8s.io/v1 | ||||
| metadata: | ||||
|   namespace: nocodb | ||||
|   name: nocodb-ingress | ||||
|   annotations: | ||||
|     kubernetes.io/ingress.class: nginx | ||||
|     cert-manager.io/cluster-issuer: cloudflare-letsencrypt-prod | ||||
| spec: | ||||
|   tls: | ||||
|   - hosts: | ||||
|     - nocodb.kluster.moll.re | ||||
|     secretName: cloudflare-letsencrypt-issuer-account-key | ||||
|   rules: | ||||
|     - host: nocodb.kluster.moll.re | ||||
|       http: | ||||
|         paths: | ||||
|         - backend: | ||||
|             service: | ||||
|               name: nocodb | ||||
|               port:  | ||||
|                 number: 8080 | ||||
|           path: / | ||||
|           pathType: Prefix | ||||
| @@ -1,26 +0,0 @@ | ||||
| kind: Ingress | ||||
| apiVersion: networking.k8s.io/v1 | ||||
| metadata: | ||||
|   namespace: pihole | ||||
|   name: pihole-ingress | ||||
|   annotations: | ||||
|     kubernetes.io/ingress.class: nginx | ||||
|     cert-manager.io/cluster-issuer: cloudflare-letsencrypt-prod | ||||
|      | ||||
|  | ||||
| spec: | ||||
|   tls: | ||||
|   - hosts: | ||||
|     - pihole.kluster.moll.re | ||||
|     secretName: cloudflare-letsencrypt-issuer-account-key | ||||
|   rules: | ||||
|     - host: pihole.kluster.moll.re | ||||
|       http: | ||||
|         paths: | ||||
|         - backend: | ||||
|             service: | ||||
|               name: pihole-web | ||||
|               port:  | ||||
|                 number: 80 | ||||
|           path: / | ||||
|           pathType: Prefix | ||||
| @@ -1,37 +0,0 @@ | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: pihole | ||||
|   name: pihole-nfs | ||||
|   labels: | ||||
|     directory: pihole | ||||
| spec: | ||||
|   storageClassName: slow | ||||
|   capacity: | ||||
|     storage: "500Mi" | ||||
|   volumeMode: Filesystem | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   nfs: | ||||
|     path: /pihole | ||||
|     server: 10.43.239.43 # assigned to nfs-server service. Won't change as long as service is not redeployed | ||||
| --- | ||||
| ## pihole.persistentvolumeclaim.yml | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: pihole | ||||
|   name: pihole-nfs | ||||
| spec: | ||||
|   storageClassName: slow | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "500Mi" | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       directory: pihole | ||||
| --- | ||||
| @@ -1,397 +0,0 @@ | ||||
| # Default values for pihole. | ||||
| # This is a YAML-formatted file. | ||||
| # Declare variables to be passed into your templates. | ||||
|  | ||||
| # -- The number of replicas | ||||
| replicaCount: 1 | ||||
|  | ||||
| # -- The `spec.strategyTpye` for updates | ||||
| strategyType: RollingUpdate | ||||
|  | ||||
| # -- The maximum number of Pods that can be created over the desired number of `ReplicaSet` during updating. | ||||
| maxSurge: 1 | ||||
|  | ||||
| # -- The maximum number of Pods that can be unavailable during updating | ||||
| maxUnavailable: 1 | ||||
|  | ||||
| image: | ||||
|   # -- the repostory to pull the image from | ||||
|   repository: "pihole/pihole" | ||||
|   # -- the docker tag, if left empty it will get it from the chart's appVersion | ||||
|   tag: "" | ||||
|   # -- the pull policy | ||||
|   pullPolicy: IfNotPresent | ||||
|  | ||||
| dualStack: | ||||
|   # -- set this to true to enable creation of DualStack services or creation of separate IPv6 services if `serviceDns.type` is set to `"LoadBalancer"` | ||||
|   enabled: false | ||||
|  | ||||
| dnsHostPort: | ||||
|   # -- set this to true to enable dnsHostPort | ||||
|   enabled: false | ||||
|   # -- default port for this pod | ||||
|   port: 53 | ||||
|  | ||||
| # -- Configuration for the DNS service on port 53 | ||||
| serviceDns: | ||||
|  | ||||
|   # -- deploys a mixed (TCP + UDP) Service instead of separate ones | ||||
|   mixedService: false | ||||
|  | ||||
|   # -- `spec.type` for the DNS Service | ||||
|   type: LoadBalancer | ||||
|  | ||||
|   # -- The port of the DNS service | ||||
|   port: 53 | ||||
|  | ||||
|   # -- Optional node port for the DNS service | ||||
|   nodePort: "" | ||||
|  | ||||
|   # -- `spec.externalTrafficPolicy` for the DHCP Service | ||||
|   externalTrafficPolicy: Local | ||||
|  | ||||
|   # -- A fixed `spec.loadBalancerIP` for the DNS Service | ||||
|   loadBalancerIP: 192.168.1.3 | ||||
|   # -- A fixed `spec.loadBalancerIP` for the IPv6 DNS Service | ||||
|   loadBalancerIPv6: "" | ||||
|  | ||||
|   # -- Annotations for the DNS service | ||||
|   annotations:  | ||||
|     # metallb.universe.tf/address-pool: network-services | ||||
|     metallb.universe.tf/allow-shared-ip: pihole-svc | ||||
|  | ||||
| # -- Configuration for the DHCP service on port 67 | ||||
| serviceDhcp: | ||||
|  | ||||
|   # -- Generate a Service resource for DHCP traffic | ||||
|   enabled: false | ||||
|  | ||||
|   # -- `spec.type` for the DHCP Service | ||||
|   type: NodePort | ||||
|  | ||||
|   # -- `spec.externalTrafficPolicy` for the DHCP Service | ||||
|   externalTrafficPolicy: Local | ||||
|  | ||||
|   # -- A fixed `spec.loadBalancerIP` for the DHCP Service | ||||
|   loadBalancerIP: "" | ||||
|   # -- A fixed `spec.loadBalancerIP` for the IPv6 DHCP Service | ||||
|   loadBalancerIPv6: "" | ||||
|  | ||||
|   # -- Annotations for the DHCP service | ||||
|   annotations: {} | ||||
|     # metallb.universe.tf/address-pool: network-services | ||||
|     # metallb.universe.tf/allow-shared-ip: pihole-svc | ||||
|  | ||||
| # -- Configuration for the web interface service | ||||
| serviceWeb: | ||||
|   # -- Configuration for the HTTP web interface listener | ||||
|   http: | ||||
|  | ||||
|     # -- Generate a service for HTTP traffic | ||||
|     enabled: true | ||||
|  | ||||
|     # -- The port of the web HTTP service | ||||
|     port: 80 | ||||
|  | ||||
|   # -- Configuration for the HTTPS web interface listener | ||||
|   https: | ||||
|     # -- Generate a service for HTTPS traffic | ||||
|     enabled: true | ||||
|  | ||||
|     # -- The port of the web HTTPS service | ||||
|     port: 443 | ||||
|  | ||||
|   # -- `spec.type` for the web interface Service | ||||
|   type: ClusterIP | ||||
|  | ||||
|   # -- `spec.externalTrafficPolicy` for the web interface Service | ||||
|   externalTrafficPolicy: Local | ||||
|  | ||||
|   # -- A fixed `spec.loadBalancerIP` for the web interface Service | ||||
|   loadBalancerIP: "" | ||||
|   # -- A fixed `spec.loadBalancerIP` for the IPv6 web interface Service | ||||
|   loadBalancerIPv6: "" | ||||
|  | ||||
|   # -- Annotations for the DHCP service | ||||
|   annotations: {} | ||||
|     # metallb.universe.tf/address-pool: network-services | ||||
|     # metallb.universe.tf/allow-shared-ip: pihole-svc | ||||
|  | ||||
| virtualHost: pi.hole | ||||
|  | ||||
| # -- Configuration for the Ingress | ||||
| ingress: | ||||
|   # -- Generate a Ingress resource | ||||
|   enabled: false # DONE EXTERNALLY | ||||
|  | ||||
|   # -- Specify an ingressClassName | ||||
|   # ingressClassName: nginx | ||||
|  | ||||
|   # -- Annotations for the ingress | ||||
|   annotations: {} | ||||
|     # kubernetes.io/ingress.class: nginx | ||||
|     # kubernetes.io/tls-acme: "true" | ||||
|   path: / | ||||
|   hosts: | ||||
|     # virtualHost (default value is pi.hole) will be appended to the hosts | ||||
|     - chart-example.local | ||||
|   tls: [] | ||||
|   #  - secretName: chart-example-tls | ||||
|   #    hosts: | ||||
|   #     #- virtualHost (default value is pi.hole) will be appended to the hosts | ||||
|   #      - chart-example.local | ||||
|  | ||||
| # -- Probes configuration | ||||
| probes: | ||||
|   # -- probes.liveness -- Configure the healthcheck for the ingress controller | ||||
|   liveness: | ||||
|     # -- Generate a liveness probe | ||||
|     enabled: true | ||||
|     initialDelaySeconds: 60 | ||||
|     failureThreshold: 10 | ||||
|     timeoutSeconds: 5 | ||||
|   readiness: | ||||
|     # -- Generate a readiness probe | ||||
|     enabled: true | ||||
|     initialDelaySeconds: 60 | ||||
|     failureThreshold: 3 | ||||
|     timeoutSeconds: 5 | ||||
|  | ||||
| # -- We usually recommend not to specify default resources and to leave this as a conscious | ||||
| # -- choice for the user. This also increases chances charts run on environments with little | ||||
| # -- resources, such as Minikube. If you do want to specify resources, uncomment the following | ||||
| # -- lines, adjust them as necessary, and remove the curly braces after 'resources:'. | ||||
| resources: {} | ||||
|   # limits: | ||||
|   #  cpu: 100m | ||||
|   #  memory: 128Mi | ||||
|   # requests: | ||||
|   #  cpu: 100m | ||||
|   #  memory: 128Mi | ||||
|  | ||||
| # -- `spec.PersitentVolumeClaim` configuration | ||||
| persistentVolumeClaim: | ||||
|   # -- set to true to use pvc | ||||
|   enabled: true | ||||
|  | ||||
|   # -- specify an existing `PersistentVolumeClaim` to use | ||||
|   existingClaim: "pihole-nfs" | ||||
|  | ||||
|   # -- Annotations for the `PersitentVolumeClaim` | ||||
|   annotations: {} | ||||
|  | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|  | ||||
|   size: "500Mi" | ||||
|  | ||||
|   ## If defined, storageClassName: <storageClass> | ||||
|   ## If set to "-", storageClassName: "", which disables dynamic provisioning | ||||
|   ## If undefined (the default) or set to null, no storageClassName spec is | ||||
|   ##   set, choosing the default provisioner.  (gp2 on AWS, standard on | ||||
|   ##   GKE, AWS & OpenStack) | ||||
|   ## | ||||
|   # storageClass: "-" | ||||
|  | ||||
|   ## If subPath is set mount a sub folder of a volume instead of the root of the volume. | ||||
|   ## This is especially handy for volume plugins that don't natively support sub mounting (like glusterfs). | ||||
|  | ||||
|   ## subPath: "pihole" | ||||
|  | ||||
| nodeSelector: {} | ||||
|  | ||||
| tolerations: [] | ||||
|  | ||||
| # -- Specify a priorityClassName | ||||
| # priorityClassName: "" | ||||
|  | ||||
| # Reference: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ | ||||
| topologySpreadConstraints: [] | ||||
| # - maxSkew: <integer> | ||||
| #   topologyKey: <string> | ||||
| #   whenUnsatisfiable: <string> | ||||
| #   labelSelector: <object> | ||||
|  | ||||
| affinity: {} | ||||
|  | ||||
| # -- Administrator password when not using an existing secret (see below) | ||||
| adminPassword: "admin" | ||||
|  | ||||
| # -- Use an existing secret for the admin password. | ||||
| admin: | ||||
|   # -- Specify an existing secret to use as admin password | ||||
|   existingSecret: "" | ||||
|   # -- Specify the key inside the secret to use | ||||
|   passwordKey: "" | ||||
|  | ||||
| # -- extraEnvironmentVars is a list of extra enviroment variables to set for pihole to use | ||||
| extraEnvVars: {} | ||||
|   # TZ: UTC | ||||
|  | ||||
| # -- extraEnvVarsSecret is a list of secrets to load in as environment variables. | ||||
| extraEnvVarsSecret: {} | ||||
|   # env_var: | ||||
|   #   name: secret-name | ||||
|   #   key: secret-key | ||||
|  | ||||
| # -- default upstream DNS 1 server to use | ||||
| DNS1: "8.8.8.8" | ||||
| # -- default upstream DNS 2 server to use | ||||
| DNS2: "8.8.4.4" | ||||
|  | ||||
| antiaff: | ||||
|   # -- set to true to enable antiaffinity (example: 2 pihole DNS in the same cluster) | ||||
|   enabled: false | ||||
|   # -- Here you can set the pihole release (you set in `helm install <releasename> ...`) | ||||
|   # you want to avoid | ||||
|   avoidRelease: pihole1 | ||||
|   # -- Here you can choose between preferred or required | ||||
|   strict: true | ||||
|  | ||||
| doh: | ||||
|   # -- set to true to enabled DNS over HTTPs via cloudflared | ||||
|   enabled: false | ||||
|   name: "cloudflared" | ||||
|   repository: "crazymax/cloudflared" | ||||
|   tag: latest | ||||
|   pullPolicy: IfNotPresent | ||||
|   # -- Here you can pass environment variables to the DoH container, for example: | ||||
|   envVars: {} | ||||
|     # TUNNEL_DNS_UPSTREAM: "https://1.1.1.2/dns-query,https://1.0.0.2/dns-query" | ||||
|  | ||||
|   # -- Probes configuration | ||||
|   probes: | ||||
|     # -- Configure the healthcheck for the doh container | ||||
|     liveness: | ||||
|       # -- set to true to enable liveness probe | ||||
|       enabled: true | ||||
|       # -- defines the initial delay for the liveness probe | ||||
|       initialDelaySeconds: 60 | ||||
|       # -- defines the failure threshold for the liveness probe | ||||
|       failureThreshold: 10 | ||||
|       # -- defines the timeout in secondes for the liveness probe | ||||
|       timeoutSeconds: 5 | ||||
|  | ||||
| dnsmasq: | ||||
|   # -- Add upstream dns servers. All lines will be added to the pihole dnsmasq configuration | ||||
|   upstreamServers: [] | ||||
|   # - server=/foo.bar/192.168.178.10 | ||||
|   # - server=/bar.foo/192.168.178.11 | ||||
|  | ||||
|   # -- Add custom dns entries to override the dns resolution. All lines will be added to the pihole dnsmasq configuration. | ||||
|   customDnsEntries: [] | ||||
|   # - address=/foo.bar/192.168.178.10 | ||||
|   # - address=/bar.foo/192.168.178.11 | ||||
|  | ||||
|   # -- Dnsmasq reads the /etc/hosts file to resolve ips. You can add additional entries if you like | ||||
|   additionalHostsEntries: [] | ||||
|   # - 192.168.0.3     host4 | ||||
|   # - 192.168.0.4     host5 | ||||
|  | ||||
|   # -- Static DHCP config | ||||
|   staticDhcpEntries: [] | ||||
|   # staticDhcpEntries: | ||||
|   # - dhcp-host=MAC_ADDRESS,IP_ADDRESS,HOSTNAME | ||||
|  | ||||
|   # -- Other options | ||||
|   customSettings: | ||||
|   # otherSettings: | ||||
|   # - rebind-domain-ok=/plex.direct/ | ||||
|  | ||||
|   # -- Here we specify custom cname entries that should point to `A` records or | ||||
|   # elements in customDnsEntries array. | ||||
|   # The format should be: | ||||
|   #  - cname=cname.foo.bar,foo.bar | ||||
|   #  - cname=cname.bar.foo,bar.foo | ||||
|   #  - cname=cname record,dns record | ||||
|   customCnameEntries: [] | ||||
|   # Here we specify custom cname entries that should point to `A` records or | ||||
|   # elements in customDnsEntries array. | ||||
|   # The format should be: | ||||
|   #   - cname=cname.foo.bar,foo.bar | ||||
|   #   - cname=cname.bar.foo,bar.foo | ||||
|   #   - cname=cname record,dns record | ||||
|  | ||||
| # -- list of adlists to import during initial start of the container | ||||
| adlists: {} | ||||
|   # If you want to provide blocklists, add them here. | ||||
|   # - https://hosts-file.net/grm.txt | ||||
|   # - https://reddestdream.github.io/Projects/MinimalHosts/etc/MinimalHostsBlocker/minimalhosts | ||||
|  | ||||
| # -- list of whitelisted domains to import during initial start of the container | ||||
| whitelist: {} | ||||
|   # If you want to provide whitelisted domains, add them here. | ||||
|   # - clients4.google.com | ||||
|  | ||||
| # -- list of blacklisted domains to import during initial start of the container | ||||
| blacklist: {} | ||||
|   # If you want to have special domains blacklisted, add them here | ||||
|   # - *.blackist.com | ||||
|  | ||||
| # -- list of blacklisted regex expressions to import during initial start of the container | ||||
| regex: {} | ||||
|   # Add regular expression blacklist items | ||||
|   # - (^|\.)facebook\.com$ | ||||
|  | ||||
| # -- values that should be added to pihole-FTL.conf | ||||
| ftl: {} | ||||
|   # Add values for pihole-FTL.conf | ||||
|   # MAXDBDAYS: 14 | ||||
|  | ||||
| # -- port the container should use to expose HTTP traffic | ||||
| webHttp: "80" | ||||
|  | ||||
| # -- port the container should use to expose HTTPS traffic | ||||
| webHttps: "443" | ||||
|  | ||||
| # -- hostname of pod | ||||
| hostname: "" | ||||
|  | ||||
| # -- should the container use host network | ||||
| hostNetwork: "false" | ||||
|  | ||||
| # -- should container run in privileged mode | ||||
| privileged: "false" | ||||
|  | ||||
| customVolumes: | ||||
|   # -- set this to true to enable custom volumes | ||||
|   enabled: false | ||||
|   # -- any volume type can be used here | ||||
|   config: {} | ||||
|     # hostPath: | ||||
|     #   path: "/mnt/data" | ||||
|  | ||||
| # -- Additional annotations for pods | ||||
| podAnnotations: {} | ||||
|   # Example below allows Prometheus to scape on metric port (requires pihole-exporter sidecar enabled) | ||||
|   # prometheus.io/port: '9617' | ||||
|   # prometheus.io/scrape: 'true' | ||||
|  | ||||
| monitoring: | ||||
|   # -- Preferably adding prometheus scrape annotations rather than enabling podMonitor. | ||||
|   podMonitor: | ||||
|     # -- set this to true to enable podMonitor | ||||
|     enabled: false | ||||
|   # -- Sidecar configuration | ||||
|   sidecar: | ||||
|     # -- set this to true to enable podMonitor as sidecar | ||||
|     enabled: false | ||||
|     port: 9617 | ||||
|     image: | ||||
|       repository: ekofr/pihole-exporter | ||||
|       tag: 0.0.10 | ||||
|       pullPolicy: IfNotPresent | ||||
|     resources: | ||||
|       limits: | ||||
|         memory: 128Mi | ||||
|       # requests: | ||||
|       #  cpu: 100m | ||||
|       #  memory: 128Mi | ||||
|  | ||||
| podDnsConfig: | ||||
|   enabled: true | ||||
|   policy: "None" | ||||
|   nameservers: | ||||
|   - 127.0.0.1 | ||||
|   - 8.8.8.8 | ||||
|  | ||||
| @@ -1,68 +0,0 @@ | ||||
| # Default values for portainer. | ||||
| # This is a YAML-formatted file. | ||||
| # Declare variables to be passed into your templates. | ||||
|  | ||||
| replicaCount: 1 | ||||
|  | ||||
| # If enterpriseEdition is enabled, then use the values below _instead_ of those in .image | ||||
| enterpriseEdition:  | ||||
|   enabled: false | ||||
|   image: | ||||
|     repository: portainer/portainer-ee | ||||
|     tag: 2.12.2 | ||||
|     pullPolicy: Always | ||||
|  | ||||
| image: | ||||
|   repository: portainer/portainer-ce | ||||
|   tag: latest | ||||
|   pullPolicy: Always | ||||
|  | ||||
| imagePullSecrets: [] | ||||
|  | ||||
| nodeSelector: {} | ||||
|  | ||||
| serviceAccount: | ||||
|   annotations: {} | ||||
|   name: portainer-sa-clusteradmin | ||||
|  | ||||
| service: | ||||
|   # Set the httpNodePort and edgeNodePort only if the type is NodePort | ||||
|   # For Ingress, set the type to be ClusterIP and set ingress.enabled to true | ||||
|   # For Cloud Providers, set the type to be LoadBalancer | ||||
|   type: ClusterIP | ||||
|   httpPort: 9000 | ||||
|   httpsPort: 9443 | ||||
|   httpNodePort: 30777 | ||||
|   httpsNodePort: 30779 | ||||
|   edgePort: 8000 | ||||
|   edgeNodePort: 30776 | ||||
|   annotations: {} | ||||
|  | ||||
| tls: | ||||
|   # If set, Portainer will be configured to use TLS only | ||||
|   force: false | ||||
|   # If set, will mount the existing secret into the pod | ||||
|   existingSecret: "" | ||||
|  | ||||
| feature: | ||||
|   flags: "" | ||||
|  | ||||
| ingress: | ||||
|   enabled: false | ||||
|   ingressClassName: "" | ||||
|   annotations: {} | ||||
|     # kubernetes.io/ingress.class: nginx | ||||
|     # Only use below if tls.force=true | ||||
|     # nginx.ingress.kubernetes.io/backend-protocol: HTTPS | ||||
|   # Note: Hosts and paths are of type array | ||||
|   hosts: | ||||
|     - host: | ||||
|       paths: [] | ||||
|       # - path: "/" | ||||
|   tls: [] | ||||
|  | ||||
| resources: {} | ||||
|  | ||||
| persistence: | ||||
|   existingClaim: portainer-data	 | ||||
|  | ||||
| @@ -1,17 +0,0 @@ | ||||
| apiVersion: traefik.containo.us/v1alpha1 | ||||
| kind: IngressRoute | ||||
| metadata: | ||||
|   namespace: portainer | ||||
|   name: portainer-ingressroute | ||||
|  | ||||
| spec: | ||||
|   entryPoints: | ||||
|     - websecure | ||||
|   routes: | ||||
|   - match: Host(`portainer.kluster.moll.re`) | ||||
|     kind: Rule | ||||
|     services: | ||||
|     - name: portainer | ||||
|       port: 9000 | ||||
|   tls: | ||||
|     certResolver: default-tls  | ||||
| @@ -1,37 +0,0 @@ | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: portainer | ||||
|   name: portainer-data | ||||
|   labels: | ||||
|     directory: portainer | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   capacity: | ||||
|     storage: "10Gi" | ||||
|   volumeMode: Filesystem | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   nfs: | ||||
|     path: /portainer | ||||
|     server: 10.43.239.43 # assigned to nfs-server service. Won't change as long as service is not redeployed | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: portainer | ||||
|   name: portainer-data | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "10Gi" | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       directory: portainer | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -1,19 +0,0 @@ | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: monitoring | ||||
|   name: prometheus-data-nfs | ||||
|   labels: | ||||
|     directory: prometheus | ||||
| spec: | ||||
|   storageClassName: slow | ||||
|   capacity: | ||||
|     storage: "50Gi" | ||||
|   volumeMode: Filesystem | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   nfs: | ||||
|     path: /prometheus | ||||
|     server: 10.43.239.43 # assigned to nfs-server service. Won't change as long as service is not redeployed | ||||
| --- | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,79 +0,0 @@ | ||||
| # mkdir -p /var/lib/pufferpanel | ||||
| # docker volume create pufferpanel-config | ||||
| # docker create --name pufferpanel -p 8080:8080 -p 5657:5657 -v pufferpanel-config:/etc/pufferpanel -v /var/lib/pufferpanel:/var/lib/pufferpanel --restart=on-failure  | ||||
| # docker start pufferpanel | ||||
| # docker exec -it pufferpanel /pufferpanel/pufferpanel user add | ||||
|  | ||||
| apiVersion: apps/v1 | ||||
| kind: Deployment | ||||
| metadata: | ||||
|   name: pufferpanel | ||||
|   namespace: pufferpanel | ||||
|   labels: | ||||
|     app: pufferpanel | ||||
| spec: | ||||
|   replicas: 1 | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       app: pufferpanel | ||||
|   template: | ||||
|     metadata: | ||||
|       labels: | ||||
|         app: pufferpanel | ||||
|     spec: | ||||
|       containers: | ||||
|       - name: pufferpanel | ||||
|         image: karyeet/pufferpanel:devel | ||||
|         tty: true | ||||
|         ports: | ||||
|             - containerPort: 8080 | ||||
|             - containerPort: 5657 | ||||
|         volumeMounts: | ||||
|         - mountPath: /var/lib/pufferpanel | ||||
|           name: pufferpanel-nfs | ||||
|         - mountPath: /etc/pufferpanel | ||||
|           name: pufferpanel-config-nfs | ||||
|         resources: | ||||
|           requests: | ||||
|             memory: "2Gi" | ||||
|             cpu: 1 | ||||
|  | ||||
|  | ||||
|       volumes: | ||||
|       - name: pufferpanel-nfs | ||||
|         persistentVolumeClaim: | ||||
|           claimName: pufferpanel-nfs | ||||
|       - name: pufferpanel-config-nfs | ||||
|         persistentVolumeClaim: | ||||
|           claimName: pufferpanel-config-nfs | ||||
|  | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: Service | ||||
| metadata: | ||||
|   name: pufferpanel | ||||
|   namespace: pufferpanel | ||||
|  | ||||
| spec: | ||||
|   ports: | ||||
|     - name: http | ||||
|       port: 8080 | ||||
|   selector: | ||||
|     app: pufferpanel | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: Service | ||||
| metadata: | ||||
|   name: pufferpanel-mc | ||||
|   namespace: pufferpanel | ||||
|  | ||||
| spec: | ||||
|   # -- `spec.type` for the DNS Service | ||||
|   type: LoadBalancer | ||||
|  | ||||
|   # -- The port of the DNS service | ||||
|   ports:  | ||||
|   - name: mc-port | ||||
|     port: 25565 | ||||
|     nodePort: 30005 | ||||
|     protocol: TCP | ||||
| @@ -1,28 +0,0 @@ | ||||
| kind: Ingress | ||||
| apiVersion: networking.k8s.io/v1 | ||||
| metadata: | ||||
|   namespace: pufferpanel | ||||
|   name: pufferpanel-ingress | ||||
|   annotations: | ||||
|    | ||||
|     kubernetes.io/ingress.class: nginx | ||||
|     # traefik.ingress.kubernetes.io/router.middlewares: default-redirect@kubernetescrd | ||||
|     cert-manager.io/cluster-issuer: cloudflare-letsencrypt-prod | ||||
|  | ||||
|  | ||||
| spec: | ||||
|   tls: | ||||
|   - hosts: | ||||
|     - game.kluster.moll.re | ||||
|     secretName: cloudflare-letsencrypt-issuer-account-key | ||||
|   rules: | ||||
|     - host: game.kluster.moll.re | ||||
|       http: | ||||
|         paths: | ||||
|         - backend: | ||||
|             service: | ||||
|               name: pufferpanel | ||||
|               port:  | ||||
|                 number: 8080 | ||||
|           path: / | ||||
|           pathType: Prefix | ||||
| @@ -1,72 +0,0 @@ | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: pufferpanel | ||||
|   name: pufferpanel-nfs | ||||
|   labels: | ||||
|     directory: pufferpanel | ||||
|  | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   capacity: | ||||
|     storage: "20Gi" | ||||
|   volumeMode: Filesystem | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   nfs: | ||||
|     path: /pufferpanel/data | ||||
|     server: 10.43.239.43 # assigned to nfs-server service. Won't change as long as service is not redeployed | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: pufferpanel | ||||
|   name: pufferpanel-nfs | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "20Gi" | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       directory: pufferpanel | ||||
| --- | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: pufferpanel | ||||
|   name: pufferpanel-config-nfs | ||||
|   labels: | ||||
|     directory: pufferpanel | ||||
|  | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   capacity: | ||||
|     storage: "1Gi" | ||||
|   volumeMode: Filesystem | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   nfs: | ||||
|     path: /pufferpanel/config | ||||
|     server: 10.43.239.43 # assigned to nfs-server service. Won't change as long as service is not redeployed | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: pufferpanel | ||||
|   name: pufferpanel-config-nfs | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "1Gi" | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       directory: pufferpanel | ||||
| --- | ||||
| @@ -1,130 +0,0 @@ | ||||
| apiVersion: v1 | ||||
| kind: Namespace | ||||
| metadata: | ||||
|   name: raspap | ||||
|   labels: | ||||
|     app: raspap | ||||
|  | ||||
| --- | ||||
|  | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: raspap | ||||
|   name: raspap-nfs | ||||
|   labels: | ||||
|     directory: raspap | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   capacity: | ||||
|     storage: "2Gi" | ||||
|   volumeMode: Filesystem | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   nfs: | ||||
|     path: /raspap | ||||
|     server: 10.43.239.43 # assigned to nfs-server service. Won't change as long as service is not redeployed | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: raspap | ||||
|   name: raspap-nfs | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "2Gi" | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       directory: raspap | ||||
|  | ||||
| --- | ||||
|  | ||||
| apiVersion: apps/v1 | ||||
| kind: Deployment | ||||
| metadata: | ||||
|   name: raspap | ||||
|   namespace: raspap | ||||
|   labels: | ||||
|     app: raspap | ||||
| spec: | ||||
|   replicas: 1 | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       app: raspap | ||||
|   template: | ||||
|     metadata: | ||||
|       labels: | ||||
|         app: raspap | ||||
|     spec: | ||||
|       containers: | ||||
|       - name: raspap | ||||
|         image: jrcichra/raspap-docker | ||||
|         tty: true | ||||
|         networkMode: "host" | ||||
|         securityContext: | ||||
|           capabilities: | ||||
|             add: | ||||
|               - SYS_ADMIN | ||||
|         ports: | ||||
|           - containerPort: 8000 | ||||
|         volumeMounts: | ||||
|         - mountPath: /data | ||||
|           name: raspap-nfs | ||||
|         - mountPath: /sys/fs/cgroup | ||||
|           name: cgroup | ||||
|  | ||||
|  | ||||
|       volumes: | ||||
|       - name: cgroup | ||||
|         hostPath: | ||||
|           path: /sys/fs/cgroup | ||||
|           readOnly: true | ||||
|       - name: raspap-nfs | ||||
|         persistentVolumeClaim: | ||||
|           claimName: raspap-nfs | ||||
|  | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: Service | ||||
| metadata: | ||||
|   name: archive | ||||
|   namespace: archive | ||||
|  | ||||
| spec: | ||||
|   type: ClusterIP | ||||
|   ports: | ||||
|     - name: http | ||||
|       port: 8000 | ||||
|   selector: | ||||
|     app: archive | ||||
|  | ||||
| --- | ||||
|  | ||||
| kind: Ingress | ||||
| apiVersion: networking.k8s.io/v1 | ||||
| metadata: | ||||
|   namespace: archive | ||||
|   name: archive-ingress | ||||
|   annotations: | ||||
|     kubernetes.io/ingress.class: nginx | ||||
|     cert-manager.io/cluster-issuer: cloudflare-letsencrypt-prod | ||||
| spec: | ||||
|   tls: | ||||
|   - hosts: | ||||
|     - archive.kluster.moll.re | ||||
|     secretName: cloudflare-letsencrypt-issuer-account-key | ||||
|   rules: | ||||
|     - host: archive.kluster.moll.re | ||||
|       http: | ||||
|         paths: | ||||
|         - backend: | ||||
|             service: | ||||
|               name: archive | ||||
|               port:  | ||||
|                 number: 8000 | ||||
|           path: / | ||||
|           pathType: Prefix | ||||
| @@ -1,26 +0,0 @@ | ||||
| kind: Ingress | ||||
| apiVersion: networking.k8s.io/v1 | ||||
| metadata: | ||||
|   namespace: rocketchat | ||||
|   name: rocketchat-ingress | ||||
|   annotations: | ||||
|     kubernetes.io/ingress.class: nginx | ||||
|     cert-manager.io/cluster-issuer: cloudflare-letsencrypt-prod | ||||
|      | ||||
|  | ||||
| spec: | ||||
|   tls: | ||||
|   - hosts: | ||||
|     - chat.kluster.moll.re | ||||
|     secretName: cloudflare-letsencrypt-issuer-account-key | ||||
|   rules: | ||||
|     - host: chat.kluster.moll.re | ||||
|       http: | ||||
|         paths: | ||||
|         - backend: | ||||
|             service: | ||||
|               name: rocketchat-rocketchat | ||||
|               port:  | ||||
|                 number: 80 | ||||
|           path: / | ||||
|           pathType: Prefix | ||||
| @@ -1,37 +0,0 @@ | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: rocketchat | ||||
|   name: rocketchat-nfs | ||||
|   labels: | ||||
|     directory: rocketchat | ||||
| spec: | ||||
|   storageClassName: slow | ||||
|   capacity: | ||||
|     storage: "8Gi" | ||||
|   volumeMode: Filesystem | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   nfs: | ||||
|     path: /rocketchat | ||||
|     server: 10.43.239.43 # assigned to nfs-server service. Won't change as long as service is not redeployed | ||||
| --- | ||||
| ## pihole.persistentvolumeclaim.yml | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: rocketchat | ||||
|   name: rocketchat-nfs | ||||
| spec: | ||||
|   storageClassName: slow | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "8Gi" | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       directory: rocketchat | ||||
| --- | ||||
| @@ -1,247 +0,0 @@ | ||||
| ## Rocket Chat image version | ||||
| ## ref: https://hub.docker.com/r/rocketchat/rocket.chat/tags | ||||
| ## | ||||
| image: | ||||
|   ## NOTE: for microsservices, those two itens get ignored,  | ||||
|   ## for now.  | ||||
|   repository: rs1977rs/rocketchat | ||||
|   tag: arm64-4.3.3 | ||||
|   pullPolicy: IfNotPresent | ||||
|  | ||||
| imagePullSecrets: [] | ||||
|  | ||||
| ## Host for the application | ||||
| ## set it to a domain pointing to your loadbalancer | ||||
| # host: | ||||
|  | ||||
| replicaCount: 1 | ||||
| minAvailable: 1 | ||||
|  | ||||
| smtp: | ||||
|   enabled: false | ||||
|   username: | ||||
|   password: | ||||
|   host: | ||||
|   port: 587 | ||||
|  | ||||
| # Extra env vars for Rocket.Chat: | ||||
| extraEnv: | ||||
|   # - name: MONGO_OPTIONS | ||||
|   #   value: '{"ssl": "true"}' | ||||
|   # - name: MONGO_OPLOG_URL | ||||
|   #   value: mongodb://oploguser:password@rocket-1:27017/local&replicaSet=rs0 | ||||
|  | ||||
| ## Specifies a Registration Token (obtainable at https://cloud.rocket.chat) | ||||
| #registrationToken: "" | ||||
|  | ||||
| ## Specifies an Enterprise License | ||||
| # license: "" | ||||
|  | ||||
| ## Pod anti-affinity can prevent the scheduler from placing RocketChat replicas on the same node. | ||||
| ## The default value "soft" means that the scheduler should *prefer* to not schedule two replica pods onto the same node but no guarantee is provided. | ||||
| ## The value "hard" means that the scheduler is *required* to not schedule two replica pods onto the same node. | ||||
| ## The value "" will disable pod anti-affinity so that no anti-affinity rules will be configured. | ||||
| ## | ||||
| podAntiAffinity: '' | ||||
|  | ||||
| ## If anti-affinity is enabled sets the topologyKey to use for anti-affinity. | ||||
| ## This can be changed to, for example, failure-domain.beta.kubernetes.io/zone | ||||
| ## | ||||
| podAntiAffinityTopologyKey: kubernetes.io/hostname | ||||
|  | ||||
| ## Assign custom affinity rules to the RocketChat instance | ||||
| ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ | ||||
| ## | ||||
| affinity: {} | ||||
| # nodeAffinity: | ||||
| #   requiredDuringSchedulingIgnoredDuringExecution: | ||||
| #     nodeSelectorTerms: | ||||
| #     - matchExpressions: | ||||
| #       - key: kubernetes.io/e2e-az-name | ||||
| #         operator: In | ||||
| #         values: | ||||
| #         - e2e-az1 | ||||
| #         - e2e-az2 | ||||
| # mongodb://user:password@localhost:27017/local?replicaSet=rs0&authSource=admin | ||||
|  | ||||
| ## | ||||
| ## MongoDB chart configuration | ||||
| ### ref https://github.com/helm/charts/tree/master/stable/mongodb#configuration | ||||
| ## | ||||
| mongodb: | ||||
|   ## Enable or disable MongoDB dependency completely. | ||||
|   enabled: true | ||||
|  | ||||
|   auth: | ||||
|     rootPassword: blablabla | ||||
|     username: rocketchat | ||||
|     password: blablabla | ||||
|     database: rocketchat | ||||
|    | ||||
|   architecture: replicaset | ||||
|   replicaCount: 1 | ||||
|   arbiter: | ||||
|     enabled: false | ||||
|     pdb: | ||||
|       minAvailable: 0 | ||||
|   pdb: | ||||
|     minAvailable: 0 | ||||
|  | ||||
|     # key: | ||||
|  | ||||
|   persistence: | ||||
|     enabled: false | ||||
|     ## mongodb data Persistent Volume Storage Class | ||||
|     ## If defined, storageClassName: <storageClass> | ||||
|     ## If set to "-", storageClassName: "", which disables dynamic provisioning | ||||
|     ## If undefined (the default) or set to null, no storageClassName spec is | ||||
|     ##   set, choosing the default provisioner.  (gp2 on AWS, standard on | ||||
|     ##   GKE, AWS & OpenStack) | ||||
|     ## | ||||
|     # storageClass: "-" | ||||
|     accessMode: ReadWriteOnce | ||||
|     size: 8Gi | ||||
|    | ||||
|   volumePermissions: {enabled: true} | ||||
|  | ||||
| ## Enable persistence using Persistent Volume Claims | ||||
| ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ | ||||
| ## | ||||
| persistence: | ||||
|   enabled: true | ||||
|   existingClaim: rocketchat-nfs | ||||
|   ## rocketchat data Persistent Volume Storage Class | ||||
|   ## If defined, storageClassName: <storageClass> | ||||
|   ## If set to "-", storageClassName: "", which disables dynamic provisioning | ||||
|   ## If undefined (the default) or set to null, no storageClassName spec is | ||||
|   ##   set, choosing the default provisioner.  (gp2 on AWS, standard on | ||||
|   ##   GKE, AWS & OpenStack) | ||||
|   ## | ||||
|   # storageClass: "-" | ||||
|   accessMode: ReadWriteOnce | ||||
|   size: 8Gi | ||||
|  | ||||
| ## Configure resource requests and limits | ||||
| ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ | ||||
| ## | ||||
| # resources: | ||||
| #   requests: | ||||
| #     memory: 512Mi | ||||
| #     cpu: 300m | ||||
|  | ||||
| securityContext: | ||||
|   enabled: true | ||||
|   runAsUser: 999 | ||||
|   fsGroup: 999 | ||||
|  | ||||
| serviceAccount: | ||||
|   # Specifies whether a ServiceAccount should be created | ||||
|   create: true | ||||
|  | ||||
|   # The name of the ServiceAccount to use. | ||||
|   # If not set and create is true, a name is generated using the fullname template | ||||
|   name: | ||||
|  | ||||
| ## Configure the ingress object to hook into existing infastructure | ||||
| ### ref : http://kubernetes.io/docs/user-guide/ingress/ | ||||
| ### | ||||
| ingress: | ||||
|   enabled: false | ||||
|   pathType: Prefix | ||||
|   annotations: | ||||
|     {} | ||||
|   # ingressClassName: "nxinx" | ||||
|   annotations: {} | ||||
|     # kubernetes.io/ingress.class: "nginx" | ||||
|   path: / | ||||
|   tls: {} | ||||
|   #  - secretName: chart-example-tls | ||||
|   #    hosts: | ||||
|   #      - chart-example.local | ||||
|  | ||||
| service: | ||||
|   annotations: {} | ||||
|   # service.beta.kubernetes.io/aws-load-balancer-internal: "0.0.0.0/0" | ||||
|  | ||||
|   labels: {} | ||||
|   # key: value | ||||
|  | ||||
|   ## ServiceType | ||||
|   ## ref: https://kubernetes.io/docs/user-guide/services/#publishing-services---service-types | ||||
|   type: ClusterIP | ||||
|  | ||||
|   ## Optional static port assignment for service type NodePort. | ||||
|   # nodePort: 30000 | ||||
|  | ||||
|   port: 80 | ||||
|  | ||||
| ## Optional custom labels for the deployment resource. | ||||
| deploymentLabels: {} | ||||
|  | ||||
| ## Optional Pod Labels. | ||||
| podLabels: {} | ||||
|  | ||||
| ## Optional Pod Annotations. | ||||
| podAnnotations: | ||||
|   {} | ||||
|   # prometheus.io/port: "9458" | ||||
|   # prometheus.io/path: "/metrics" | ||||
|   # prometheus.io/scrape: "true" | ||||
|  | ||||
| ## Optional Prometheus scraping Settings | ||||
| prometheusScraping: | ||||
|   enabled: true | ||||
|   port: 9458 | ||||
|  | ||||
| ## Liveness and readiness probe values | ||||
| ## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes | ||||
| ## | ||||
| livenessProbe: | ||||
|   enabled: true | ||||
|   initialDelaySeconds: 60 | ||||
|   periodSeconds: 15 | ||||
|   timeoutSeconds: 5 | ||||
|   failureThreshold: 3 | ||||
|   successThreshold: 1 | ||||
|  | ||||
| readinessProbe: | ||||
|   enabled: true | ||||
|   initialDelaySeconds: 10 | ||||
|   periodSeconds: 15 | ||||
|   timeoutSeconds: 5 | ||||
|   failureThreshold: 3 | ||||
|   successThreshold: 1 | ||||
|  | ||||
| # # # # # # # # # # # # # # # # # | ||||
| #   M I C R O S E R V I C E S   # | ||||
| #  Only available to E.E users  # | ||||
| # # # # # # # # # # # # # # # # # | ||||
|  | ||||
| ## Deploy as microservices? | ||||
| # Monolithic architecture, by default | ||||
| microservices:  | ||||
|   enabled: false | ||||
|  | ||||
|   ## Parameters for each deployment:  | ||||
|   presence:  | ||||
|     replicas: 1 | ||||
|   ddpStreamer: | ||||
|     replicas: 1  | ||||
|   streamHub:  | ||||
|     replicas: 1 | ||||
|   accounts:  | ||||
|     replicas: 1 | ||||
|   authorization: | ||||
|     replicas: 1  | ||||
|   nats:  | ||||
|     replicas: 1  | ||||
|  | ||||
|   ## Parameters for each Kubernetes service | ||||
|   # NOTE: reserved for future usage still | ||||
|   presenceService:  | ||||
|   ddpStreamerService:  | ||||
|   natsService:  | ||||
|   streamHubService:  | ||||
|   accountsService:  | ||||
|   authorizationService:  | ||||
|   natsService:  | ||||
| @@ -1,131 +0,0 @@ | ||||
| apiVersion: v1 | ||||
| kind: Namespace | ||||
| metadata: | ||||
|   name: searx | ||||
|   labels: | ||||
|     app: searx | ||||
|  | ||||
| --- | ||||
|  | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: searx | ||||
|   name: searx-data-nfs | ||||
|   labels: | ||||
|     directory: searx | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   capacity: | ||||
|     storage: "5Gi" | ||||
|   volumeMode: Filesystem | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   nfs: | ||||
|     path: /searx | ||||
|     server: 10.43.239.43 # assigned to nfs-server service. Won't change as long as service is not redeployed | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: searx | ||||
|   name: searx-data-nfs | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "5Gi" | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       directory: searx | ||||
|  | ||||
| --- | ||||
|  | ||||
| apiVersion: apps/v1 | ||||
| kind: Deployment | ||||
| metadata: | ||||
|   name: searx | ||||
|   namespace: searx | ||||
|   labels: | ||||
|     app: searx | ||||
| spec: | ||||
|   replicas: 1 | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       app: searx | ||||
|   template: | ||||
|     metadata: | ||||
|       labels: | ||||
|         app: searx | ||||
|     spec: | ||||
|       containers: | ||||
|       - name: searx | ||||
|         image: searxng/searxng | ||||
|         tty: true | ||||
|         ports: | ||||
|           - containerPort: 8080 | ||||
|         volumeMounts: | ||||
|         - mountPath: /etc/searxng | ||||
|           name: searx-data | ||||
|         env: | ||||
|           - name: BASE_URL | ||||
|             value: https://search.kluster.moll.re | ||||
|           - name: INSTANCE_NAME | ||||
|             value: searx | ||||
|         resources: | ||||
|             requests: | ||||
|               cpu: "100m" | ||||
|               memory: "100Mi" | ||||
|             limits: | ||||
|               cpu: "1" | ||||
|               memory: "500Mi" | ||||
|  | ||||
|  | ||||
|       volumes: | ||||
|       - name: searx-data | ||||
|         persistentVolumeClaim: | ||||
|           claimName: searx-data-nfs | ||||
|  | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: Service | ||||
| metadata: | ||||
|   name: searx | ||||
|   namespace: searx | ||||
|  | ||||
| spec: | ||||
|   type: ClusterIP | ||||
|   ports: | ||||
|     - name: http | ||||
|       port: 8080 | ||||
|   selector: | ||||
|     app: searx | ||||
|  | ||||
| --- | ||||
|  | ||||
| kind: Ingress | ||||
| apiVersion: networking.k8s.io/v1 | ||||
| metadata: | ||||
|   namespace: searx | ||||
|   name: searx-ingress | ||||
|   annotations: | ||||
|     kubernetes.io/ingress.class: nginx | ||||
|     cert-manager.io/cluster-issuer: cloudflare-letsencrypt-prod | ||||
| spec: | ||||
|   tls: | ||||
|   - hosts: | ||||
|     - search.kluster.moll.re | ||||
|     secretName: cloudflare-letsencrypt-issuer-account-key | ||||
|   rules: | ||||
|     - host: search.kluster.moll.re | ||||
|       http: | ||||
|         paths: | ||||
|         - backend: | ||||
|             service: | ||||
|               name: searx | ||||
|               port:  | ||||
|                 number: 8080 | ||||
|           path: / | ||||
|           pathType: Prefix | ||||
| @@ -1,40 +0,0 @@ | ||||
| kind: Deployment | ||||
| apiVersion: apps/v1 | ||||
| metadata: | ||||
|   name: skooner | ||||
|   namespace: kube-system | ||||
| spec: | ||||
|   replicas: 1 | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       k8s-app: skooner | ||||
|   template: | ||||
|     metadata: | ||||
|       labels: | ||||
|         k8s-app: skooner | ||||
|     spec: | ||||
|       containers: | ||||
|       - name: skooner | ||||
|         image: nerdinexile/skooner:latest | ||||
|         ports: | ||||
|         - containerPort: 4654 | ||||
|         livenessProbe: | ||||
|           httpGet: | ||||
|             scheme: HTTP | ||||
|             path: / | ||||
|             port: 4654 | ||||
|           initialDelaySeconds: 30 | ||||
|           timeoutSeconds: 30 | ||||
|  | ||||
| --- | ||||
| kind: Service | ||||
| apiVersion: v1 | ||||
| metadata: | ||||
|   name: skooner | ||||
|   namespace: kube-system | ||||
| spec: | ||||
|   ports: | ||||
|     - port: 80 | ||||
|       targetPort: 4654 | ||||
|   selector: | ||||
|     k8s-app: skooner | ||||
| @@ -1,28 +0,0 @@ | ||||
| kind: Ingress | ||||
| apiVersion: networking.k8s.io/v1 | ||||
| metadata: | ||||
|   name: skooner | ||||
|   namespace: kube-system | ||||
|   annotations: | ||||
|     kubernetes.io/ingress.class: nginx | ||||
|     cert-manager.io/cluster-issuer: cloudflare-letsencrypt-prod | ||||
|  | ||||
|  | ||||
| spec: | ||||
|   tls: | ||||
|   - hosts: | ||||
|     - dashboard.kluster.moll.re | ||||
|     secretName: cloudflare-letsencrypt-issuer-account-key | ||||
|  | ||||
|   rules: | ||||
|     - host: dashboard.kluster.moll.re | ||||
|       http: | ||||
|         paths: | ||||
|         - backend: | ||||
|             service: | ||||
|               name: skooner | ||||
|               port: | ||||
|                 number:  80 | ||||
|           path: / | ||||
|           pathType: Prefix | ||||
|    | ||||
| @@ -1,115 +0,0 @@ | ||||
| apiVersion: v1 | ||||
| kind: Namespace | ||||
| metadata: | ||||
|   name: storage | ||||
|   labels: | ||||
|     app: storage | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   name: local-pv | ||||
|   namespace: storage | ||||
| spec: | ||||
|   capacity: | ||||
|     storage: 400Gi | ||||
|   accessModes: | ||||
|   - ReadWriteOnce | ||||
|   persistentVolumeReclaimPolicy: Retain | ||||
|   storageClassName: local-storage | ||||
|   local: | ||||
|     path: "/mnt/data/" | ||||
|   nodeAffinity: | ||||
|     required: | ||||
|       nodeSelectorTerms: | ||||
|       - matchExpressions: | ||||
|         - key: hdd # only one node will have a drive attached to it! | ||||
|           operator: In | ||||
|           values: | ||||
|           - enabled | ||||
|  | ||||
| --- | ||||
| kind: PersistentVolumeClaim | ||||
| apiVersion: v1 | ||||
| metadata: | ||||
|   name: local-claim | ||||
|   namespace: storage | ||||
| spec: | ||||
|   accessModes: | ||||
|   - ReadWriteOnce | ||||
|   storageClassName: local-storage | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: 400Gi | ||||
|        | ||||
| --- | ||||
| apiVersion: apps/v1 | ||||
| kind: Deployment | ||||
| metadata: | ||||
|   name: nfs-server | ||||
|   namespace: storage | ||||
|   labels: | ||||
|     app: nfs-server | ||||
| spec: | ||||
|   replicas: 1 | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       app: nfs-server | ||||
|   template: | ||||
|     metadata: | ||||
|       labels: | ||||
|         app: nfs-server | ||||
|         name: nfs-server | ||||
|     spec: | ||||
|       containers: | ||||
|       - name: nfs-server | ||||
|         image: itsthenetwork/nfs-server-alpine:11-arm | ||||
|         env: | ||||
|           - name: SHARED_DIRECTORY | ||||
|             value: /exports | ||||
|           - name: PERMITTED | ||||
|             value: 10.42.*.* | ||||
|             # ,192.168.1.112 | ||||
|         ports: | ||||
|           - name: nfs | ||||
|             containerPort: 2049 | ||||
|           - name: mountd | ||||
|             containerPort: 20048 | ||||
|           - name: rpcbind | ||||
|             containerPort: 111 | ||||
|         securityContext: | ||||
|           privileged: true | ||||
|         volumeMounts: | ||||
|           - mountPath: /exports | ||||
|             name: mypvc | ||||
|       volumes: | ||||
|         - name: mypvc | ||||
|           persistentVolumeClaim: | ||||
|             claimName: local-claim | ||||
|       nodeSelector: | ||||
|         hdd: enabled | ||||
|  | ||||
| --- | ||||
| kind: Service | ||||
| apiVersion: v1 | ||||
| metadata: | ||||
|   name: nfs-server | ||||
|   namespace: storage | ||||
| spec: | ||||
|   type: LoadBalancer | ||||
|   loadBalancerSourceRanges: | ||||
|   - 192.168.1.112/31 | ||||
|   #restricted to archspectres ip only! | ||||
|   - 192.168.1.134/31 | ||||
|   # and amd node | ||||
|   - 192.168.1.150/24 | ||||
|   # and more | ||||
|   ports: | ||||
|     - name: nfs | ||||
|       port: 2049 | ||||
|     - name: mountd | ||||
|       port: 20048 | ||||
|     - name: rpcbind | ||||
|       port: 111 | ||||
|   selector: | ||||
|     app: nfs-server | ||||
| @@ -1,59 +0,0 @@ | ||||
| # apiVersion: traefik.containo.us/v1alpha1 | ||||
| # kind: IngressRoute | ||||
| # metadata: | ||||
| #   name: syncthing-ingress | ||||
| #   namespace: syncthing | ||||
| # spec: | ||||
| #   entryPoints: | ||||
| #     - websecure | ||||
| #   routes: | ||||
| #     - match: Host(`syncthing.kluster.moll.re`) | ||||
| #       kind: Rule | ||||
| #       services: | ||||
| #         - name: syncthing | ||||
| #           port: 8384 | ||||
| #   tls: | ||||
| #     certResolver: default-tls | ||||
|  | ||||
| apiVersion: traefik.containo.us/v1alpha1 | ||||
| kind: Middleware | ||||
| metadata: | ||||
|   name: authentik-auth | ||||
|   namespace: syncthing | ||||
| spec: | ||||
|   forwardAuth: | ||||
|     address: https://syncthing.kluster.moll.re/outpost.goauthentik.io/auth/traefik | ||||
|     trustForwardHeader: true | ||||
|     authResponseHeaders: | ||||
|       - X-authentik-username | ||||
|       - X-authentik-groups | ||||
|       - X-authentik-email | ||||
|       - X-authentik-name | ||||
|       - X-authentik-uid | ||||
|       - X-authentik-jwt | ||||
|       - X-authentik-meta-jwks | ||||
|       - X-authentik-meta-outpost | ||||
|       - X-authentik-meta-provider | ||||
|       - X-authentik-meta-app | ||||
|       - X-authentik-meta-version | ||||
|  | ||||
| --- | ||||
|  | ||||
| apiVersion: traefik.containo.us/v1alpha1 | ||||
| kind: IngressRoute | ||||
| metadata: | ||||
|   name: syncthing-ingress | ||||
|   namespace: syncthing | ||||
| spec: | ||||
|   entryPoints: | ||||
|     - websecure | ||||
|   routes: | ||||
|     - match: Host(`syncthing.kluster.moll.re`) | ||||
|       kind: Rule | ||||
|       middlewares: | ||||
|         - name: authentik-auth | ||||
|       services: | ||||
|         - name: syncthing | ||||
|           port: 8384 | ||||
|   tls: | ||||
|     certResolver: default-tls | ||||
| @@ -1,37 +0,0 @@ | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: syncthing | ||||
|   name: syncthing-nfs | ||||
|   labels: | ||||
|     directory: syncthing | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   capacity: | ||||
|     storage: "100Gi" | ||||
|   volumeMode: Filesystem | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   nfs: | ||||
|     path: /data-sync | ||||
|     server: 10.43.239.43 # assigned to nfs-server service. Won't change as long as service is not redeployed | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: syncthing | ||||
|   name: syncthing-nfs | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "100Gi" | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       directory: syncthing | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -1,56 +0,0 @@ | ||||
| # | ||||
| # IMPORTANT NOTE | ||||
| # | ||||
| # This chart inherits from our common library chart. You can check the default values/options here: | ||||
| # https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml | ||||
| # | ||||
|  | ||||
| image: | ||||
|   # -- image repository | ||||
|   repository: syncthing/syncthing | ||||
|   # -- image tag | ||||
|   tag: 1.18.2 | ||||
|   # -- image pull policy | ||||
|   pullPolicy: IfNotPresent | ||||
|  | ||||
| # -- Configures service settings for the chart. | ||||
| # @default -- See values.yaml | ||||
| service: | ||||
|   main: | ||||
|     ports: | ||||
|       http: | ||||
|         port: 8384 | ||||
|   listen: | ||||
|     enabled: true | ||||
|     type: NodePort | ||||
|     externalTrafficPolicy: Local | ||||
|     ports: | ||||
|       listen: | ||||
|         enabled: true | ||||
|         port: 22000 | ||||
|         protocol: TCP | ||||
|         targetPort: 22000 | ||||
|   discovery: | ||||
|     enabled: true | ||||
|     type: NodePort | ||||
|     externalTrafficPolicy: Local | ||||
|     ports: | ||||
|       discovery: | ||||
|         enabled: true | ||||
|         port: 21027 | ||||
|         protocol: UDP | ||||
|         targetPort: 21027 | ||||
|  | ||||
| ingress: | ||||
|   # -- Enable and configure ingress settings for the chart under this key. | ||||
|   # @default -- See values.yaml | ||||
|   main: | ||||
|     enabled: false | ||||
|  | ||||
| # -- Configure persistence settings for the chart under this key. | ||||
| # @default -- See values.yaml | ||||
| persistence: | ||||
|   data: | ||||
|     enabled: true | ||||
|     mountPath: /var/syncthing | ||||
|     existingClaim: syncthing-nfs | ||||
| @@ -1,116 +0,0 @@ | ||||
| ## Default values.yaml for Telegraf | ||||
| ## This is a YAML-formatted file. | ||||
| ## ref: https://hub.docker.com/r/library/telegraf/tags/ | ||||
|  | ||||
| replicaCount: 1 | ||||
|  | ||||
| image: | ||||
|   repo: "telegraf" | ||||
|   tag: "1.23" | ||||
|   pullPolicy: IfNotPresent | ||||
|  | ||||
| podAnnotations: {} | ||||
|  | ||||
| podLabels: {} | ||||
|  | ||||
| imagePullSecrets: [] | ||||
|  | ||||
| ## Configure args passed to Telegraf containers | ||||
| args: [] | ||||
|  | ||||
|  | ||||
| # The name of a secret in the same kubernetes namespace which contains values to | ||||
| # be added to the environment (must be manually created) | ||||
| # This can be useful for auth tokens, etc. | ||||
|  | ||||
| # envFromSecret: "telegraf-tokens" | ||||
|  | ||||
|  | ||||
| env: | ||||
|   - name: HOSTNAME | ||||
|     value: "telegraf-polling-service" | ||||
|  | ||||
|  | ||||
|  | ||||
| ## Configure resource requests and limits | ||||
| ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ | ||||
| resources: {} | ||||
|   # requests: | ||||
|   #   memory: 128Mi | ||||
|   #   cpu: 100m | ||||
|   # limits: | ||||
|   #   memory: 128Mi | ||||
|   #   cpu: 100m | ||||
|  | ||||
| ## Node labels for pod assignment | ||||
| ## ref: https://kubernetes.io/docs/user-guide/node-selection/ | ||||
| nodeSelector: {} | ||||
|  | ||||
| ## Affinity for pod assignment | ||||
| ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity | ||||
| ## | ||||
| affinity: # launch on same node as nginx controller so that log file is readable | ||||
|   podAffinity: | ||||
|     requiredDuringSchedulingIgnoredDuringExecution: | ||||
|     - labelSelector: | ||||
|         matchExpressions: | ||||
|         - key: app.kubernetes.io/instance | ||||
|           operator: In | ||||
|           values: | ||||
|           - ingress-nginx | ||||
|  | ||||
|  | ||||
| ## Tolerations for pod assignment | ||||
| ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ | ||||
| ## | ||||
| tolerations: [] | ||||
| # - key: "key" | ||||
| #   operator: "Equal|Exists" | ||||
| #   value: "value" | ||||
| #   effect: "NoSchedule|PreferNoSchedule|NoExecute(1.6 only)" | ||||
|  | ||||
| service: | ||||
|   enabled: false | ||||
|   type: ClusterIP | ||||
|   annotations: {} | ||||
|  | ||||
|  | ||||
|  | ||||
| ## Exposed telegraf configuration | ||||
| ## For full list of possible values see `/docs/all-config-values.yaml` and `/docs/all-config-values.toml` | ||||
| ## ref: https://docs.influxdata.com/telegraf/v1.1/administration/configuration/ | ||||
| config: | ||||
|   agent: | ||||
|     interval: "10s" | ||||
|     round_interval: true | ||||
|     metric_batch_size: 1000 | ||||
|     metric_buffer_limit: 10000 | ||||
|     collection_jitter: "0s" | ||||
|     flush_interval: "10s" | ||||
|     flush_jitter: "0s" | ||||
|     precision: "" | ||||
|     debug: false | ||||
|     quiet: false | ||||
|     logfile: "" | ||||
|     hostname: "$HOSTNAME" | ||||
|     omit_hostname: false | ||||
|   processors: | ||||
|     - enum: | ||||
|         mapping: | ||||
|           field: "status" | ||||
|           dest: "status_code" | ||||
|           value_mappings: | ||||
|             healthy: 1 | ||||
|             problem: 2 | ||||
|             critical: 3 | ||||
|   outputs: | ||||
|     - influxdb_v2: | ||||
|         urls: | ||||
|           - "http://influxdb-influxdb2.monitoring:80" | ||||
|         token: N_jNm1hZTfyhJneTJj2G357mQ7EJdNzdvebjSJX6JkbyaXNup_IAqeYowblMgV8EjLypNvauTl27ewJvI_rbqQ== | ||||
|         organization: "influxdata" | ||||
|         bucket: "kluster" | ||||
|   inputs: | ||||
|     - prometheus: | ||||
|         urls: | ||||
|           - "http://10.42.0.218:9113" | ||||
| @@ -1,25 +0,0 @@ | ||||
| apiVersion: networking.k8s.io/v1 | ||||
| kind: Ingress | ||||
| metadata: | ||||
|   name: trilium-ingress | ||||
|   namespace: trilium | ||||
|   annotations: | ||||
|     kubernetes.io/ingress.class: nginx | ||||
|     cert-manager.io/cluster-issuer: cloudflare-letsencrypt-prod | ||||
|  | ||||
| spec: | ||||
|   tls: | ||||
|   - hosts: [ 'trilium.kluster.moll.re' ] | ||||
|     secretName: cloudflare-letsencrypt-issuer-account-key | ||||
|   rules: | ||||
|  | ||||
|   - host: trilium.kluster.moll.re | ||||
|     http: | ||||
|       paths: | ||||
|       - pathType: Prefix | ||||
|         path: / | ||||
|         backend: | ||||
|           service: | ||||
|             name: trilium-trilium-notes | ||||
|             port: | ||||
|               number: 8080 | ||||
| @@ -1,37 +0,0 @@ | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: trilium | ||||
|   name: trilium-data-nfs | ||||
|   labels: | ||||
|     directory: trilium | ||||
| spec: | ||||
|   storageClassName: slow | ||||
|   capacity: | ||||
|     storage: "2Gi" | ||||
|   volumeMode: Filesystem | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   nfs: | ||||
|     path: /trilium | ||||
|     server: 10.43.239.43 # assigned to nfs-server service. Won't change as long as service is not redeployed | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: trilium | ||||
|   name: trilium-data-nfs | ||||
| spec: | ||||
|   storageClassName: slow | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "2Gi" | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       directory: trilium | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -1,78 +0,0 @@ | ||||
| # Default values for trilium-notes. | ||||
| # This is a YAML-formatted file. | ||||
| # Declare variables to be passed into your templates. | ||||
|  | ||||
| replicaCount: 1 | ||||
|  | ||||
| image: | ||||
|   repository: zadam/trilium | ||||
|   tag: "latest" | ||||
|   pullPolicy: IfNotPresent | ||||
|  | ||||
| imagePullSecrets: [] | ||||
| nameOverride: "" | ||||
| fullnameOverride: "" | ||||
|  | ||||
| serviceAccount: | ||||
|   create: true | ||||
|   annotations: {} | ||||
|   # If not set and create is true, a name is generated using the fullname template | ||||
|   name: | ||||
|  | ||||
| podSecurityContext: | ||||
|   fsGroup: 10000 | ||||
|  | ||||
| securityContext: | ||||
|   capabilities: | ||||
|     drop: | ||||
|       - ALL | ||||
|   runAsNonRoot: true | ||||
|   runAsUser: 10000 | ||||
|   allowPrivilegeEscalation: false | ||||
|  | ||||
| service: | ||||
|   type: ClusterIP | ||||
|   port: 8080 | ||||
|  | ||||
| dataDir: /srv/trilium-data | ||||
|  | ||||
| persistentVolume: | ||||
|   enabled: true | ||||
|   existingClaim: trilium-data-nfs | ||||
|  | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   annotations: {} | ||||
|   size: 2Gi | ||||
|  | ||||
| ingress: | ||||
|   enabled: false | ||||
|   annotations: {} | ||||
|     # kubernetes.io/ingress.class: nginx | ||||
|     # kubernetes.io/tls-acme: "true" | ||||
|   hosts: | ||||
|     - host: chart-example.local | ||||
|       paths: [] | ||||
|   tls: [] | ||||
|   #  - secretName: chart-example-tls | ||||
|   #    hosts: | ||||
|   #      - chart-example.local | ||||
|  | ||||
| resources: {} | ||||
|   # We usually recommend not to specify default resources and to leave this as a conscious | ||||
|   # choice for the user. This also increases chances charts run on environments with little | ||||
|   # resources, such as Minikube. If you do want to specify resources, uncomment the following | ||||
|   # lines, adjust them as necessary, and remove the curly braces after 'resources:'. | ||||
|   # limits: | ||||
|   #   cpu: 100m | ||||
|   #   memory: 128Mi | ||||
|   # requests: | ||||
|   #   cpu: 100m | ||||
|   #   memory: 128Mi | ||||
|  | ||||
| nodeSelector: {} | ||||
|  | ||||
| tolerations: [] | ||||
|  | ||||
| affinity: {} | ||||
|  | ||||
| @@ -1,95 +0,0 @@ | ||||
|  | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: webtop | ||||
|   name: webtop-data-nfs | ||||
|   labels: | ||||
|     directory: webtop | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   capacity: | ||||
|     storage: "15Gi" | ||||
|   volumeMode: Filesystem | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   nfs: | ||||
|     path: /webtop | ||||
|     server: 10.43.239.43 # assigned to nfs-server service. Won't change as long as service is not redeployed | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: webtop | ||||
|   name: webtop-data-nfs | ||||
| spec: | ||||
|   storageClassName: fast | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "15Gi" | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       directory: webtop | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| --- | ||||
| apiVersion: apps/v1 | ||||
| kind: Deployment | ||||
| metadata: | ||||
|   name: webtop | ||||
|   namespace: webtop | ||||
|   labels: | ||||
|     app: webtop | ||||
| spec: | ||||
|   replicas: 1 | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       app: webtop | ||||
|   template: | ||||
|     metadata: | ||||
|       labels: | ||||
|         app: webtop | ||||
|     spec: | ||||
|       containers: | ||||
|       - name: webtop | ||||
|         image: lscr.io/linuxserver/webtop:ubuntu-mate | ||||
|         tty: true | ||||
|         volumeMounts: | ||||
|         - mountPath: /config | ||||
|           name: webtop-data-nfs | ||||
|         env: | ||||
|           - name: PUID | ||||
|             value: "1000" | ||||
|           - name: PGID | ||||
|             value: "1000" | ||||
|           - name: TZ | ||||
|             value: "Europe/Berlin" | ||||
|  | ||||
|         ports: | ||||
|           - containerPort: 3000 | ||||
|  | ||||
|  | ||||
|       volumes: | ||||
|       - name: webtop-data-nfs | ||||
|         persistentVolumeClaim: | ||||
|           claimName: webtop-data-nfs | ||||
|  | ||||
|  | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: Service | ||||
| metadata: | ||||
|   name: webtop | ||||
|   namespace: webtop | ||||
|  | ||||
| spec: | ||||
|   ports: | ||||
|     - name: webtop | ||||
|       port: 3000 | ||||
|   selector: | ||||
|     app: webtop | ||||
		Reference in New Issue
	
	Block a user