diff --git a/.ci/pipeline.yaml b/.ci/pipeline.yaml
index 44ac3e52e0..ae3bbedf93 100644
--- a/.ci/pipeline.yaml
+++ b/.ci/pipeline.yaml
@@ -34,7 +34,7 @@ spec:
- name: CONTEXT
value: ./tools
- name: IMAGE
- value: registry.khuedoan.com/tools:latest
+ value: registry.jupiter.mein.nl/tools:latest
- name: EXTRA_ARGS
value:
- --cache=true
@@ -49,7 +49,7 @@ spec:
workspaces:
- name: source
stepTemplate:
- image: registry.khuedoan.com/tools:latest
+ image: registry.jupiter.mein.nl/tools:latest
workingDir: /workspace/source
steps:
- name: run
@@ -74,7 +74,7 @@ spec:
secret:
secretName: terraform-secrets
stepTemplate:
- image: registry.khuedoan.com/tools:latest
+ image: registry.jupiter.mein.nl/tools:latest
workingDir: /workspace/source/external
volumeMounts:
- name: terraform-secrets
diff --git a/.ci/tasks/external.yaml b/.ci/tasks/external.yaml
new file mode 100644
index 0000000000..20a702973e
--- /dev/null
+++ b/.ci/tasks/external.yaml
@@ -0,0 +1,36 @@
+apiVersion: tekton.dev/v1beta1
+kind: Task
+metadata:
+ name: terraform-external
+spec:
+ workspaces:
+ - name: source
+ stepTemplate:
+ image: hashicorp/terraform:1.3.3
+ workingDir: /workspace/source/external
+ volumeMounts:
+ - name: terraform-secrets
+ mountPath: /root/.terraform.d/credentials.tfrc.json
+ subPath: credentials.tfrc.json
+ - name: terraform-secrets
+ mountPath: /workspace/source/external/terraform.tfvars
+ subPath: terraform.tfvars
+ command:
+ - terraform
+ volumes:
+ - name: terraform-secrets
+ secret:
+ secretName: terraform-secrets
+ steps:
+ - name: init
+ args:
+ - init
+ - name: plan
+ args:
+ - plan
+ - -out=tfplan
+ - name: apply
+ args:
+ - apply
+ - -auto-approve
+ - tfplan
diff --git a/.ci/tasks/lint.yaml b/.ci/tasks/lint.yaml
new file mode 100644
index 0000000000..0c863ce91d
--- /dev/null
+++ b/.ci/tasks/lint.yaml
@@ -0,0 +1,30 @@
+apiVersion: tekton.dev/v1beta1
+kind: Task
+metadata:
+ name: lint
+spec:
+ workspaces:
+ - name: source
+ steps:
+ - name: ansible
+ image: cytopia/ansible-lint
+ workingDir: /workspace/source/metal
+ command:
+ - ansible-lint
+ args:
+ - -v
+ - name: yaml
+ image: cytopia/yamllint
+ command:
+ - yamllint
+ args:
+ - .
+ - name: terraform
+ image: hashicorp/terraform:1.3.3
+ command:
+ - terraform
+ args:
+ - fmt
+ - -recursive
+ - -check
+ - -diff
diff --git a/.gitignore b/.gitignore
index 636d35689d..3f94ce3f3a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,7 @@
.venv/
+.ssh/
book/
+.idea
*.iso
*.log
@@ -7,3 +9,7 @@ book/
*.tgz
*kubeconfig.yaml
Chart.lock
+.DS_Store
+go.sum
+
+config.js
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000000..21cfc46d92
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,22 @@
+{
+ "workbench.colorCustomizations": {
+ "activityBar.activeBackground": "#65c89b",
+ "activityBar.activeBorder": "#945bc4",
+ "activityBar.background": "#65c89b",
+ "activityBar.foreground": "#15202b",
+ "activityBar.inactiveForeground": "#15202b99",
+ "activityBarBadge.background": "#945bc4",
+ "activityBarBadge.foreground": "#e7e7e7",
+ "sash.hoverBorder": "#65c89b",
+ "statusBar.background": "#42b883",
+ "statusBar.foreground": "#15202b",
+ "statusBarItem.hoverBackground": "#359268",
+ "statusBarItem.remoteBackground": "#42b883",
+ "statusBarItem.remoteForeground": "#15202b",
+ "titleBar.activeBackground": "#42b883",
+ "titleBar.activeForeground": "#15202b",
+ "titleBar.inactiveBackground": "#42b88399",
+ "titleBar.inactiveForeground": "#15202b99"
+ },
+ "peacock.color": "#42b883"
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index 56feb41e54..142561d6f5 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,9 @@
-# Khue's Homelab
+# Jupiter Mein Homelab - Fork from Khuedoan
-**[Features](#features) • [Get Started](#get-started) • [Documentation](https://homelab.khuedoan.com)**
+**[Features](#features) • [Get Started](#get-started) • [Documentation](https://homelab.jupiter.mein.nl)**
[](https://github.com/khuedoan/homelab/tags)
-[](https://homelab.khuedoan.com)
+[](https://homelab.jupiter.mein.nl)
[](https://www.gnu.org/licenses/gpl-3.0.html)
[](https://github.com/khuedoan/homelab)
@@ -217,25 +217,25 @@ They can't capture all the project's features, but they are sufficient to get a
## Get Started
-- [Try it out locally](https://homelab.khuedoan.com/installation/sandbox) without any hardware (just 4 commands!)
-- [Deploy on real hardware](https://homelab.khuedoan.com/installation/production/prerequisites) for production workload
+- [Try it out locally](https://homelab.jupiter.mein.nl/installation/sandbox) without any hardware (just 4 commands!)
+- [Deploy on real hardware](https://homelab.jupiter.mein.nl/installation/production/prerequisites) for production workload
## Roadmap
-See [roadmap](https://homelab.khuedoan.com/reference/roadmap) and [open issues](https://github.com/khuedoan/homelab/issues) for a list of proposed features and known issues.
+See [roadmap](https://homelab.jupiter.mein.nl/reference/roadmap) and [open issues](https://github.com/khuedoan/homelab/issues) for a list of proposed features and known issues.
## Contributing
Any contributions you make are greatly appreciated.
-Please see [contributing guide](https://homelab.khuedoan.com/reference/contributing) for more information.
+Please see [contributing guide](https://homelab.jupiter.mein.nl/reference/contributing) for more information.
## License
Copyright © 2020 - 2022 Khue Doan
Distributed under the GPLv3 License.
-See [license page](https://homelab.khuedoan.com/reference/license) or `LICENSE.md` file for more information.
+See [license page](https://homelab.jupiter.mein.nl/reference/license) or `LICENSE.md` file for more information.
## Acknowledgements
@@ -274,3 +274,4 @@ If you feel you're missing from this list, feel free to add yourself in a PR.
## Stargazers over time
[](https://starchart.cc/khuedoan/homelab)
+>>>>>>> 686fea57645ab65df8b71c54814dbc01827d48a6
diff --git a/apps/hajimari/Chart.yaml b/apps/hajimari/Chart.yaml
index be25f924f7..dfae8c78b2 100644
--- a/apps/hajimari/Chart.yaml
+++ b/apps/hajimari/Chart.yaml
@@ -3,5 +3,5 @@ name: hajimari
version: 0.0.0
dependencies:
- name: hajimari
- version: 1.2.0
+ version: 2.0.2
repository: https://hajimari.io
diff --git a/apps/hajimari/values.yaml b/apps/hajimari/values.yaml
index 1814eb1536..000f32b201 100644
--- a/apps/hajimari/values.yaml
+++ b/apps/hajimari/values.yaml
@@ -2,7 +2,7 @@ hajimari:
image: # TODO remove this https://github.com/toboshii/hajimari/blob/main/charts/hajimari/values.yaml
tag: v0.2.0
env:
- TZ: Asia/Ho_Chi_Minh
+ TZ: Europe/Amsterdam
ingress:
main:
enabled: true
@@ -11,7 +11,7 @@ hajimari:
cert-manager.io/cluster-issuer: letsencrypt-prod
hajimari.io/enable: 'false'
hosts:
- - host: &host home.khuedoan.com
+ - host: &host home.jupiter.mein.nl
paths:
- path: /
pathType: Prefix
@@ -27,9 +27,9 @@ hajimari:
- name: Homelab
links:
- name: Documentation
- url: https://homelab.khuedoan.com
+ url: https://homelab.jupiter.mein.nl
- name: Public GitHub repository
- url: https://github.com/khuedoan/homelab
+ url: https://github.com/infratron/homelab
- name: Managed services
links:
- name: Terraform Cloud
diff --git a/apps/jellyfin/Chart.yaml b/apps/jellyfin/Chart.yaml
index 1969e4e212..43431db22a 100644
--- a/apps/jellyfin/Chart.yaml
+++ b/apps/jellyfin/Chart.yaml
@@ -3,5 +3,5 @@ name: jellyfin
version: 0.0.0
dependencies:
- name: jellyfin
- version: 9.3.0
+ version: 9.5.3
repository: https://k8s-at-home.com/charts/
diff --git a/apps/jellyfin/values.yaml b/apps/jellyfin/values.yaml
index 8ff8cb23a5..538ecb0591 100644
--- a/apps/jellyfin/values.yaml
+++ b/apps/jellyfin/values.yaml
@@ -8,7 +8,7 @@ jellyfin:
hajimari.io/appName: Jellyfin
hajimari.io/icon: filmstrip
hosts:
- - host: &host jellyfin.khuedoan.com
+ - host: &host jellyfin.jupiter.mein.nl
paths:
- path: /
pathType: Prefix
diff --git a/apps/matrix/values.yaml b/apps/matrix/values.yaml
index d996c7cad4..253100b95d 100644
--- a/apps/matrix/values.yaml
+++ b/apps/matrix/values.yaml
@@ -4,12 +4,12 @@ elementweb:
className: nginx
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
- external-dns.alpha.kubernetes.io/target: "homelab-tunnel.khuedoan.com"
+ external-dns.alpha.kubernetes.io/target: "jupiter-tunnel.mein.nl"
external-dns.alpha.kubernetes.io/cloudflare-proxied: "true"
hajimari.io/appName: Chat
hajimari.io/icon: chat
hosts:
- - host: &frontend_host chat.khuedoan.com
+ - host: &frontend_host chat.mein.nl
paths:
- path: /
pathType: Prefix
@@ -19,8 +19,8 @@ elementweb:
- *frontend_host
config:
default:
- base_url: https://matrix.khuedoan.com
- server_name: khuedoan.com
+ base_url: https://matrix.mein.nl
+ server_name: mein.nl
dendrite:
polylith: false
@@ -29,7 +29,7 @@ dendrite:
pullPolicy: IfNotPresent
configuration:
version: 2
- servername: &backend_host matrix.khuedoan.com
+ servername: &backend_host matrix.mein.nl
database:
host: matrix-postgresql:5432
user: dendrite
@@ -72,7 +72,7 @@ dendrite:
className: nginx
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
- external-dns.alpha.kubernetes.io/target: "homelab-tunnel.khuedoan.com"
+ external-dns.alpha.kubernetes.io/target: "jupiter-tunnel.mein.nl"
external-dns.alpha.kubernetes.io/cloudflare-proxied: "true"
nginx.ingress.kubernetes.io/proxy-body-size: 32m
hajimari.io/enable: 'false'
diff --git a/apps/paperless/Chart.yaml b/apps/paperless/Chart.yaml
index 01b500dfc9..8a95ce326a 100644
--- a/apps/paperless/Chart.yaml
+++ b/apps/paperless/Chart.yaml
@@ -3,5 +3,8 @@ name: paperless
version: 0.0.0
dependencies:
- name: paperless
- version: 8.5.0
+ version: 8.8.3
repository: https://k8s-at-home.com/charts/
+ - name: crushftp
+ version: 1.0.3
+ repository: https://greggbjensen.github.io/helm-crushftp
diff --git a/apps/paperless/values.yaml b/apps/paperless/values.yaml
index dff533b1d8..bee0d4282a 100644
--- a/apps/paperless/values.yaml
+++ b/apps/paperless/values.yaml
@@ -1,4 +1,63 @@
paperless:
+
+ env:
+ # -- Project name
+ COMPOSE_PROJECT_NAME: paperless
+ # -- Redis to use
+ PAPERLESS_REDIS: redis://redis-master.redis:6379
+ # -- OCR languages to install
+ PAPERLESS_OCR_LANGUAGE: eng
+ PAPERLESS_TIME_ZONE: "Europe/Amsterdam"
+ # USERMAP_UID: 1000
+ # USERMAP_GID: 1000
+ # PAPERLESS_TIME_ZONE: Europe/London
+ # -- Database host to use
+ PAPERLESS_DBHOST: postgresql.postgresql
+ # -- Port to use
+ PAPERLESS_PORT: 8000
+
+ envFrom:
+ - secretRef:
+ name: paperless-secret
+
+ persistence:
+ # -- Configure persistence for data.
+ # @default -- See values.yaml
+ data:
+ enabled: true
+ mountPath: /usr/src/paperless/data
+ accessMode: ReadWriteOnce
+ storageClass: "longhorn"
+ size: 1Gi
+
+ # -- Configure persistence for media.
+ # @default -- See values.yaml
+ media:
+ enabled: true
+ mountPath: /usr/src/paperless/media
+ accessMode: ReadWriteOnce
+ storageClass: "longhorn"
+ size: 1Gi
+
+ # -- Configure volume to monitor for new documents.
+ # @default -- See values.yaml
+ consume:
+ enabled: true
+ mountPath: /usr/src/paperless/consume
+ accessMode: ReadWriteMany
+ storageClass: "longhorn"
+ size: 1Gi
+
+ # -- Configure export volume.
+ # @default -- See values.yaml
+
+ export:
+ enabled: true
+ mountPath: /usr/src/paperless/export
+ accessMode: ReadWriteOnce
+ storageClass: "longhorn"
+ size: 1Gi
+
ingress:
main:
enabled: true
@@ -8,7 +67,7 @@ paperless:
hajimari.io/appName: Paperless
hajimari.io/icon: file-document
hosts:
- - host: &host paperless.khuedoan.com
+ - host: &host paperless.jupiter.mein.nl
paths:
- path: /
pathType: Prefix
@@ -17,4 +76,118 @@ paperless:
hosts:
- *host
postgresql:
- enabled: true
+ enabled: false
+
+crushftp:
+
+ # Default values for crushftp.
+
+ # Project specific
+ admin:
+ username: crushadmin
+ password: 'password'
+ protocol: http
+ port: 8080
+
+ tls:
+ secretName: crushftp-tls
+ volumes:
+ - name: paperless-consume
+ claimName: paperless-consume
+ mountPath: /mnt/FTP/Shared/scan
+
+ configVolume:
+ size: 1Gi
+ loadBalancerIp: 127.0.0.1
+
+ # Shared
+ shared:
+ hosts:
+ crushFtp:
+ root: scan.ftp.jupiter.mein.nl
+ prefix: ftp
+ ingress:
+ clusterIssuer: 'letsencrypt-prod'
+ storageClassName: default
+
+ # This is a YAML-formatted file.
+ # Declare variables to be passed into your templates.
+
+ replicaCount: 1
+
+ image:
+ repository: greggbjensen/crushftp
+ pullPolicy: IfNotPresent
+ # Overrides the image tag whose default is the chart appVersion.
+ tag: ""
+
+ imagePullSecrets: []
+ nameOverride: ""
+ fullnameOverride: ""
+
+ serviceAccount:
+ # Specifies whether a service account should be created
+ create: true
+ # Annotations to add to the service account
+ annotations: {}
+ # The name of the service account to use.
+ # If not set and create is true, a name is generated using the fullname template
+ name: ""
+
+ podAnnotations: {}
+
+ podSecurityContext: {}
+ # fsGroup: 2000
+
+ securityContext: {}
+ # capabilities:
+ # drop:
+ # - ALL
+ # readOnlyRootFilesystem: true
+ # runAsNonRoot: true
+ # runAsUser: 1000
+
+ service:
+ type: ClusterIP
+ port: 80
+
+ ingress:
+ enabled: false
+ className: ""
+ annotations: {}
+ # kubernetes.io/ingress.class: nginx
+ # kubernetes.io/tls-acme: "true"
+ hosts:
+ - host: ftp.jupiter.mein.nl
+ paths:
+ - path: /
+ pathType: ImplementationSpecific
+ tls:
+ - secretName: crushftp-tls
+ hosts:
+ - ftp.jupiter.mein.nl
+
+ 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
+
+ autoscaling:
+ enabled: false
+ minReplicas: 1
+ maxReplicas: 1
+ targetCPUUtilizationPercentage: 80
+ # targetMemoryUtilizationPercentage: 80
+
+ nodeSelector: {}
+
+ tolerations: []
+
+ affinity: {}
diff --git a/apps/privatebin/Chart.yaml b/apps/privatebin/Chart.yaml
new file mode 100644
index 0000000000..be2e2818e7
--- /dev/null
+++ b/apps/privatebin/Chart.yaml
@@ -0,0 +1,7 @@
+apiVersion: v2
+name: privatebin
+version: 0.0.0
+dependencies:
+ - name: privatebin
+ version: 2.1.2
+ repository: https://k8s-at-home.com/charts/
diff --git a/apps/privatebin/values.yaml b/apps/privatebin/values.yaml
new file mode 100644
index 0000000000..5d0db0446c
--- /dev/null
+++ b/apps/privatebin/values.yaml
@@ -0,0 +1,115 @@
+privatebin:
+ # 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: privatebin/pdo
+ # -- image tag
+ tag: 1.4.0
+ # -- image pull policy
+ pullPolicy: IfNotPresent
+
+ # -- environment variables. See [image docs](https://docs.kanboard.org/en/latest/admin_guide/docker.html#environment-variables)
+ # and [application docs](# https://docs.kanboard.org/en/latest/admin_guide/config_file.html) for more details.
+ # @default -- See below (only deviations from the default settings are specified)
+ env:
+ # -- container timezone
+ TZ: Europe/Amsterdam
+ # -- PHP timezone (usually should match the containers TZ)
+ PHP_TZ: Europe/Amsterdam
+
+ # -- Configures service settings for the chart.
+ # @default -- See values.yaml
+ service:
+ main:
+ ports:
+ http:
+ port: 8080
+
+ ingress:
+ # -- Enable and configure ingress settings for the chart under this key.
+ # @default -- See values.yaml
+ ingress:
+ main:
+ enabled: true
+ ingressClassName: nginx
+ annotations:
+ cert-manager.io/cluster-issuer: letsencrypt-prod
+ hajimari.io/appName: Privatebin
+ hajimari.io/icon: bin
+ hosts:
+ - host: &host privatebin.jupiter.mein.nl
+ paths:
+ - path: /
+ pathType: Prefix
+ tls:
+ - secretName: privatebin-tls-certificate
+ hosts:
+ - *host
+
+ # -- Configure persistence settings for the chart under this key.
+ # @default -- See values.yaml
+ persistence:
+ data:
+ enabled: false
+ mountPath: /srv/data
+
+ # -- Enable and configure postgresql database subchart under this key.
+ # For more options see [postgresql chart documentation](https://github.com/bitnami/charts/tree/master/bitnami/postgresql)
+ # @default -- See values.yaml
+ postgresql:
+ enabled: false
+ postgresqlUsername: privatebin
+ postgresqlPassword: privatebin
+ postgresqlDatabase: privatebin
+ persistence:
+ enabled: false
+ # storageClass: ""
+
+ # -- Application Settings. See https://github.com/PrivateBin/PrivateBin/blob/master/cfg/conf.sample.php
+ # for a description of every setting
+ # @default -- See values.yaml
+ config:
+ main:
+ name: "PrivateBin"
+ # discussion: true
+ # opendiscussion: false
+ # password: true
+ # fileupload: false
+ # burnafterreadingselected: false
+ # defaultformatter: "plaintext"
+ # syntaxhighlightingtheme: "sons-of-obsidian"
+ # sizelimit: 10485760
+ # template: "bootstrap"
+ # info: "More information on the project page."
+ # notice: "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service."
+ # languageselection: false
+ # languagedefault: "en"
+ # urlshortener: "https://shortener.example.com/api?link="
+ # qrcode: false
+ # icon: "none"
+ # zerobincompatibility: false
+ # httpwarning: true
+ # compression: "zlib"
+ expire:
+ default: "1week"
+ expire_options:
+ 5min: 300
+ 10min: 600
+ 1hour: 3600
+ 1day: 86400
+ 1week: 604800
+ 1month: 2592000
+ 1year: 31536000
+ never: 0
+ formatter_options:
+ plaintext: "Plain Text"
+ syntaxhighlighting: "Source Code"
+ markdown: "Markdown"
+ traffic:
+ limit: 10
+ # exemptedIp: "1.2.3.4,10.10.10/24"
diff --git a/apps/seafile/Chart.yaml b/apps/seafile/Chart.yaml
index 91e0881d64..5b0c569e4e 100644
--- a/apps/seafile/Chart.yaml
+++ b/apps/seafile/Chart.yaml
@@ -3,5 +3,5 @@ name: seafile
version: 0.0.0
dependencies:
- name: seafile
- version: 2.0.1
+ version: 2.2.2
repository: https://k8s-at-home.com/charts
diff --git a/apps/seafile/values.yaml b/apps/seafile/values.yaml
index a3a7727ce9..41b3da15a5 100644
--- a/apps/seafile/values.yaml
+++ b/apps/seafile/values.yaml
@@ -1,20 +1,75 @@
seafile:
- ingress:
+
+ image:
+ # -- image repository
+ repository: seafileltd/seafile-mc
+ # -- image tag
+ tag: 9.0.9
+ # -- image pull policy
+ pullPolicy: IfNotPresent
+
+ # -- environment variables. See more environment variables in the [seafile documentation](https://manual.seafile.com/).
+ # @default -- See below
+ env:
+ # -- Set the container timezone
+ TIME_ZONE: Europe/Amsterdam
+ # -- The hostname of your database
+ DB_HOST: mariadb-galera.mariadb-galera.svc.cluster.local
+ # -- The root password for mysql (used for initial setup)
+ DB_ROOT_PASSWD: XL3ePsvRu2%
+ # -- The initial admin user's email
+ SEAFILE_ADMIN_EMAIL: peter@mein.nl
+ # -- The initial admin user's password
+ SEAFILE_ADMIN_PASSWORD: seafileadminpass
+ # -- The hostname for the server (set to your ingress hostname)
+ SEAFILE_SERVER_HOSTNAME: seafile.jupiter.mein.nl
+ SEAFILE_SERVER_LETSENCRYPT: true
+
+ # -- Configures service settings for the chart.
+ # @default -- See values.yaml
+ service:
main:
- enabled: true
- ingressClassName: nginx
- annotations:
- cert-manager.io/cluster-issuer: letsencrypt-prod
- hajimari.io/appName: Seafile
- hajimari.io/icon: google-drive
- hosts:
- - host: &host seafile.khuedoan.com
- paths:
- - path: /
- pathType: Prefix
- tls:
- - secretName: seafile-tls-certificate
- hosts:
- - *host
+ ports:
+ http:
+ port: 80
+
+ ingress:
+ # -- Enable and configure ingress settings for the chart under this key.
+ # @default -- See values.yaml
+ ingress:
+ main:
+ enabled: true
+ ingressClassName: nginx
+ annotations:
+ cert-manager.io/cluster-issuer: letsencrypt-prod
+ hosts:
+ - host: &host seafile.jupiter.mein.nl
+ paths:
+ - path: /
+ pathType: Prefix
+ tls:
+ - secretName: seafile-tls-certificate
+ hosts:
+ - *host
+
+ # -- Enable and configure mariadb database subchart under this key.
+ # For more options see [mariadb chart documentation](https://github.com/bitnami/charts/tree/master/bitnami/mariadb)
+ # @default -- See values.yaml
mariadb:
- enabled: true
+ enabled: false
+ architecture: standalone
+ auth:
+ database: seafile
+ username: seafile
+ password: seafilepass
+ rootPassword: seafilerootpass
+ primary:
+ persistence:
+ enabled: false
+ # storageClass: ""
+
+ # -- Configure persistence settings for the chart under this key.
+ # @default -- See values.yaml
+ persistence: {}
+ # shared:
+ # enabled: false
diff --git a/bin/cloudflared/Chart.yaml b/bin/cloudflared/Chart.yaml
new file mode 100644
index 0000000000..f6bae20473
--- /dev/null
+++ b/bin/cloudflared/Chart.yaml
@@ -0,0 +1,7 @@
+apiVersion: v2
+name: cloudflared
+version: 0.0.0
+dependencies:
+ - name: cloudflared
+ version: 0.4.3
+ repository: https://khuedoan.github.io/charts
diff --git a/bin/cloudflared/values.yaml b/bin/cloudflared/values.yaml
new file mode 100644
index 0000000000..f5f469968d
--- /dev/null
+++ b/bin/cloudflared/values.yaml
@@ -0,0 +1,18 @@
+cloudflared:
+ credentials:
+ existingSecret: cloudflared-credentials
+ config:
+ tunnel: homelab
+ ingress:
+ # It is safe to put a wildcard here
+ # Please see https://homelab.jupiter.mein.nl/reference/faq.html#is-it-safe-to-use-wildcard-in-cloudflare-tunnel-ingress-config
+ - hostname: '*.jupiter.mein.nl'
+ service: https://ingress-nginx-controller.ingress-nginx
+ originRequest:
+ noTLSVerify: true
+ - service: http_status:404
+
+ podMonitor:
+ enabled: true
+ metricsEndpoints:
+ - port: http
diff --git a/bootstrap/argocd/Chart.yaml b/bootstrap/argocd/Chart.yaml
index 29979af054..b05eeb3914 100644
--- a/bootstrap/argocd/Chart.yaml
+++ b/bootstrap/argocd/Chart.yaml
@@ -3,5 +3,5 @@ name: argocd
version: 0.0.0
dependencies:
- name: argo-cd
- version: 4.5.8
+ version: 5.8.5
repository: https://argoproj.github.io/argo-helm
diff --git a/bootstrap/argocd/values.yaml b/bootstrap/argocd/values.yaml
index 632c13a8e6..c1086810f5 100644
--- a/bootstrap/argocd/values.yaml
+++ b/bootstrap/argocd/values.yaml
@@ -2,8 +2,11 @@ argo-cd:
server:
extraArgs:
- --insecure
+ - --repo-server-timeout-seconds
+ - "500"
config:
- statusbadge.enabled: 'true'
+ statusbadge.enabled: "true"
+
resource.customizations.health.argoproj.io_Application: |
hs = {}
hs.status = "Progressing"
@@ -25,7 +28,7 @@ argo-cd:
hajimari.io/appName: ArgoCD
hajimari.io/icon: robot
hosts:
- - &host argocd.khuedoan.com
+ - &host argocd.jupiter.mein.nl
tls:
- secretName: argocd-tls-certificate
hosts:
@@ -37,8 +40,13 @@ argo-cd:
dex:
enabled: false
controller:
+ args:
+ repoServerTimeoutSeconds: "180"
metrics: *metrics
repoServer:
+ env:
+ - name: "ARGOCD_EXEC_TIMEOUT"
+ value: "5m"
metrics: *metrics
redis:
metrics: *metrics
diff --git a/bootstrap/root/values-seed.yaml b/bootstrap/root/values-seed.yaml
index ae729830c4..60766a7846 100644
--- a/bootstrap/root/values-seed.yaml
+++ b/bootstrap/root/values-seed.yaml
@@ -1,2 +1,2 @@
gitops:
- repo: https://github.com/khuedoan/homelab
+ repo: https://github.com/petermein/homelab
diff --git a/bootstrap/root/values.yaml b/bootstrap/root/values.yaml
index 37e96eec1e..a6b5b7cf0f 100644
--- a/bootstrap/root/values.yaml
+++ b/bootstrap/root/values.yaml
@@ -7,3 +7,4 @@ stacks:
- name: system
- name: platform
- name: apps
+ - name: home
\ No newline at end of file
diff --git a/disable/external-dns/Chart.yaml b/disable/external-dns/Chart.yaml
new file mode 100644
index 0000000000..af442b2831
--- /dev/null
+++ b/disable/external-dns/Chart.yaml
@@ -0,0 +1,7 @@
+apiVersion: v2
+name: external-dns
+version: 0.0.0
+dependencies:
+ - name: external-dns
+ version: 1.7.1
+ repository: https://kubernetes-sigs.github.io/external-dns/
diff --git a/disable/external-dns/values.yaml b/disable/external-dns/values.yaml
new file mode 100644
index 0000000000..21b1ccf773
--- /dev/null
+++ b/disable/external-dns/values.yaml
@@ -0,0 +1,15 @@
+external-dns:
+ provider: cloudflare
+ env:
+ - name: CF_API_TOKEN
+ valueFrom:
+ secretKeyRef:
+ name: cloudflare-api-token
+ key: value
+ extraArgs:
+ - --annotation-filter=external-dns.alpha.kubernetes.io/exclude notin (true)
+
+ metrics:
+ enabled: true
+ serviceMonitor:
+ enabled: true
diff --git a/disable/kured/Chart.yaml b/disable/kured/Chart.yaml
new file mode 100644
index 0000000000..400314fcf1
--- /dev/null
+++ b/disable/kured/Chart.yaml
@@ -0,0 +1,7 @@
+apiVersion: v2
+name: kured
+version: 0.0.0
+dependencies:
+- name: kured
+ version: 4.0.3
+ repository: https://kubereboot.github.io/charts
diff --git a/system/kured/values.yaml b/disable/kured/values.yaml
similarity index 78%
rename from system/kured/values.yaml
rename to disable/kured/values.yaml
index 27797e2e06..7f6d51f644 100644
--- a/system/kured/values.yaml
+++ b/disable/kured/values.yaml
@@ -2,4 +2,4 @@ kured:
configuration:
annotateNodes: true
rebootSentinelCommand: sh -c "! needs-restarting --reboothint"
- timeZone: Asia/Ho_Chi_Minh
+ timeZone: Europe/Amsterdam
diff --git a/docs/diagrams/provisioning_flow.jpg b/docs/diagrams/provisioning_flow.jpg
new file mode 100644
index 0000000000..40fc4c858e
Binary files /dev/null and b/docs/diagrams/provisioning_flow.jpg differ
diff --git a/docs/how-to-guides/updating-documentation.md b/docs/how-to-guides/updating-documentation.md
index e214567511..adaafdf7be 100644
--- a/docs/how-to-guides/updating-documentation.md
+++ b/docs/how-to-guides/updating-documentation.md
@@ -1,7 +1,7 @@
# Updating documentation (this website)
This project uses the [Diátaxis](https://diataxis.fr) technical documentation framework.
-The website is generated using [Material for MkDocs](https://squidfunk.github.io/mkdocs-material) and can be viewed at [homelab.khuedoan.com](https://homelab.khuedoan.com).
+The website is generated using [Material for MkDocs](https://squidfunk.github.io/mkdocs-material) and can be viewed at [homelab.jupiter.mein.nl](https://homelab.jupiter.mein.nl).
There are 4 main parts:
@@ -34,7 +34,7 @@ It's running on my other cluster in the [khuedoan/horus](https://github.com/khue
-
+
diff --git a/docs/how-to-guides/use-both-github-and-gitea.md b/docs/how-to-guides/use-both-github-and-gitea.md
index d4f6577267..b173039b08 100644
--- a/docs/how-to-guides/use-both-github-and-gitea.md
+++ b/docs/how-to-guides/use-both-github-and-gitea.md
@@ -5,7 +5,7 @@ Even though we self-host Gitea, you may still want to use GitHub as a backup and
Add both push URLs (replace my repositories with yours):
```sh
-git remote set-url --add --push origin git@git.khuedoan.com:ops/homelab
+git remote set-url --add --push origin git@git.jupiter.mein.nl:ops/homelab
git remote set-url --add --push origin git@github.com:khuedoan/homelab
```
diff --git a/docs/installation/production/configuration.md b/docs/installation/production/configuration.md
index 5df750f335..cb405fea0e 100644
--- a/docs/installation/production/configuration.md
+++ b/docs/installation/production/configuration.md
@@ -31,7 +31,7 @@ make configure
```
Text editor (nvim):
Enter seed repo (github.com/khuedoan/homelab): github.com/example/homelab
- Enter your domain (khuedoan.com): example.com
+ Enter your domain (jupiter.mein.nl): example.com
```
It will prompt you to edit the inventory:
diff --git a/docs/installation/production/external-resources.md b/docs/installation/production/external-resources.md
index 6704e82aa6..0534ea93f1 100644
--- a/docs/installation/production/external-resources.md
+++ b/docs/installation/production/external-resources.md
@@ -43,7 +43,7 @@ If you decide to use a [different Terraform backend](https://www.terraform.io/la
-
+
diff --git a/docs/src/images/provisioning_flow.jpg b/docs/src/images/provisioning_flow.jpg
new file mode 100644
index 0000000000..40fc4c858e
Binary files /dev/null and b/docs/src/images/provisioning_flow.jpg differ
diff --git a/external/modules/cloudflare/main.tf b/external/modules/cloudflare/main.tf
index dcdb0bda7e..156eb24ea2 100644
--- a/external/modules/cloudflare/main.tf
+++ b/external/modules/cloudflare/main.tf
@@ -1,5 +1,5 @@
data "cloudflare_zone" "zone" {
- name = "khuedoan.com"
+ name = "mein.nl"
}
data "cloudflare_api_token_permission_groups" "all" {}
@@ -24,9 +24,9 @@ resource "random_password" "tunnel_secret" {
special = false
}
-resource "cloudflare_argo_tunnel" "homelab" {
+resource "cloudflare_argo_tunnel" "jupiter" {
account_id = var.cloudflare_account_id
- name = "homelab"
+ name = "jupiter"
secret = base64encode(random_password.tunnel_secret.result)
}
@@ -34,8 +34,8 @@ resource "cloudflare_argo_tunnel" "homelab" {
resource "cloudflare_record" "tunnel" {
zone_id = data.cloudflare_zone.zone.id
type = "CNAME"
- name = "homelab-tunnel"
- value = "${cloudflare_argo_tunnel.homelab.id}.cfargotunnel.com"
+ name = "jupiter-tunnel"
+ value = "${cloudflare_argo_tunnel.jupiter.id}.cfargotunnel.com"
proxied = false
ttl = 1 # Auto
}
@@ -49,15 +49,15 @@ resource "kubernetes_secret" "cloudflared_credentials" {
data = {
"credentials.json" = jsonencode({
AccountTag = var.cloudflare_account_id
- TunnelName = cloudflare_argo_tunnel.homelab.name
- TunnelID = cloudflare_argo_tunnel.homelab.id
+ TunnelName = cloudflare_argo_tunnel.jupiter.name
+ TunnelID = cloudflare_argo_tunnel.jupiter.id
TunnelSecret = base64encode(random_password.tunnel_secret.result)
})
}
}
resource "cloudflare_api_token" "external_dns" {
- name = "homelab_external_dns"
+ name = "jupiter_external_dns"
policy {
permission_groups = [
@@ -88,7 +88,7 @@ resource "kubernetes_secret" "external_dns_token" {
}
resource "cloudflare_api_token" "cert_manager" {
- name = "homelab_cert_manager"
+ name = "jupiter_cert_manager"
policy {
permission_groups = [
diff --git a/external/modules/cloudflare/versions.tf b/external/modules/cloudflare/versions.tf
index b91692591e..847c09b009 100644
--- a/external/modules/cloudflare/versions.tf
+++ b/external/modules/cloudflare/versions.tf
@@ -12,7 +12,7 @@ terraform {
http = {
source = "hashicorp/http"
- version = "~> 2.1.0"
+ version = "~> 3.4.0"
}
}
}
diff --git a/external/terraform.tfstate.backup b/external/terraform.tfstate.backup
new file mode 100644
index 0000000000..fbe4ce3313
--- /dev/null
+++ b/external/terraform.tfstate.backup
@@ -0,0 +1,722 @@
+{
+ "version": 4,
+ "terraform_version": "1.3.1",
+ "serial": 63,
+ "lineage": "021adf4e-968c-6935-be21-746921f43f25",
+ "outputs": {},
+ "resources": [
+ {
+ "module": "module.cloudflare",
+ "mode": "data",
+ "type": "cloudflare_api_token_permission_groups",
+ "name": "all",
+ "provider": "module.cloudflare.provider[\"registry.terraform.io/cloudflare/cloudflare\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "id": "37f58c2e50041f9eed30c0006b111b44",
+ "permissions": {
+ "API Gateway Read": "6ced5d0d69b1422396909a62c38ab41b",
+ "API Gateway Write": "f0235726de25444a84f704b7c93afadf",
+ "API Tokens Read": "0cc3a61731504c89b99ec1be78b77aa0",
+ "API Tokens Write": "686d18d5ac6c441c867cbf6771e58a0a",
+ "Access: Apps and Policies Read": "eb258a38ea634c86a0c89da6b27cb6b6",
+ "Access: Apps and Policies Revoke": "6c9d1cfcfc6840a987d1b5bfb880a841",
+ "Access: Apps and Policies Write": "959972745952452f8be2452be8cbb9f2",
+ "Access: Audit Logs Read": "b05b28e839c54467a7d6cba5d3abb5a3",
+ "Access: Certificates Read": "4f3196a5c95747b6ad82e34e1d0a694f",
+ "Access: Certificates Write": "29d3afbfd4054af9accdd1118815ed05",
+ "Access: Device Posture Read": "0f4841f80adb4bada5a09493300e7f8d",
+ "Access: Device Posture Write": "2fc1072ee6b743828db668fcb3f9dee7",
+ "Access: Organizations, Identity Providers, and Groups Read": "26bc23f853634eb4bff59983b9064fde",
+ "Access: Organizations, Identity Providers, and Groups Revoke": "7121a0c7e9ed46e3829f9cca2bb572aa",
+ "Access: Organizations, Identity Providers, and Groups Write": "bfe0d8686a584fa680f4c53b5eb0de6d",
+ "Access: Service Tokens Read": "91f7ce32fa614d73b7e1fc8f0e78582b",
+ "Access: Service Tokens Write": "a1c0fec57cf94af79479a6d827fa518c",
+ "Account Analytics Read": "b89a480218d04ceb98b4fe57ca29dc1f",
+ "Account Custom Pages Read": "c57ea647ef654b47bc8944fa739b570d",
+ "Account Custom Pages Write": "8a9d35a7c8504208ad5c3e8d58e6162d",
+ "Account Firewall Access Rules Read": "de7a688cc47d43bd9ea700b467a09c96",
+ "Account Firewall Access Rules Write": "a416acf9ef5a4af19fb11ed3b96b1fe6",
+ "Account Rule Lists Read": "4f1071168de8466e9808de86febfc516",
+ "Account Rule Lists Write": "2edbf20661fd4661b0fe10e9e12f485c",
+ "Account Rulesets Read": "fb39996ee9044d2a8725921e02744b39",
+ "Account Rulesets Write": "56907406c3d548ed902070ec4df0e328",
+ "Account Settings Read": "c1fde68c7bcc44588cbb6ddbc16d6480",
+ "Account Settings Write": "1af1fa2adc104452b74a9a3364202f20",
+ "Account WAF Read": "56b2af4817c84ad99187911dc3986c23",
+ "Account WAF Write": "cde8c82463b6414ca06e46b9633f52a6",
+ "Analytics Read": "9c88f9c5bce24ce7af9a958ba9c504db",
+ "Apps Write": "094547ab6e77498c8c4dfa87fadd5c51",
+ "Argo Tunnel Read": "efea2ab8357b47888938f101ae5e053f",
+ "Argo Tunnel Write": "c07321b023e944ff818fec44d8203567",
+ "Billing Read": "7cf72faf220841aabcfdfab81c43c4f6",
+ "Billing Write": "6c80e02421494afc9ae14414ed442632",
+ "Bot Management Read": "07bea2220b2343fa9fae15656c0d8e88",
+ "Bot Management Write": "3b94c49258ec4573b06d51d99b6416c0",
+ "Cache Purge": "e17beae8b8cb423a99b1730f21238bed",
+ "Cache Settings Read": "3245da1cf36c45c3847bb9b483c62f97",
+ "Cache Settings Write": "9ff81cbbe65c400b97d92c3c1033cab6",
+ "China Network Steering Read": "9ade9cfc8f8949bcb2371be2f0ec8db1",
+ "China Network Steering Write": "c6f6338ceae545d0b90daaa1fed855e6",
+ "Config Settings Read": "20e5ea084b2f491c86b8d8d90abff905",
+ "Config Settings Write": "06f0526e6e464647bd61b63c54935235",
+ "Custom Errors Read": "a2b55cd504d44ef18b7ba6a7f2b8fbb1",
+ "Custom Errors Write": "a9dba34cf5814d4ab2007b4ada0045bd",
+ "Custom Pages Read": "a2431ca73b7d41f99c53303027392586",
+ "Custom Pages Write": "c244ec076974430a88bda1cdd992d0d9",
+ "D1 Read": "192192df92ee43ac90f2aeeffce67e35",
+ "D1 Write": "09b2857d1c31407795e75e3fed8617a1",
+ "DDoS Protection Read": "af1c363c35ba45b9a8c682ae50eb3f99",
+ "DDoS Protection Write": "d44ed14bcc4340b194d3824d60edad3f",
+ "DNS Firewall Read": "5f48a472240a4b489a21d43bd19a06e1",
+ "DNS Firewall Write": "da6d2d6f2ec8442eaadda60d13f42bca",
+ "DNS Read": "82e64a83756745bbbb1c9c2701bf816b",
+ "DNS Write": "4755a26eedb94da69e1066d98aa820be",
+ "Disable ESC Read": "e199d584e69344eba202452019deafe3",
+ "Disable ESC Write": "18555e39c5ba40d284dde87eda845a90",
+ "Dynamic URL Redirects Read": "d8e12db741544d1586ec1d6f5d3c7786",
+ "Dynamic URL Redirects Write": "74e1036f577a48528b78d2413b40538d",
+ "Email Routing Addresses Read": "5272e56105d04b5897466995b9bd4643",
+ "Email Routing Addresses Write": "e4589eb09e63436686cd64252a3aebeb",
+ "Email Routing Rules Read": "1b600d9d8062443e986a973f097e728a",
+ "Email Routing Rules Write": "79b3ec0d10ce4148a8f8bdc0cc5f97f2",
+ "Firewall Services Read": "4ec32dfcb35641c5bb32d5ef1ab963b4",
+ "Firewall Services Write": "43137f8d07884d3198dc0ee77ca6e79b",
+ "HTTP Applications Read": "6b60a5a87cae475da7e76e77e4209dd5",
+ "HTTP Applications Write": "4736c02a9f224c8196ae5b127beae78c",
+ "HTTP DDoS Managed Ruleset Read": "c49f8d15f9f44885a544d945ef5aa6ae",
+ "HTTP DDoS Managed Ruleset Write": "b88a3aa889474524bccea5cf18f122bf",
+ "Health Checks Read": "fac65912d42144aa86b7dd33281bf79e",
+ "Health Checks Write": "e0dc25a0fbdf4286b1ea100e3256b0e3",
+ "IP Prefixes: BGP On Demand Read": "e763fae6ee95443b8f56f19213c5f2a5",
+ "IP Prefixes: BGP On Demand Write": "2ae23e4939d54074b7d252d27ce75a77",
+ "IP Prefixes: Read": "27beb7f8333b41e2b946f0e23cd8091e",
+ "IP Prefixes: Write": "92b8234e99f64e05bbbc59e1dc0f76b6",
+ "Images Read": "0cf6473ad41449e7b7b743d14fc20c60",
+ "Images Write": "618ec6c64a3a42f8b08bdcb147ded4e4",
+ "Intel Read": "df1577df30ee46268f9470952d7b0cdf",
+ "Intel Write": "92209474242d459690e2cdb1985eaa6c",
+ "L4 DDoS Managed Ruleset Read": "4657621393f94f83b8ef94adba382e48",
+ "L4 DDoS Managed Ruleset Write": "7a4c3574054a4d0ba7c692893ba8bdd4",
+ "Load Balancers Read": "e9a975f628014f1d85b723993116f7d5",
+ "Load Balancers Write": "6d7f2f5f5b1d4a0e9081fdc98d432fd1",
+ "Load Balancing: Monitors and Pools Read": "9d24387c6e8544e2bc4024a03991339f",
+ "Load Balancing: Monitors and Pools Write": "d2a1802cc9a34e30852f8b33869b2f3c",
+ "Logs Read": "6a315a56f18441e59ed03352369ae956",
+ "Logs Write": "3e0b5820118e47f3922f7c989e673882",
+ "Magic Firewall Packet Captures - Read PCAPs API": "3a46c728a0a040d5a65cd8e2f3bc6935",
+ "Magic Firewall Packet Captures - Write PCAPs API": "4ea7d6421801452dbf07cef853a5ef39",
+ "Magic Firewall Read": "02b71f12bb0748e9af8126494e181342",
+ "Magic Firewall Write": "8bd1dac84d3d43e7bfb43145f010a15c",
+ "Magic Network Monitoring Admin": "8e6ed1ef6e864ad0ae477ceffa5aa5eb",
+ "Magic Network Monitoring Config Read": "3d85e9514f944bb4912c5871d92e5af5",
+ "Magic Network Monitoring Config Write": "09c77baecb6341a2b1ca2c62b658d290",
+ "Magic Transit Prefix Read": "967ecf860a244dd1911a0331a0af582a",
+ "Magic Transit Prefix Write": "0bc09a3cd4b54605990df4e307f138e1",
+ "Managed headers Read": "319f5059d33a410da0fac4d35a716157",
+ "Managed headers Write": "0fd9d56bc2da43ad8ea22d610dd8cab1",
+ "Mass URL Redirects Read": "429a068902904c5a9ed9fc267c67da9a",
+ "Mass URL Redirects Write": "abe78e2276664f4db588c1f675a77486",
+ "Memberships Read": "3518d0f75557482e952c6762d3e64903",
+ "Memberships Write": "9201bc6f42d440968aaab0c6f17ebb1d",
+ "Origin Read": "7b32a91ece3140d4b3c2c56f23fc8e35",
+ "Origin Write": "a4308c6855c84eb2873e01b6cc85cbb3",
+ "Page Rules Read": "b415b70a4fd1412886f164451f20405c",
+ "Page Rules Write": "ed07f6c337da4195b4e72a1fb2c6bcae",
+ "Pages Read": "e247aedd66bd41cc9193af0213416666",
+ "Pages Write": "8d28297797f24fb8a0c332fe0866ec89",
+ "Pubsub Configuration Read": "fd7f886c75a244389e892c4c3c068292",
+ "Pubsub Configuration Write": "910b6ecca1c5411bb894e787362d1312",
+ "Rule Policies Read": "58abbad6d2ce40abb2594fbe932a2e0e",
+ "Rule Policies Write": "61ddc58f1da14f95b33b41213360cbeb",
+ "SSL and Certificates Read": "7b7216b327b04b8fbc8f524e1f9b7531",
+ "SSL and Certificates Write": "c03055bc037c4ea9afb9a9f104b7b721",
+ "Sanitize Read": "853643ed57244ed1a05a7c024af9ab5a",
+ "Sanitize Write": "89bb8c37d46042e98b84560eaaa6379f",
+ "Select Configuration Read": "595409c54a24444b80a495620b2d614c",
+ "Select Configuration Write": "235eac9bb64942b49cb805cc851cb000",
+ "Stream Read": "de21485a24744b76a004aa153898f7fe",
+ "Stream Write": "714f9c13a5684c2885a793f5edb36f59",
+ "Teams Read": "3f376c8e6f764a938b848bd01c8995c4",
+ "Teams Report": "efb81b5cd37d49f3be1da9363a6d7a19",
+ "Teams Write": "b33f02c6f7284e05a6f20741c0bb0567",
+ "Transform Rules Read": "a9a99455bf3245f6a5a244f909d74830",
+ "Transform Rules Write": "ae16e88bc7814753a1894c7ce187ab72",
+ "Turnstile Sites Read": "5d78fd7895974fd0bdbbbb079482721b",
+ "Turnstile Sites Write": "755c05aa014b4f9ab263aa80b8167bd8",
+ "User Details Read": "8acbe5bb0d54464ab867149d7f7cf8ac",
+ "User Details Write": "55a5e17cc99e4a3fa1f3432d262f2e55",
+ "Waiting Rooms Read": "cab5202d07ef47beae788e6bc95cb6fe",
+ "Waiting Rooms Write": "24fc124dc8254e0db468e60bf410c800",
+ "Web3 Hostnames Read": "8e31f574901c42e8ad89140b28d42112",
+ "Web3 Hostnames Write": "5ea6da42edb34811a78d1b007557c0ca",
+ "Workers KV Storage Read": "8b47d2786a534c08a1f94ee8f9f599ef",
+ "Workers KV Storage Write": "f7f0eda5697f475c90846e879bab8666",
+ "Workers R2 Storage Read": "b4992e1108244f5d8bfbd5744320c2e1",
+ "Workers R2 Storage Write": "bf7481a1826f439697cb59a20b22293e",
+ "Workers Routes Read": "2072033d694d415a936eaeb94e6405b8",
+ "Workers Routes Write": "28f4b596e7d643029c524985477ae49a",
+ "Workers Scripts Read": "1a71c399035b4950a1bd1466bbe4f420",
+ "Workers Scripts Write": "e086da7e2179491d91ee5f35b3ca210a",
+ "Workers Tail Read": "05880cd1bdc24d8bae0be2136972816b",
+ "Zaraz Admin": "cdeb15b336e640a2965df8c65052f1e0",
+ "Zaraz Read": "5bdbde7e76144204a244274eac3eb0eb",
+ "Zone Read": "c8fed203ed3043cba015a93ad1616f1f",
+ "Zone Settings Read": "517b21aee92c4d89936c976ba6e4be55",
+ "Zone Settings Write": "3030687196b94b638145a3953da2b699",
+ "Zone Transform Rules Read": "211a4c0feb3e43b3a2d41f1443a433e7",
+ "Zone Transform Rules Write": "0ac90a90249747bca6b047d97f0803e9",
+ "Zone WAF Read": "dbc512b354774852af2b5a5f4ba3d470",
+ "Zone WAF Write": "fb6778dc191143babbfaa57993f1d275",
+ "Zone Write": "e6d2666161e84845a636613608cee8d5"
+ }
+ },
+ "sensitive_attributes": []
+ }
+ ]
+ },
+ {
+ "module": "module.cloudflare",
+ "mode": "data",
+ "type": "cloudflare_zone",
+ "name": "zone",
+ "provider": "module.cloudflare.provider[\"registry.terraform.io/cloudflare/cloudflare\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "account_id": "bade361765d704ba91e29296a025e4e3",
+ "id": "f2dbeb2dca3e055df71df866b8188ce7",
+ "name": "mein.nl",
+ "name_servers": [
+ "jacqueline.ns.cloudflare.com",
+ "keanu.ns.cloudflare.com"
+ ],
+ "paused": false,
+ "plan": "Free Website",
+ "status": "active",
+ "vanity_name_servers": [],
+ "zone_id": "f2dbeb2dca3e055df71df866b8188ce7"
+ },
+ "sensitive_attributes": []
+ }
+ ]
+ },
+ {
+ "module": "module.cloudflare",
+ "mode": "data",
+ "type": "http",
+ "name": "public_ipv4",
+ "provider": "provider[\"registry.terraform.io/hashicorp/http\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "body": "213.34.1.38\n",
+ "id": "https://ipv4.icanhazip.com",
+ "request_headers": null,
+ "response_headers": {
+ "Access-Control-Allow-Methods": "GET",
+ "Access-Control-Allow-Origin": "*",
+ "Alt-Svc": "h3=\":443\"; ma=86400, h3-29=\":443\"; ma=86400",
+ "Cf-Ray": "765e0ab37b250e3b-AMS",
+ "Content-Length": "12",
+ "Content-Type": "text/plain",
+ "Date": "Sun, 06 Nov 2022 13:05:37 GMT",
+ "Server": "cloudflare",
+ "Set-Cookie": "__cf_bm=taclcWAQIB54BH1DHZr6one2Tyy0ahfBWfeRHiQPo9M-1667739937-0-AZ/mqMWjkq3yWY/aZxjqb84LIhJw9el9kC0uA2i3FJrFYmFqs03KrtotC3XRp80M0LV0QcY0V7l5q3Vr1ybbHP0=; path=/; expires=Sun, 06-Nov-22 13:35:37 GMT; domain=.icanhazip.com; HttpOnly; Secure; SameSite=None",
+ "Vary": "Accept-Encoding"
+ },
+ "url": "https://ipv4.icanhazip.com"
+ },
+ "sensitive_attributes": []
+ }
+ ]
+ },
+ {
+ "module": "module.cloudflare",
+ "mode": "managed",
+ "type": "cloudflare_api_token",
+ "name": "cert_manager",
+ "provider": "module.cloudflare.provider[\"registry.terraform.io/cloudflare/cloudflare\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "condition": [
+ {
+ "request_ip": [
+ {
+ "in": [
+ "213.34.1.38/32"
+ ],
+ "not_in": []
+ }
+ ]
+ }
+ ],
+ "id": "d99082d470ef8ae84df4628aa2fd8660",
+ "issued_on": "2022-11-06T13:00:43Z",
+ "modified_on": "2022-11-06T13:03:54Z",
+ "name": "jupiter_cert_manager",
+ "policy": [
+ {
+ "effect": "allow",
+ "permission_groups": [
+ "c8fed203ed3043cba015a93ad1616f1f",
+ "4755a26eedb94da69e1066d98aa820be"
+ ],
+ "resources": {
+ "com.cloudflare.api.account.zone.*": "*"
+ }
+ }
+ ],
+ "status": "active",
+ "value": "-BaeJeyJmaBJo2UXQfgrQSiKCNajRm755QaCAy1m"
+ },
+ "sensitive_attributes": [],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.cloudflare.data.cloudflare_api_token_permission_groups.all",
+ "module.cloudflare.data.http.public_ipv4"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.cloudflare",
+ "mode": "managed",
+ "type": "cloudflare_api_token",
+ "name": "external_dns",
+ "provider": "module.cloudflare.provider[\"registry.terraform.io/cloudflare/cloudflare\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "condition": [
+ {
+ "request_ip": [
+ {
+ "in": [
+ "213.34.1.38/32"
+ ],
+ "not_in": []
+ }
+ ]
+ }
+ ],
+ "id": "72a70be82b532edf6f20426c0d3cbc2f",
+ "issued_on": "2022-11-06T13:00:43Z",
+ "modified_on": "2022-11-06T13:03:53Z",
+ "name": "jupiter_external_dns",
+ "policy": [
+ {
+ "effect": "allow",
+ "permission_groups": [
+ "c8fed203ed3043cba015a93ad1616f1f",
+ "4755a26eedb94da69e1066d98aa820be"
+ ],
+ "resources": {
+ "com.cloudflare.api.account.zone.*": "*"
+ }
+ }
+ ],
+ "status": "active",
+ "value": "1RckTDLQNCZnfLEYvlRwy792gMs-e9LYrMlOQglz"
+ },
+ "sensitive_attributes": [],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.cloudflare.data.cloudflare_api_token_permission_groups.all",
+ "module.cloudflare.data.http.public_ipv4"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.cloudflare",
+ "mode": "managed",
+ "type": "cloudflare_argo_tunnel",
+ "name": "jupiter",
+ "provider": "module.cloudflare.provider[\"registry.terraform.io/cloudflare/cloudflare\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "account_id": "bade361765d704ba91e29296a025e4e3",
+ "cname": "6cc0d529-f729-45c1-891f-281544f35b50.cfargotunnel.com",
+ "id": "6cc0d529-f729-45c1-891f-281544f35b50",
+ "name": "jupiter",
+ "secret": "eHhSc29BVUUzblh0UnV5UDVZdzdCUmJUMEJBWHVzNlE3YTk4VFAwVjZuaURXUjRST3ROMk56dXZnNVk5c21COQ=="
+ },
+ "sensitive_attributes": [
+ [
+ {
+ "type": "get_attr",
+ "value": "secret"
+ }
+ ]
+ ],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.cloudflare.random_password.tunnel_secret"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.cloudflare",
+ "mode": "managed",
+ "type": "kubernetes_secret",
+ "name": "cert_manager_token",
+ "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "binary_data": null,
+ "data": {
+ "api-token": "-BaeJeyJmaBJo2UXQfgrQSiKCNajRm755QaCAy1m"
+ },
+ "id": "cert-manager/cloudflare-api-token",
+ "immutable": false,
+ "metadata": [
+ {
+ "annotations": {},
+ "generate_name": "",
+ "generation": 0,
+ "labels": {},
+ "name": "cloudflare-api-token",
+ "namespace": "cert-manager",
+ "resource_version": "2053006",
+ "uid": "3b9abcc6-36a7-45e9-894f-95c5817d3ce1"
+ }
+ ],
+ "type": "Opaque"
+ },
+ "sensitive_attributes": [
+ [
+ {
+ "type": "get_attr",
+ "value": "data"
+ },
+ {
+ "type": "index",
+ "value": {
+ "value": "api-token",
+ "type": "string"
+ }
+ }
+ ]
+ ],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.cloudflare.cloudflare_api_token.cert_manager",
+ "module.cloudflare.data.cloudflare_api_token_permission_groups.all",
+ "module.cloudflare.data.http.public_ipv4"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.cloudflare",
+ "mode": "managed",
+ "type": "kubernetes_secret",
+ "name": "cloudflared_credentials",
+ "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "binary_data": null,
+ "data": {
+ "credentials.json": "{\"AccountTag\":\"bade361765d704ba91e29296a025e4e3\",\"TunnelID\":\"6cc0d529-f729-45c1-891f-281544f35b50\",\"TunnelName\":\"jupiter\",\"TunnelSecret\":\"eHhSc29BVUUzblh0UnV5UDVZdzdCUmJUMEJBWHVzNlE3YTk4VFAwVjZuaURXUjRST3ROMk56dXZnNVk5c21COQ==\"}"
+ },
+ "id": "cloudflared/cloudflared-credentials",
+ "immutable": false,
+ "metadata": [
+ {
+ "annotations": null,
+ "generate_name": "",
+ "generation": 0,
+ "labels": null,
+ "name": "cloudflared-credentials",
+ "namespace": "cloudflared",
+ "resource_version": "2053733",
+ "uid": "e1aca647-6ad2-48d1-81e9-6556f7c09e3f"
+ }
+ ],
+ "type": "Opaque"
+ },
+ "sensitive_attributes": [
+ [
+ {
+ "type": "get_attr",
+ "value": "data"
+ },
+ {
+ "type": "index",
+ "value": {
+ "value": "credentials.json",
+ "type": "string"
+ }
+ }
+ ]
+ ],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.cloudflare.cloudflare_argo_tunnel.jupiter",
+ "module.cloudflare.random_password.tunnel_secret"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.cloudflare",
+ "mode": "managed",
+ "type": "kubernetes_secret",
+ "name": "external_dns_token",
+ "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "binary_data": null,
+ "data": {
+ "value": "1RckTDLQNCZnfLEYvlRwy792gMs-e9LYrMlOQglz"
+ },
+ "id": "external-dns/cloudflare-api-token",
+ "immutable": false,
+ "metadata": [
+ {
+ "annotations": {},
+ "generate_name": "",
+ "generation": 0,
+ "labels": {},
+ "name": "cloudflare-api-token",
+ "namespace": "external-dns",
+ "resource_version": "2053008",
+ "uid": "595051ae-11c9-4c1b-b885-8be600455aac"
+ }
+ ],
+ "type": "Opaque"
+ },
+ "sensitive_attributes": [
+ [
+ {
+ "type": "get_attr",
+ "value": "data"
+ },
+ {
+ "type": "index",
+ "value": {
+ "value": "value",
+ "type": "string"
+ }
+ }
+ ]
+ ],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.cloudflare.cloudflare_api_token.external_dns",
+ "module.cloudflare.data.cloudflare_api_token_permission_groups.all",
+ "module.cloudflare.data.http.public_ipv4"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.cloudflare",
+ "mode": "managed",
+ "type": "random_password",
+ "name": "tunnel_secret",
+ "provider": "provider[\"registry.terraform.io/hashicorp/random\"]",
+ "instances": [
+ {
+ "schema_version": 3,
+ "attributes": {
+ "bcrypt_hash": "$2a$10$ojTM2sFC2xzrvppFIXivpOcpNIvHDsetsJqIWDS5/5GCq3GyBf/Fu",
+ "id": "none",
+ "keepers": null,
+ "length": 64,
+ "lower": true,
+ "min_lower": 0,
+ "min_numeric": 0,
+ "min_special": 0,
+ "min_upper": 0,
+ "number": true,
+ "numeric": true,
+ "override_special": null,
+ "result": "xxRsoAUE3nXtRuyP5Yw7BRbT0BAXus6Q7a98TP0V6niDWR4ROtN2Nzuvg5Y9smB9",
+ "special": false,
+ "upper": true
+ },
+ "sensitive_attributes": []
+ }
+ ]
+ },
+ {
+ "module": "module.zerotier",
+ "mode": "managed",
+ "type": "kubernetes_secret",
+ "name": "router",
+ "provider": "provider[\"registry.terraform.io/hashicorp/kubernetes\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "binary_data": null,
+ "data": {
+ "ZEROTIER_IDENTITY_PUBLIC": "db0463b05f:0:e87be2495502a43210b29d7add5aa5671207f6ef63b8754db732d9c0784d6c24bccf2a8bf585b17b6f8ba93dd642aee5d8d08aa76b2acccda3cd3a742a50bd85",
+ "ZEROTIER_IDENTITY_SECRET": "db0463b05f:0:e87be2495502a43210b29d7add5aa5671207f6ef63b8754db732d9c0784d6c24bccf2a8bf585b17b6f8ba93dd642aee5d8d08aa76b2acccda3cd3a742a50bd85:3c9412a5cc67b12585338b9cb06ad204508421e9d04dcbd89d5aa36c41cffe725c90a88b9fc0836d108c5c4308169d067d6d2a65a5ff0eb0a398838cf4dc8f49",
+ "ZEROTIER_NETWORK_ID": "52b337794fb44bbd"
+ },
+ "id": "zerotier/zerotier-router",
+ "immutable": false,
+ "metadata": [
+ {
+ "annotations": {},
+ "generate_name": "",
+ "generation": 0,
+ "labels": {},
+ "name": "zerotier-router",
+ "namespace": "zerotier",
+ "resource_version": "2053007",
+ "uid": "76c24793-371b-4382-89f2-a153ee8e8ef2"
+ }
+ ],
+ "type": "Opaque"
+ },
+ "sensitive_attributes": [
+ [
+ {
+ "type": "get_attr",
+ "value": "data"
+ },
+ {
+ "type": "index",
+ "value": {
+ "value": "ZEROTIER_IDENTITY_SECRET",
+ "type": "string"
+ }
+ }
+ ]
+ ],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.zerotier.zerotier_identity.router",
+ "module.zerotier.zerotier_network.network"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.zerotier",
+ "mode": "managed",
+ "type": "zerotier_identity",
+ "name": "router",
+ "provider": "module.zerotier.provider[\"registry.terraform.io/zerotier/zerotier\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "id": "db0463b05f",
+ "private_key": "db0463b05f:0:e87be2495502a43210b29d7add5aa5671207f6ef63b8754db732d9c0784d6c24bccf2a8bf585b17b6f8ba93dd642aee5d8d08aa76b2acccda3cd3a742a50bd85:3c9412a5cc67b12585338b9cb06ad204508421e9d04dcbd89d5aa36c41cffe725c90a88b9fc0836d108c5c4308169d067d6d2a65a5ff0eb0a398838cf4dc8f49",
+ "public_key": "db0463b05f:0:e87be2495502a43210b29d7add5aa5671207f6ef63b8754db732d9c0784d6c24bccf2a8bf585b17b6f8ba93dd642aee5d8d08aa76b2acccda3cd3a742a50bd85"
+ },
+ "sensitive_attributes": [],
+ "private": "bnVsbA=="
+ }
+ ]
+ },
+ {
+ "module": "module.zerotier",
+ "mode": "managed",
+ "type": "zerotier_member",
+ "name": "router",
+ "provider": "module.zerotier.provider[\"registry.terraform.io/zerotier/zerotier\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "allow_ethernet_bridging": true,
+ "authorized": true,
+ "capabilities": [],
+ "description": "Managed by Terraform",
+ "hidden": false,
+ "id": "52b337794fb44bbd/db0463b05f",
+ "ip_assignments": [
+ "10.147.17.1"
+ ],
+ "member_id": "db0463b05f",
+ "name": "router",
+ "network_id": "52b337794fb44bbd",
+ "no_auto_assign_ips": true,
+ "tags": []
+ },
+ "sensitive_attributes": [],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.zerotier.zerotier_identity.router",
+ "module.zerotier.zerotier_network.network"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.zerotier",
+ "mode": "managed",
+ "type": "zerotier_network",
+ "name": "network",
+ "provider": "module.zerotier.provider[\"registry.terraform.io/zerotier/zerotier\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "assign_ipv4": [
+ {
+ "zerotier": true
+ }
+ ],
+ "assign_ipv6": [
+ {
+ "rfc4193": false,
+ "sixplane": false,
+ "zerotier": false
+ }
+ ],
+ "assignment_pool": [
+ {
+ "end": "10.147.17.255",
+ "start": "10.147.17.0"
+ }
+ ],
+ "creation_time": 1667739642875,
+ "description": "Homelab network",
+ "enable_broadcast": true,
+ "flow_rules": "accept;",
+ "id": "52b337794fb44bbd",
+ "multicast_limit": 32,
+ "name": "homelab",
+ "private": true,
+ "route": [
+ {
+ "target": "10.147.17.0/24",
+ "via": ""
+ },
+ {
+ "target": "192.168.1.0/24",
+ "via": "10.147.17.1"
+ }
+ ]
+ },
+ "sensitive_attributes": [],
+ "private": "bnVsbA=="
+ }
+ ]
+ }
+ ],
+ "check_results": []
+}
diff --git a/external/versions.tf b/external/versions.tf
index 18787e7e87..021ad50ac5 100644
--- a/external/versions.tf
+++ b/external/versions.tf
@@ -1,15 +1,11 @@
terraform {
required_version = "~> 1.3.0"
- backend "remote" {
- hostname = "app.terraform.io"
- organization = "khuedoan"
+ backend "local" {
- workspaces {
- name = "homelab-external"
- }
}
+
required_providers {
cloudflare = {
source = "cloudflare/cloudflare"
@@ -23,7 +19,7 @@ terraform {
http = {
source = "hashicorp/http"
- version = "~> 2.1.0"
+ version = "~> 3.4.0"
}
}
}
diff --git a/home/adminer/Chart.yaml b/home/adminer/Chart.yaml
new file mode 100644
index 0000000000..08eac5d74e
--- /dev/null
+++ b/home/adminer/Chart.yaml
@@ -0,0 +1,12 @@
+apiVersion: v2
+name: adminer
+version: 0.0.0
+dependencies:
+ - name: adminer
+ version: 0.2.0
+ - name: common
+ repository: https://charts.bitnami.com/bitnami
+ tags:
+ - bitnami-common
+ version: 2.x
+engine: gotpl
\ No newline at end of file
diff --git a/home/adminer/charts/adminer/.circleci/config.yml b/home/adminer/charts/adminer/.circleci/config.yml
new file mode 100644
index 0000000000..5309c82587
--- /dev/null
+++ b/home/adminer/charts/adminer/.circleci/config.yml
@@ -0,0 +1,14 @@
+version: 2
+jobs:
+ build:
+ docker:
+ - image: alpine
+ steps:
+ - checkout
+ - run:
+ name: helm-github-pages
+ environment:
+ - GITHUB_PAGES_REPO: cetic/helm-charts
+ - HELM_CHART: adminer
+ - HELM_VERSION: 3.2.4
+ command: wget -O - https://raw.githubusercontent.com/cetic/helm-chart-publisher/master/publish.sh | sh
\ No newline at end of file
diff --git a/home/adminer/charts/adminer/.github/ISSUE_TEMPLATE/bug_report.md b/home/adminer/charts/adminer/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000000..9af2bccefc
--- /dev/null
+++ b/home/adminer/charts/adminer/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,34 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: '[cetic/adminer] issue title'
+labels: ''
+assignees: ''
+
+---
+
+
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**Version of Helm and Kubernetes**:
+
+
+**What happened**:
+
+
+**What you expected to happen**:
+
+
+**How to reproduce it** (as minimally and precisely as possible):
+
+
+**Anything else we need to know**:
+
+
diff --git a/home/adminer/charts/adminer/.github/ISSUE_TEMPLATE/feature_request.md b/home/adminer/charts/adminer/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000000..84c4aa6ff0
--- /dev/null
+++ b/home/adminer/charts/adminer/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,28 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: '[cetic/adminer] issue title'
+labels: ''
+assignees: ''
+
+---
+
+
+
+**Is your feature request related to a problem? Please describe.**
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**Additional context**
+Add any other context or screenshots about the feature request here.
+
diff --git a/home/adminer/charts/adminer/.github/PULL_REQUEST_TEMPLATE.md b/home/adminer/charts/adminer/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000000..b2e13b69d2
--- /dev/null
+++ b/home/adminer/charts/adminer/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,40 @@
+
+
+#### What this PR does / why we need it:
+
+#### Which issue this PR fixes
+*(optional, in `fixes #(, fixes #, ...)` format, will close that issue when PR gets merged)*
+ - fixes #
+
+#### Special notes for your reviewer:
+
+#### Checklist
+[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]
+- [ ] [DCO](https://github.com/helm/charts/blob/master/CONTRIBUTING.md#sign-your-work) signed
+- [ ] Chart Version bumped
+- [ ] Variables are documented in the README.md
diff --git a/home/adminer/charts/adminer/.gitignore b/home/adminer/charts/adminer/.gitignore
new file mode 100644
index 0000000000..3f18c1655b
--- /dev/null
+++ b/home/adminer/charts/adminer/.gitignore
@@ -0,0 +1,7 @@
+*.tgz
+
+# Helm Charts dependencies
+#/charts
+#*.lock
+
+.idea
diff --git a/home/adminer/charts/adminer/.helmignore b/home/adminer/charts/adminer/.helmignore
new file mode 100644
index 0000000000..fbdd321f57
--- /dev/null
+++ b/home/adminer/charts/adminer/.helmignore
@@ -0,0 +1,26 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+
+# Various IDEs
+.project
+.idea/
+*.tmproj
+
+.circleci/
diff --git a/home/adminer/charts/adminer/Chart.yaml b/home/adminer/charts/adminer/Chart.yaml
new file mode 100644
index 0000000000..adee9e761e
--- /dev/null
+++ b/home/adminer/charts/adminer/Chart.yaml
@@ -0,0 +1,31 @@
+---
+apiVersion: v2
+name: adminer
+appVersion: 4.8.1
+version: 0.2.0
+description: Adminer is a full-featured database management tool written in PHP. Conversely to phpMyAdmin, it consist of a single file ready to deploy to the target server. Adminer is available for MySQL, MariaDB, PostgreSQL, SQLite, MS SQL, Oracle, Firebird, SimpleDB, Elasticsearch and MongoDB
+home: https://www.adminer.org
+icon: https://raw.githubusercontent.com/Kong/docker-official-docs/master/adminer/logo.png
+dependencies:
+ - name: common
+ repository: https://charts.bitnami.com/bitnami
+ tags:
+ - bitnami-common
+ version: 2.x
+engine: gotpl
+keywords:
+ - adminer
+ - postgres
+ - mysql
+ - sqlite
+ - elasticsearch
+ - mongodb
+ - database
+ - sql
+maintainers:
+ - name: fzalila
+ email: faiez.zalila@cetic.be
+ url: https://github.com/fzalila
+ - name: alexnuttinck
+ email: alexandre.nuttinck@cetic.be
+ url: https://github.com/alexnuttinck
diff --git a/home/adminer/charts/adminer/LICENSE b/home/adminer/charts/adminer/LICENSE
new file mode 100644
index 0000000000..261eeb9e9f
--- /dev/null
+++ b/home/adminer/charts/adminer/LICENSE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/home/adminer/charts/adminer/README.md b/home/adminer/charts/adminer/README.md
new file mode 100644
index 0000000000..25eef8257a
--- /dev/null
+++ b/home/adminer/charts/adminer/README.md
@@ -0,0 +1,107 @@
+# Helm Chart for Adminer
+
+[](https://circleci.com/gh/cetic/helm-adminer/tree/master) [](https://opensource.org/licenses/Apache-2.0) 
+
+## Introduction
+
+This [Helm](https://github.com/kubernetes/helm) chart installs [Adminer](https://www.adminer.org) in a Kubernetes cluster.
+
+## Prerequisites
+
+- Kubernetes cluster 1.10+
+- Helm 3.0.0+
+- PV provisioner support in the underlying infrastructure.
+
+## Installation
+
+### Add Helm repository
+
+```bash
+helm repo add cetic https://cetic.github.io/helm-charts
+helm repo update
+```
+
+### Configure the chart
+
+The following items can be set via `--set` flag during installation or configured by editing the `values.yaml` directly (need to download the chart first).
+
+#### Configure the way how to expose Adminer service:
+
+- **Ingress**: The ingress controller must be installed in the Kubernetes cluster.
+- **ClusterIP**: Exposes the service on a cluster-internal IP. Choosing this value makes the service only reachable from within the cluster.
+- **NodePort**: Exposes the service on each Node’s IP at a static port (the NodePort). You’ll be able to contact the NodePort service, from outside the cluster, by requesting `NodeIP:NodePort`.
+- **LoadBalancer**: Exposes the service externally using a cloud provider’s load balancer.
+
+### Install the chart
+
+Install the Adminer helm chart with a release name `my-release`:
+
+```bash
+helm install --name my-release cetic/adminer
+```
+
+## Uninstallation
+
+To uninstall/delete the `my-release` deployment:
+
+```bash
+helm delete --purge my-release
+```
+
+## Configuration
+
+The following table lists the configurable parameters of the Adminer chart and the default values.
+
+| Parameter | Description | Default |
+| --------------------------------- | ----------------------------------------------------------------------- | --------------------------- |
+| **Image** |
+| `image.repository` | Image | `adminer` |
+| `image.tag` | Image tag | `4.7.7-standalone` |
+| `image.pullPolicy` | Image pull policy | `IfNotPresent` |
+| `image.pullSecrets` | Image pull secrets for private registry | `[]` |
+| **Config** |
+| `config.plugins` | List of plugins to install. You can find the list of plugins on [GitHub](https://github.com/vrana/adminer/tree/master/plugins)| ``|
+| `config.design` | A bundled design to use. You can find the list of designs on [GitHub](https://github.com/vrana/adminer/tree/master/designs)| ``|
+| `config.externalserver` | The default host | `` |
+| **Service** |
+| `service.type` | Service type | `NodePort` |
+| `service.port` | The service port | `80` |
+| `service.annotations` | Custom annotations for service | `{}` |
+| `service.labels` | Additional custom labels for the service | `{}` |
+| `service.loadBalancerIP` | LoadBalancerIP if service type is `LoadBalancer` | `nil` |
+| `service.loadBalancerSourceRanges`| Address that are allowed when svc is `LoadBalancer` | `[]` |
+| **Ingress** |
+| `ingress.enabled` | Enables Ingress | `false` |
+| `ingress.annotations` | Ingress annotations | `{}` |
+| `ingress.labels` | Custom labels | `{}` |
+| `ingress.hosts` | Ingress accepted hostnames | `[]` |
+| `ingress.tls` | Ingress TLS configuration | `[]` |
+| **Resources** |
+| `resources` | CPU/Memory resource requests/limits | `{}` |
+| **Tolerations** |
+| `tolerations` | Add tolerations | `[]` |
+| **NodeSelector** |
+| `nodeSelector` | node labels for pod assignment | `{}` |
+| **Affinity** |
+| `affinity` | node/pod affinities | `{}` |
+| **LivenessProbe** |
+| `livenessProbe` | Liveness probe settings | `nil` |
+| **ReadnessProbe** |
+| `readinessProbe` | Readiness probe settings | `nil` |
+| `volumeMounts` | Add volumeMount to the adminer container | `nil` |
+| `volumes` | Add volumes to the pod | `nil` |
+
+## Credits
+
+Initially inspired from https://github.com/mogaal/helm-charts/tree/master/adminer.
+
+## Contributing
+
+Feel free to contribute by making a [pull request](https://github.com/cetic/helm-adminer/pull/new/master).
+
+Please read the official [Contribution Guide](https://github.com/helm/charts/blob/master/CONTRIBUTING.md) from Helm for more information on how you can contribute to this Chart.
+
+## License
+
+[Apache License 2.0](/LICENSE.md)
+
diff --git a/home/adminer/charts/adminer/templates/NOTES.txt b/home/adminer/charts/adminer/templates/NOTES.txt
new file mode 100644
index 0000000000..7d187a5890
--- /dev/null
+++ b/home/adminer/charts/adminer/templates/NOTES.txt
@@ -0,0 +1,19 @@
+1. Get the application URL by running these commands:
+{{- if .Values.ingress.enabled }}
+ http{{ if $.Values.ingress.tls }}s{{ end }}://{{ if $.Values.ingress.host }}{{.Values.ingress.host}}{{else}}your-cluster-ip{{end}}{{ $.Values.ingress.path }}
+ {{if not $.Values.ingress.host}}
+{{- end }}
+{{- else if contains "NodePort" .Values.service.type }}
+ export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "adminer.fullname" . }})
+ export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
+ echo http://$NODE_IP:$NODE_PORT
+{{- else if contains "LoadBalancer" .Values.service.type }}
+ NOTE: It may take a few minutes for the LoadBalancer IP to be available.
+ You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "adminer.fullname" . }}'
+ export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "adminer.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
+ echo http://$SERVICE_IP:{{ .Values.service.port }}
+{{- else if contains "ClusterIP" .Values.service.type }}
+ export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "adminer.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
+ echo "Visit http://127.0.0.1:8080 to use your application"
+ kubectl port-forward $POD_NAME 8080:80
+{{- end }}
diff --git a/home/adminer/charts/adminer/templates/_helpers.tpl b/home/adminer/charts/adminer/templates/_helpers.tpl
new file mode 100644
index 0000000000..d223408a51
--- /dev/null
+++ b/home/adminer/charts/adminer/templates/_helpers.tpl
@@ -0,0 +1,32 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "adminer.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "adminer.fullname" -}}
+{{- if .Values.fullnameOverride -}}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default .Chart.Name .Values.nameOverride -}}
+{{- if contains $name .Release.Name -}}
+{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "adminer.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
diff --git a/home/adminer/charts/adminer/templates/deployment.yaml b/home/adminer/charts/adminer/templates/deployment.yaml
new file mode 100644
index 0000000000..7b1db5fbd0
--- /dev/null
+++ b/home/adminer/charts/adminer/templates/deployment.yaml
@@ -0,0 +1,74 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: {{ include "adminer.fullname" . }}
+ labels:
+ app.kubernetes.io/name: {{ include "adminer.name" . }}
+ helm.sh/chart: {{ include "adminer.chart" . }}
+ app.kubernetes.io/instance: {{ .Release.Name }}
+ app.kubernetes.io/managed-by: {{ .Release.Service }}
+spec:
+ replicas: {{ .Values.replicaCount }}
+ selector:
+ matchLabels:
+ app.kubernetes.io/name: {{ include "adminer.name" . }}
+ app.kubernetes.io/instance: {{ .Release.Name }}
+ template:
+ metadata:
+ labels:
+ app.kubernetes.io/name: {{ include "adminer.name" . }}
+ app.kubernetes.io/instance: {{ .Release.Name }}
+ spec:
+ {{- if .Values.image.pullSecrets }}
+ imagePullSecrets:
+ {{- range .Values.image.pullSecrets }}
+ - name: {{ . }}
+ {{- end }}
+ {{- end }}
+ containers:
+ - name: {{ .Chart.Name }}
+ image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
+ imagePullPolicy: {{ .Values.image.pullPolicy }}
+ ports:
+ - name: http
+ containerPort: 8080
+ protocol: TCP
+ env:
+ - name: ADMINER_PLUGINS
+ value: {{ .Values.config.plugins }}
+ - name: ADMINER_DESIGN
+ value: {{ .Values.config.design }}
+ - name: ADMINER_DEFAULT_SERVER
+ value: {{ .Values.config.externalserver }}
+ {{- with .Values.resources }}
+ resources:
+ {{- toYaml . | nindent 12 }}
+ {{- end }}
+ {{- with .Values.volumeMounts }}
+ volumeMounts:
+ {{- toYaml . | nindent 12 }}
+ {{- end }}
+ {{- with .Values.livenessProbe }}
+ livenessProbe:
+ {{ toYaml . | indent 12 }}
+ {{- end }}
+ {{- with .Values.readinessProbe }}
+ readinessProbe:
+ {{ toYaml . | indent 12 }}
+ {{- end }}
+ {{- with .Values.volumes }}
+ volumes:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ {{- with .Values.nodeSelector }}
+ nodeSelector:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ {{- with .Values.affinity }}
+ affinity:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ {{- with .Values.tolerations }}
+ tolerations:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
diff --git a/home/adminer/charts/adminer/templates/ingress.yaml b/home/adminer/charts/adminer/templates/ingress.yaml
new file mode 100644
index 0000000000..56cb3432a8
--- /dev/null
+++ b/home/adminer/charts/adminer/templates/ingress.yaml
@@ -0,0 +1,61 @@
+{{- if .Values.ingress.enabled }}
+apiVersion: {{ include "common.capabilities.ingress.apiVersion" . }}
+kind: Ingress
+metadata:
+ name: {{ template "common.names.fullname" . }}
+ labels: {{- include "common.labels.standard" . | nindent 4 }}
+ {{- if .Values.commonLabels }}
+ {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
+ {{- end }}
+ {{- if or .Values.ingress.annotations .Values.commonAnnotations .Values.ingress.certManager }}
+ annotations:
+ {{- if .Values.ingress.certManager }}
+ kubernetes.io/tls-acme: "true"
+ {{- end }}
+ {{- if .Values.ingress.annotations }}
+ {{- include "common.tplvalues.render" ( dict "value" .Values.ingress.annotations "context" $ ) | nindent 4 }}
+ {{- end }}
+ {{- if .Values.commonAnnotations }}
+ {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
+ {{- end }}
+ {{- end }}
+spec:
+ {{- if and .Values.ingress.ingressClassName (eq "true" (include "common.ingress.supportsIngressClassname" .)) }}
+ ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
+ {{- end }}
+ rules:
+ {{- if .Values.ingress.hostname }}
+ - host: {{ .Values.ingress.hostname }}
+ http:
+ paths:
+ {{- if .Values.ingress.extraPaths }}
+ {{- toYaml .Values.ingress.extraPaths | nindent 10 }}
+ {{- end }}
+ - path: {{ .Values.ingress.path }}
+ {{- if eq "true" (include "common.ingress.supportsPathType" .) }}
+ pathType: {{ .Values.ingress.pathType }}
+ {{- end }}
+ backend: {{- include "common.ingress.backend" (dict "serviceName" (include "common.names.fullname" .) "servicePort" "http" "context" $) | nindent 14 }}
+ {{- end }}
+ {{- range .Values.ingress.extraHosts }}
+ - host: {{ .name | quote }}
+ http:
+ paths:
+ - path: {{ default "/" .path }}
+ {{- if eq "true" (include "common.ingress.supportsPathType" $) }}
+ pathType: {{ default "ImplementationSpecific" .pathType }}
+ {{- end }}
+ backend: {{- include "common.ingress.backend" (dict "serviceName" (include "common.names.fullname" $) "servicePort" "http" "context" $) | nindent 14 }}
+ {{- end }}
+ {{- if or .Values.ingress.tls .Values.ingress.extraTls }}
+ tls:
+ {{- if .Values.ingress.tls }}
+ - hosts:
+ - {{ .Values.ingress.hostname }}
+ secretName: {{ printf "%s-tls" .Values.ingress.hostname }}
+ {{- end }}
+ {{- if .Values.ingress.extraTls }}
+ {{- include "common.tplvalues.render" ( dict "value" .Values.ingress.extraTls "context" $ ) | nindent 4 }}
+ {{- end }}
+ {{- end }}
+{{- end }}
\ No newline at end of file
diff --git a/home/adminer/charts/adminer/templates/service.yaml b/home/adminer/charts/adminer/templates/service.yaml
new file mode 100644
index 0000000000..1ab66d386f
--- /dev/null
+++ b/home/adminer/charts/adminer/templates/service.yaml
@@ -0,0 +1,32 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: {{ include "adminer.fullname" . }}
+ labels:
+ app.kubernetes.io/name: {{ include "adminer.name" . }}
+ helm.sh/chart: {{ include "adminer.chart" . }}
+ app.kubernetes.io/instance: {{ .Release.Name }}
+ app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- if .Values.service.annotations }}
+ annotations:
+{{ toYaml .Values.service.annotations | indent 4 }}
+{{- end }}
+spec:
+ type: {{ .Values.service.type }}
+ {{- if and .Values.service.loadBalancerIP (eq .Values.service.type "LoadBalancer") }}
+ loadBalancerIP: {{ .Values.service.loadBalancerIP }}
+ {{- end }}
+ {{- if and (eq .Values.service.type "LoadBalancer") .Values.service.loadBalancerSourceRanges }}
+ loadBalancerSourceRanges:
+ {{ with .Values.service.loadBalancerSourceRanges }}
+{{ toYaml . | indent 4 }}
+{{- end }}
+ {{- end }}
+ ports:
+ - port: {{ .Values.service.port }}
+ targetPort: http
+ protocol: TCP
+ name: http
+ selector:
+ app.kubernetes.io/name: {{ include "adminer.name" . }}
+ app.kubernetes.io/instance: {{ .Release.Name }}
diff --git a/home/adminer/charts/adminer/values.yaml b/home/adminer/charts/adminer/values.yaml
new file mode 100644
index 0000000000..f557909cbc
--- /dev/null
+++ b/home/adminer/charts/adminer/values.yaml
@@ -0,0 +1,194 @@
+# Default values for adminer.
+# This is a YAML-formatted file.
+# Declare variables to be passed into your templates.
+
+replicaCount: 1
+
+image:
+ repository: adminer
+ tag: 4.8.1-standalone
+ pullPolicy: IfNotPresent
+ pullSecrets: []
+
+# See envs from https://hub.docker.com/_/adminer/
+config:
+ plugins: ""
+ design: "pepa-linha"
+ externalserver: ""
+
+## @section Common parameters
+
+## @param kubeVersion Force target Kubernetes version (using Helm capabilities if not set)
+##
+kubeVersion: ""
+## @param nameOverride String to partially override influxdb.fullname template with a string (will prepend the release name)
+##
+nameOverride: ""
+## @param fullnameOverride String to fully override influxdb.fullname template with a string
+##
+fullnameOverride: ""
+## @param clusterDomain Default Kubernetes cluster domain
+##
+clusterDomain: cluster.local
+## @param commonAnnotations Annotations to add to all deployed objects
+##
+commonAnnotations: {}
+## @param commonLabels Labels to add to all deployed objects
+##
+commonLabels: {}
+## @param extraDeploy Array of extra objects to deploy with the release
+##
+extraDeploy: []
+
+## Enable diagnostic mode in the deployment
+##
+diagnosticMode:
+ ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden)
+ ##
+ enabled: false
+ ## @param diagnosticMode.command Command to override all containers in the deployment
+ ##
+ command:
+ - sleep
+ ## @param diagnosticMode.args Args to override all containers in the deployment
+ ##
+ args:
+ - infinity
+
+service:
+ type: NodePort
+ port: 80
+ annotations: {}
+ ## Set the LoadBalancer service type to internal only.
+ ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
+ ##
+ # loadBalancerIP:
+
+ ## Load Balancer sources
+ ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
+ ##
+ # loadBalancerSourceRanges:
+ # - 10.10.10.0/24
+
+ingress:
+ ## @param ingress.enabled Enable ingress controller resource
+ ##
+ enabled: false
+ ## @param ingress.tls Create TLS Secret
+ ## TLS certificates will be retrieved from a TLS secret with name: {{- printf "%s-tls" .Values.ingress.hostname }}
+ ## You can use the ingress.secrets parameter to create this TLS secret or relay on cert-manager to create it
+ ##
+ tls: false
+ ## DEPRECATED: Use ingress.annotations instead of ingress.certManager
+ ## certManager: false
+ ##
+
+ ## @param ingress.pathType Ingress path type
+ ##
+ pathType: ImplementationSpecific
+ ## @param ingress.apiVersion Force Ingress API version (automatically detected if not set)
+ ##
+ apiVersion: ""
+ ## @param ingress.hostname Default host for the ingress resource
+ ##
+ hostname: adminer.local
+ ## @param ingress.path Ingress path*' in order to use this
+ ## with ALB ingress controllers.
+ ##
+ path: /
+ ## @param ingress.annotations Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations.
+ ## For a full list of possible ingress annotations, please see
+ ## ref: https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md
+ ## Use this parameter to set the required annotations for cert-manager, see
+ ## ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations
+ ##
+ ## e.g:
+ ## annotations:
+ ## kubernetes.io/ingress.class: nginx
+ ## cert-manager.io/cluster-issuer: cluster-issuer-name
+ ##
+ annotations: {}
+ ## @param ingress.extraHosts The list of additional hostnames to be covered with this ingress record.
+ ## Most likely the hostname above will be enough, but in the event more hosts are needed, this is an array
+ ## extraHosts:
+ ## - name: influxdb.local
+ ## path: /
+ ##
+ extraHosts: []
+ ## @param ingress.extraPaths Additional arbitrary path/backend objects
+ ## For example: The ALB ingress controller requires a special rule for handling SSL redirection.
+ ## extraPaths:
+ ## - path: /*
+ ## backend:
+ ## serviceName: ssl-redirect
+ ## servicePort: use-annotation
+ ##
+ extraPaths: []
+ ## @param ingress.extraTls The tls configuration for additional hostnames to be covered with this ingress record.
+ ## see: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
+ ## extraTls:
+ ## - hosts:
+ ## - influxdb.local
+ ## secretName: influxdb.local-tls
+ ##
+ extraTls: []
+ ## @param ingress.secrets If you're providing your own certificates, please use this to add the certificates as secrets
+ ## key and certificate should start with -----BEGIN CERTIFICATE----- or
+ ## -----BEGIN RSA PRIVATE KEY-----
+ ##
+ ## name should line up with a tlsSecret set further up
+ ## If you're using cert-manager, this is unneeded, as it will create the secret for you if it is not set
+ ##
+ ## It is also possible to create and manage the certificates outside of this helm chart
+ ## Please see README.md for more information
+ ## - name: influxdb.local-tls
+ ## key:
+ ## certificate:
+ ##
+ secrets: []
+ ## @param ingress.ingressClassName IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+)
+ ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster .
+ ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/
+ ##
+ ingressClassName: ""
+
+# kubectl create secret generic ca --from-file=ca.pem
+# cat > login-ssl.php << EOF
+# "/secrets/ca.pem"));
+# EOF
+# kubectl create configmap plugins-enabled --from-file=login-ssl.php
+# volumeMounts:
+# - name: ca
+# mountPath: "/secrets/"
+# readOnly: true
+# - name: plugins-enabled
+# mountPath: "/var/www/html/plugins-enabled/"
+# readOnly: true
+
+# volumes:
+# - name: ca
+# secret:
+# secretName: ca
+# - name: plugins-enabled
+# configMap:
+# name: plugins-enabled
+
+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: {}
diff --git a/home/adminer/values.yaml b/home/adminer/values.yaml
new file mode 100644
index 0000000000..770b685207
--- /dev/null
+++ b/home/adminer/values.yaml
@@ -0,0 +1,97 @@
+adminer:
+ # Default values for adminer.
+ # This is a YAML-formatted file.
+ # Declare variables to be passed into your templates.
+
+ replicaCount: 1
+
+ image:
+ repository: adminer
+ tag: 4.8.1-standalone
+ pullPolicy: IfNotPresent
+ pullSecrets: []
+
+ # See envs from https://hub.docker.com/_/adminer/
+ config:
+ plugins: ""
+ design: "pepa-linha"
+ externalserver: ""
+
+ nameOverride: ""
+ fullnameOverride: ""
+
+ service:
+ type: NodePort
+ port: 80
+ annotations: {}
+ ## Set the LoadBalancer service type to internal only.
+ ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
+ ##
+ # loadBalancerIP:
+
+ ## Load Balancer sources
+ ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
+ ##
+ # loadBalancerSourceRanges:
+ # - 10.10.10.0/24
+
+ ## Configure Ingress based on the documentation here: https://kubernetes.io/docs/concepts/services-networking/ingress/
+ ##
+## Configure the ingress resource that allows you to access the
+## ®abbitMQ installation. Set up the URL
+## ref: https://kubernetes.io/docs/user-guide/ingress/
+##
+ ingress:
+ enabled: true
+ path: /
+ pathType: ImplementationSpecific
+ hostname: adminer.jupiter.mein.nl
+ annotations:
+ cert-manager.io/cluster-issuer: letsencrypt-prod
+ tls: true
+ selfSigned: false
+ extraHosts: []
+ extraTls: []
+ secrets: []
+ ingressClassName: "nginx"
+
+ # kubectl create secret generic ca --from-file=ca.pem
+ # cat > login-ssl.php << EOF
+ # "/secrets/ca.pem"));
+ # EOF
+ # kubectl create configmap plugins-enabled --from-file=login-ssl.php
+ # volumeMounts:
+ # - name: ca
+ # mountPath: "/secrets/"
+ # readOnly: true
+ # - name: plugins-enabled
+ # mountPath: "/var/www/html/plugins-enabled/"
+ # readOnly: true
+
+ # volumes:
+ # - name: ca
+ # secret:
+ # secretName: ca
+ # - name: plugins-enabled
+ # configMap:
+ # name: plugins-enabled
+
+ 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: {}
\ No newline at end of file
diff --git a/home/firefly/Chart.yaml.disabled b/home/firefly/Chart.yaml.disabled
new file mode 100644
index 0000000000..86c6cc089a
--- /dev/null
+++ b/home/firefly/Chart.yaml.disabled
@@ -0,0 +1,10 @@
+apiVersion: v2
+name: firefly-iii
+version: 0.0.0
+dependencies:
+ - name: firefly-iii
+ version: 1.2.1
+ repository: https://firefly-iii.github.io/kubernetes
+ - name: importer
+ version: 1.1.3
+ repository: https://firefly-iii.github.io/kubernetes
\ No newline at end of file
diff --git a/home/firefly/values.yaml b/home/firefly/values.yaml
new file mode 100644
index 0000000000..9dbab04abd
--- /dev/null
+++ b/home/firefly/values.yaml
@@ -0,0 +1,214 @@
+firefly-iii:
+ replicaCount: 1
+
+ image:
+ repository: "fireflyiii/core"
+ pullPolicy: IfNotPresent
+ tag: version-5.6.14
+
+ imagePullSecrets: []
+ nameOverride: ""
+ fullnameOverride: ""
+
+ persistence:
+ # -- If you set this to false, uploaded attachments are not stored persistently and will be lost with every restart of the pod
+ enabled: true
+ class: "longhorn"
+ accessModes: ReadWriteOnce
+ storage: 1Gi
+ # -- If you want to use an existing claim, set it here
+ existingClaim: ""
+
+ # -- Environment variables for Firefly III. See docs at: https://github.com/firefly-iii/firefly-iii/blob/main/.env.example
+ config:
+ # -- Set this to the name of a secret to load environment variables from. If defined, values in the secret will override values in config.env
+ existingSecret: "firefly-iii-secret"
+
+ # -- Directly defined environment variables. Use this for non-secret configuration values.
+ env:
+ DEFAULT_LANGUAGE: "nl_NL"
+ DEFAULT_LOCALE: "equal"
+ TZ: "Europe/Amsterdam"
+ TRUSTED_PROXIES: "**"
+
+ # -- A cronjob for [recurring Firefly III tasks](https://docs.firefly-iii.org/firefly-iii/advanced-installation/cron/).
+ cronjob:
+ # -- Set to true to enable the CronJob. Note that you need to specify either cronjob.auth.existingSecret or cronjob.auth.token for it to actually be deployed.
+ enabled: true
+
+ # -- Authorization for the CronJob. See https://docs.firefly-iii.org/firefly-iii/advanced-installation/cron/#request-a-page-over-the-web
+ auth:
+ # -- The name of a secret containing a data.token field with the cronjob token
+ existingSecret: "firefly-iii-cron-secret"
+
+ # -- The token in plain text
+ token: ""
+
+ # -- Annotations for the CronJob
+ annotations: {}
+
+ # -- When to run the CronJob. Defaults to 03:00 as this is when Firefly III executes regular tasks.
+ schedule: "0 3 * * *"
+
+ # -- How many pods to keep around for successful jobs
+ successfulJobsHistoryLimit: 3
+
+ # -- How many pods to keep around for failed jobs
+ failedJobsHistoryLimit: 1
+
+ # -- How to treat failed jobs
+ restartPolicy: OnFailure
+
+ image:
+ repository: curlimages/curl
+ pullPolicy: IfNotPresent
+ tag: 7.86.0
+
+ imagePullSecrets: []
+
+ podAnnotations: {}
+
+ securityContext: {}
+
+ podSecurityContext: {}
+
+ resources: {}
+
+ nodeSelector: {}
+
+ tolerations: []
+
+ affinity: {}
+
+ podAnnotations: {}
+
+ podSecurityContext: {}
+ # fsGroup: 2000
+
+ securityContext: {}
+ # capabilities:
+ # drop:
+ # - ALL
+ # readOnlyRootFilesystem: true
+ # runAsNonRoot: true
+ # runAsUser: 1000
+
+ service:
+ type: ClusterIP
+ port: 80
+
+ ingress:
+ enabled: true
+ className: "nginx"
+ annotations:
+ cert-manager.io/cluster-issuer: letsencrypt-prod
+
+ hosts:
+ - firefly.jupiter.mein.nl
+ tls:
+ - secretName: firefly-tls-certificate
+ hosts:
+ - firefly.jupiter.mein.nl
+
+ 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
+
+ autoscaling:
+ enabled: false
+ minReplicas: 1
+ maxReplicas: 100
+ targetCPUUtilizationPercentage: 80
+ # targetMemoryUtilizationPercentage: 80
+
+ nodeSelector: {}
+
+ tolerations: []
+
+ affinity: {}
+
+importer:
+
+ replicaCount: 1
+
+ # -- The proxies that are trusted by the importer
+ trustedProxies: "**"
+
+ fireflyiii:
+ # -- The URL at which Firefly III is available. If you change this value, click the "Reauthenticate" button on the importer after opening it!
+ url: "http://firefly-firefly-iii:80"
+
+ # -- The URL at which you access Firefly III. Check https://docs.firefly-iii.org/data-importer/install/configure/#configure-fidi to find out if you should set this.
+ vanityUrl: ""
+
+ auth:
+ # -- If you specify an existingSecret, it has to have the accessToken in a .spec.data.accessToken
+ existingSecret: "firefly-iii-importer-secret"
+
+ # -- The access token in plain text
+ accessToken: ""
+
+ image:
+ repository: fireflyiii/data-importer
+ pullPolicy: IfNotPresent
+ tag: "version-0.8.0"
+
+ imagePullSecrets: []
+ nameOverride: ""
+ fullnameOverride: ""
+
+ podAnnotations: {}
+
+ podSecurityContext: {}
+ # fsGroup: 2000
+
+ securityContext: {}
+ # capabilities:
+ # drop:
+ # - ALL
+ # readOnlyRootFilesystem: true
+ # runAsNonRoot: true
+ # runAsUser: 1000
+
+ service:
+ type: ClusterIP
+ port: 80
+
+ ingress:
+ enabled: false
+ className: "nginx"
+ annotations:
+ cert-manager.io/cluster-issuer: letsencrypt-prod
+
+ hosts:
+ - importer.firefly.mein.jupiter.nl
+ tls:
+ - secretName: firefly-importer-tls-certificate
+ hosts:
+ - importer.firefly.mein.jupiter.nl
+
+ 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: {}
\ No newline at end of file
diff --git a/home/homeassistant/Chart.yaml b/home/homeassistant/Chart.yaml
new file mode 100644
index 0000000000..72b3762705
--- /dev/null
+++ b/home/homeassistant/Chart.yaml
@@ -0,0 +1,7 @@
+apiVersion: v2
+name: homeassistant
+version: 0.0.0
+dependencies:
+ - name: home-assistant
+ version: 13.4.2
+ repository: https://k8s-at-home.com/charts/
diff --git a/home/homeassistant/values.yaml b/home/homeassistant/values.yaml
new file mode 100644
index 0000000000..e942dde122
--- /dev/null
+++ b/home/homeassistant/values.yaml
@@ -0,0 +1,177 @@
+home-assistant:
+ image:
+ # -- image repository
+ repository: homeassistant/home-assistant
+ # -- image tag
+ tag: 2022.10.5
+ # -- image pull policy
+ pullPolicy: IfNotPresent
+
+ # -- environment variables.
+ # @default -- See below
+ env:
+ # -- Set the container timezone
+ TZ: Europe/Amsterdam
+
+ # -- Configures service settings for the chart. Normally this does not need to be modified.
+ # @default -- See values.yaml
+ service:
+ main:
+ ports:
+ http:
+ port: 8123
+
+ ingress:
+ # -- Enable and configure ingress settings for the chart under this key.
+ # @default -- See values.yaml
+ main:
+ enabled: true
+ ingressClassName: nginx
+ annotations:
+ nginx.org/websocket-services: home-assistant
+ cert-manager.io/cluster-issuer: letsencrypt-prod
+ hosts:
+ - host: &host homeassistant.europa.jupiter.mein.nl
+ paths:
+ - path: /
+ pathType: Prefix
+ tls:
+ - secretName: homeassistant-tls-certificate
+ hosts:
+ - *host
+
+ # -- Enable devices to be discoverable
+ hostNetwork: true
+
+ # -- When hostNetwork is true set dnsPolicy to ClusterFirstWithHostNet
+ # dnsPolicy: ClusterFirstWithHostNet
+
+ securityContext:
+ # -- (bool) Privileged securityContext may be required if USB devics are accessed directly through the host machine
+ privileged: # true
+
+ # -- Configure persistence settings for the chart under this key.
+ # @default -- See values.yaml
+ persistence:
+ config:
+ enabled: true
+ type: pvc
+ accessMode: ReadWriteOnce
+ size: 5Gi
+ storageClass: longhorn
+
+ # -- Configure a hostPathMount to mount a USB device in the container.
+ # @default -- See values.yaml
+ usb:
+ enabled: false
+ type: hostPath
+ hostPath: /path/to/device
+
+ # -- Enable and configure mariadb database subchart under this key.
+ # For more options see [mariadb chart documentation](https://github.com/bitnami/charts/tree/master/bitnami/mariadb)
+ # @default -- See values.yaml
+ mariadb:
+ enabled: false
+ architecture: standalone
+ auth:
+ database: home-assistant
+ username: home-assistant
+ password: home-assistant-pass
+ rootPassword: home-assistantrootpass
+ primary:
+ persistence:
+ enabled: false
+ storageClass: ""
+
+ # -- Enable and configure postgresql database subchart under this key.
+ # For more options see [postgresql chart documentation](https://github.com/bitnami/charts/tree/master/bitnami/postgresql)
+ # @default -- See values.yaml
+ postgresql:
+ enabled: false
+ image:
+ repository: bitnami/postgresql
+ tag: 14.5.0
+ postgresqlUsername: home-assistant
+ postgresqlPassword: home-assistant-pass
+ postgresqlDatabase: home-assistant
+ persistence:
+ enabled: true
+ storageClass: longhorn
+ size: 4Gi
+
+ metrics: &metrics
+ # -- Enable and configure a Prometheus serviceMonitor for the chart under this key.
+ # @default -- See values.yaml
+ enabled: true
+ serviceMonitor:
+ enabled: true
+ interval: 1m
+ scrapeTimeout: 30s
+ labels: {}
+ ## See https://www.home-assistant.io/docs/authentication/ for where to find
+ ## long lived access token creation under your account profile, which is
+ ## needed to monitor Home Assistant
+ # bearerTokenSecret:
+ # name: ""
+ # key: ""
+
+ # -- Enable and configure Prometheus Rules for the chart under this key.
+ # @default -- See values.yaml
+ prometheusRule:
+ enabled: false
+ labels: {}
+ # -- Configure additionial rules for the chart under this key.
+ # @default -- See prometheusrules.yaml
+ rules: []
+ # - alert: HomeAssistantAbsent
+ # annotations:
+ # description: Home Assistant has disappeared from Prometheus service discovery.
+ # summary: Home Assistant is down.
+ # expr: |
+ # absent(up{job=~".*home-assistant.*"} == 1)
+ # for: 5m
+ # labels:
+ # severity: critical
+
+ addons:
+ codeserver:
+ enabled: true
+ image:
+ repository: codercom/code-server
+ tag: 4.8.1
+ workingDir: "/config"
+ args:
+ - --auth
+ - "none"
+ - --user-data-dir
+ - "/config/.vscode"
+ - --extensions-dir
+ - "/config/.vscode"
+ ingress:
+ enabled: true
+ ingressClassName: nginx
+ annotations:
+ cert-manager.io/cluster-issuer: letsencrypt-prod
+ nginx.org/websocket-services: home-assistant
+ hosts:
+ - host: &config homeassistant-config.europa.jupiter.mein.nl
+ paths:
+ - path: /
+ pathType: Prefix
+ tls:
+ - secretName: home-assistant-config-tls-certificate
+ hosts:
+ - *config
+ volumeMounts:
+ - name: config
+ mountPath: /config
+
+ # git:
+ # enabled: true
+ # user:
+ # name: homeassistant-bot
+ # email: homeassitant@europa.jupiter.mein.nl
+
+
+
+
\ No newline at end of file
diff --git a/home/mariadb/Chart.yaml b/home/mariadb/Chart.yaml
new file mode 100644
index 0000000000..a920b6af7a
--- /dev/null
+++ b/home/mariadb/Chart.yaml
@@ -0,0 +1,7 @@
+apiVersion: v2
+name: mariadb
+version: 0.0.0
+dependencies:
+ - name: mariadb
+ version: 11.3.3
+ repository: https://charts.bitnami.com/bitnami
\ No newline at end of file
diff --git a/home/mariadb/values.yaml b/home/mariadb/values.yaml
new file mode 100644
index 0000000000..b5144cd8bd
--- /dev/null
+++ b/home/mariadb/values.yaml
@@ -0,0 +1,1249 @@
+mariadb:
+ ## @section Global parameters
+ ## Global Docker image parameters
+ ## Please, note that this will override the image parameters, including dependencies, configured to use the global value
+ ## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass
+
+ ## @param global.imageRegistry Global Docker Image registry
+ ## @param global.imagePullSecrets Global Docker registry secret names as an array
+ ## @param global.storageClass Global storage class for dynamic provisioning
+ ##
+ global:
+ imageRegistry: ""
+ ## E.g.
+ ## imagePullSecrets:
+ ## - myRegistryKeySecretName
+ ##
+ imagePullSecrets: []
+ storageClass: ""
+
+ ## @section Common parameters
+
+ ## @param kubeVersion Force target Kubernetes version (using Helm capabilities if not set)
+ ##
+ kubeVersion: ""
+ ## @param nameOverride String to partially override mariadb.fullname
+ ##
+ nameOverride: ""
+ ## @param fullnameOverride String to fully override mariadb.fullname
+ ##
+ fullnameOverride: ""
+ ## @param clusterDomain Default Kubernetes cluster domain
+ ##
+ clusterDomain: cluster.local
+ ## @param commonAnnotations Common annotations to add to all MariaDB resources (sub-charts are not considered)
+ ##
+ commonAnnotations: {}
+ ## @param commonLabels Common labels to add to all MariaDB resources (sub-charts are not considered)
+ ##
+ commonLabels: {}
+ ## @param schedulerName Name of the scheduler (other than default) to dispatch pods
+ ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
+ ##
+ schedulerName: ""
+ ## @param extraDeploy Array of extra objects to deploy with the release (evaluated as a template)
+ ##
+ extraDeploy: []
+
+ ## Enable diagnostic mode in the deployment
+ ##
+ diagnosticMode:
+ ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden)
+ ##
+ enabled: false
+ ## @param diagnosticMode.command Command to override all containers in the deployment
+ ##
+ command:
+ - sleep
+ ## @param diagnosticMode.args Args to override all containers in the deployment
+ ##
+ args:
+ - infinity
+
+ ## @section MariaDB common parameters
+
+ ## Bitnami MariaDB image
+ ## ref: https://hub.docker.com/r/bitnami/mariadb/tags/
+ ## @param image.registry MariaDB image registry
+ ## @param image.repository MariaDB image repository
+ ## @param image.tag MariaDB image tag (immutable tags are recommended)
+ ## @param image.pullPolicy MariaDB image pull policy
+ ## @param image.pullSecrets Specify docker-registry secret names as an array
+ ## @param image.debug Specify if debug logs should be enabled
+ ##
+ image:
+ registry: docker.io
+ repository: bitnami/mariadb
+ tag: 10.7.4-debian-10-r11
+ ## Specify a imagePullPolicy
+ ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
+ ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images
+ ##
+ pullPolicy: IfNotPresent
+ ## Optionally specify an array of imagePullSecrets (secrets must be manually created in the namespace)
+ ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
+ ## Example:
+ ## pullSecrets:
+ ## - myRegistryKeySecretName
+ ##
+ pullSecrets: []
+ ## Set to true if you would like to see extra information on logs
+ ## It turns BASH and/or NAMI debugging in the image
+ ##
+ debug: false
+ ## @param architecture MariaDB architecture (`standalone` or `replication`)
+ ##
+ architecture: standalone
+ ## MariaDB Authentication parameters
+ ##
+ auth:
+ ## @param auth.rootPassword Password for the `root` user. Ignored if existing secret is provided.
+ ## ref: https://github.com/bitnami/bitnami-docker-mariadb#setting-the-root-password-on-first-run
+ ##
+ rootPassword: ""
+ ## @param auth.database Name for a custom database to create
+ ## ref: https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#creating-a-database-on-first-run
+ ##
+ database: my_database
+ ## @param auth.username Name for a custom user to create
+ ## ref: https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#creating-a-database-user-on-first-run
+ ##
+ username: ""
+ ## @param auth.password Password for the new user. Ignored if existing secret is provided
+ ##
+ password: ""
+ ## @param auth.replicationUser MariaDB replication user
+ ## ref: https://github.com/bitnami/bitnami-docker-mariadb#setting-up-a-replication-cluster
+ ##
+ replicationUser: replicator
+ ## @param auth.replicationPassword MariaDB replication user password. Ignored if existing secret is provided
+ ## ref: https://github.com/bitnami/bitnami-docker-mariadb#setting-up-a-replication-cluster
+ ##
+ replicationPassword: ""
+ ## @param auth.existingSecret Use existing secret for password details (`auth.rootPassword`, `auth.password`, `auth.replicationPassword` will be ignored and picked up from this secret). The secret has to contain the keys `mariadb-root-password`, `mariadb-replication-password` and `mariadb-password`
+ ##
+ existingSecret: "mariadb-secret"
+ ## @param auth.forcePassword Force users to specify required passwords
+ ##
+ forcePassword: false
+ ## @param auth.usePasswordFiles Mount credentials as a files instead of using an environment variable
+ ##
+ usePasswordFiles: false
+ ## @param auth.customPasswordFiles Use custom password files when `auth.usePasswordFiles` is set to `true`. Define path for keys `root` and `user`, also define `replicator` if `architecture` is set to `replication`
+ ## Example:
+ ## customPasswordFiles:
+ ## root: /vault/secrets/mariadb-root
+ ## user: /vault/secrets/mariadb-user
+ ## replicator: /vault/secrets/mariadb-replicator
+ ##
+ customPasswordFiles: {}
+ ## @param initdbScripts Dictionary of initdb scripts
+ ## Specify dictionary of scripts to be run at first boot
+ ## Example:
+ ## initdbScripts:
+ ## my_init_script.sh: |
+ ## #!/bin/bash
+ ## echo "Do something."
+ ##
+ initdbScripts: {}
+ ## @param initdbScriptsConfigMap ConfigMap with the initdb scripts (Note: Overrides `initdbScripts`)
+ ##
+ initdbScriptsConfigMap: ""
+
+ ## @section MariaDB Primary parameters
+
+ ## Mariadb Primary parameters
+ ##
+ primary:
+ ## @param primary.command Override default container command on MariaDB Primary container(s) (useful when using custom images)
+ ##
+ command: []
+ ## @param primary.args Override default container args on MariaDB Primary container(s) (useful when using custom images)
+ ##
+ args: []
+ ## @param primary.lifecycleHooks for the MariaDB Primary container(s) to automate configuration before or after startup
+ ##
+ lifecycleHooks: {}
+ ## @param primary.hostAliases Add deployment host aliases
+ ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
+ ##
+ hostAliases: []
+ ## @param primary.configuration [string] MariaDB Primary configuration to be injected as ConfigMap
+ ## ref: https://mysql.com/kb/en/mysql/configuring-mysql-with-mycnf/#example-of-configuration-file
+ ##
+ configuration: |-
+ [mysqld]
+ skip-name-resolve
+ explicit_defaults_for_timestamp
+ basedir=/opt/bitnami/mariadb
+ plugin_dir=/opt/bitnami/mariadb/plugin
+ port=3306
+ socket=/opt/bitnami/mariadb/tmp/mysql.sock
+ tmpdir=/opt/bitnami/mariadb/tmp
+ max_allowed_packet=16M
+ bind-address=0.0.0.0
+ pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid
+ log-error=/opt/bitnami/mariadb/logs/mysqld.log
+ character-set-server=UTF8
+ collation-server=utf8_general_ci
+
+ [client]
+ port=3306
+ socket=/opt/bitnami/mariadb/tmp/mysql.sock
+ default-character-set=UTF8
+ plugin_dir=/opt/bitnami/mariadb/plugin
+
+ [manager]
+ port=3306
+ socket=/opt/bitnami/mariadb/tmp/mysql.sock
+ pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid
+ ## @param primary.existingConfigmap Name of existing ConfigMap with MariaDB Primary configuration.
+ ## NOTE: When it's set the 'configuration' parameter is ignored
+ ##
+ existingConfigmap: ""
+ ## @param primary.updateStrategy.type MariaDB primary statefulset strategy type
+ ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
+ ##
+ updateStrategy:
+ ## StrategyType
+ ## Can be set to RollingUpdate or OnDelete
+ ##
+ type: RollingUpdate
+ ## @param primary.rollingUpdatePartition Partition update strategy for Mariadb Primary statefulset
+ ## https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#partitions
+ ##
+ rollingUpdatePartition: ""
+ ## @param primary.podAnnotations Additional pod annotations for MariaDB primary pods
+ ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
+ ##
+ podAnnotations: {}
+ ## @param primary.podLabels Extra labels for MariaDB primary pods
+ ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
+ ##
+ podLabels: {}
+ ## @param primary.podAffinityPreset MariaDB primary pod affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard`
+ ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
+ ##
+ podAffinityPreset: ""
+ ## @param primary.podAntiAffinityPreset MariaDB primary pod anti-affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard`
+ ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
+ ##
+ podAntiAffinityPreset: soft
+ ## Mariadb Primary node affinity preset
+ ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
+ ##
+ nodeAffinityPreset:
+ ## @param primary.nodeAffinityPreset.type MariaDB primary node affinity preset type. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard`
+ ##
+ type: ""
+ ## @param primary.nodeAffinityPreset.key MariaDB primary node label key to match Ignored if `primary.affinity` is set.
+ ## E.g.
+ ## key: "kubernetes.io/e2e-az-name"
+ ##
+ key: ""
+ ## @param primary.nodeAffinityPreset.values MariaDB primary node label values to match. Ignored if `primary.affinity` is set.
+ ## E.g.
+ ## values:
+ ## - e2e-az1
+ ## - e2e-az2
+ ##
+ values: []
+ ## @param primary.affinity Affinity for MariaDB primary pods assignment
+ ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
+ ## Note: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set
+ ##
+ affinity: {}
+ ## @param primary.nodeSelector Node labels for MariaDB primary pods assignment
+ ## Ref: https://kubernetes.io/docs/user-guide/node-selection/
+ ##
+ nodeSelector: {}
+ ## @param primary.tolerations Tolerations for MariaDB primary pods assignment
+ ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
+ ##
+ tolerations: []
+ ## @param primary.schedulerName Name of the k8s scheduler (other than default)
+ ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
+ ##
+ schedulerName: ""
+ ## @param primary.podManagementPolicy podManagementPolicy to manage scaling operation of MariaDB primary pods
+ ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies
+ ##
+ podManagementPolicy: ""
+ ## @param primary.topologySpreadConstraints Topology Spread Constraints for MariaDB primary pods assignment
+ ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
+ ## E.g.
+ ## topologySpreadConstraints:
+ ## - maxSkew: 1
+ ## topologyKey: topology.kubernetes.io/zone
+ ## whenUnsatisfiable: DoNotSchedule
+ ##
+ topologySpreadConstraints: {}
+ ## @param primary.priorityClassName Priority class for MariaDB primary pods assignment
+ ## Ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
+ ##
+ priorityClassName: ""
+ ## MariaDB primary Pod security context
+ ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
+ ## @param primary.podSecurityContext.enabled Enable security context for MariaDB primary pods
+ ## @param primary.podSecurityContext.fsGroup Group ID for the mounted volumes' filesystem
+ ##
+ podSecurityContext:
+ enabled: true
+ fsGroup: 1001
+ ## MariaDB primary container security context
+ ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
+ ## @param primary.containerSecurityContext.enabled MariaDB primary container securityContext
+ ## @param primary.containerSecurityContext.runAsUser User ID for the MariaDB primary container
+ ## @param primary.containerSecurityContext.runAsNonRoot Set Controller container's Security Context runAsNonRoot
+ ##
+ containerSecurityContext:
+ enabled: true
+ runAsUser: 1001
+ runAsNonRoot: true
+ ## MariaDB primary container's resource requests and limits
+ ## ref: https://kubernetes.io/docs/user-guide/compute-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:'.
+ ## @param primary.resources.limits The resources limits for MariaDB primary containers
+ ## @param primary.resources.requests The requested resources for MariaDB primary containers
+ ##
+ resources:
+ ## Example:
+ ## limits:
+ ## cpu: 100m
+ ## memory: 256Mi
+ limits: {}
+ ## Examples:
+ ## requests:
+ ## cpu: 100m
+ ## memory: 256Mi
+ requests: {}
+ ## Configure extra options for MariaDB primary containers' liveness, readiness and startup probes
+ ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes)
+ ## @param primary.startupProbe.enabled Enable startupProbe
+ ## @param primary.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
+ ## @param primary.startupProbe.periodSeconds Period seconds for startupProbe
+ ## @param primary.startupProbe.timeoutSeconds Timeout seconds for startupProbe
+ ## @param primary.startupProbe.failureThreshold Failure threshold for startupProbe
+ ## @param primary.startupProbe.successThreshold Success threshold for startupProbe
+ ##
+ startupProbe:
+ enabled: false
+ initialDelaySeconds: 120
+ periodSeconds: 15
+ timeoutSeconds: 5
+ failureThreshold: 10
+ successThreshold: 1
+ ## Configure extra options for liveness probe
+ ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
+ ## @param primary.livenessProbe.enabled Enable livenessProbe
+ ## @param primary.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
+ ## @param primary.livenessProbe.periodSeconds Period seconds for livenessProbe
+ ## @param primary.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
+ ## @param primary.livenessProbe.failureThreshold Failure threshold for livenessProbe
+ ## @param primary.livenessProbe.successThreshold Success threshold for livenessProbe
+ ##
+ livenessProbe:
+ enabled: true
+ initialDelaySeconds: 120
+ periodSeconds: 10
+ timeoutSeconds: 1
+ failureThreshold: 3
+ successThreshold: 1
+ ## @param primary.readinessProbe.enabled Enable readinessProbe
+ ## @param primary.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
+ ## @param primary.readinessProbe.periodSeconds Period seconds for readinessProbe
+ ## @param primary.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
+ ## @param primary.readinessProbe.failureThreshold Failure threshold for readinessProbe
+ ## @param primary.readinessProbe.successThreshold Success threshold for readinessProbe
+ ##
+ readinessProbe:
+ enabled: true
+ initialDelaySeconds: 30
+ periodSeconds: 10
+ timeoutSeconds: 1
+ failureThreshold: 3
+ successThreshold: 1
+ ## @param primary.customStartupProbe Override default startup probe for MariaDB primary containers
+ ##
+ customStartupProbe: {}
+ ## @param primary.customLivenessProbe Override default liveness probe for MariaDB primary containers
+ ##
+ customLivenessProbe: {}
+ ## @param primary.customReadinessProbe Override default readiness probe for MariaDB primary containers
+ ##
+ customReadinessProbe: {}
+ ## @param primary.startupWaitOptions Override default builtin startup wait check options for MariaDB primary containers
+ ## `bitnami/mariadb` Docker image has built-in startup check mechanism,
+ ## which periodically checks if MariaDB service has started up and stops it
+ ## if all checks have failed after X tries. Use these to control these checks.
+ ## ref: https://github.com/bitnami/bitnami-docker-mariadb/pull/240
+ ## Example (with default options):
+ ## startupWaitOptions:
+ ## retries: 300
+ ## waitTime: 2
+ ##
+ startupWaitOptions: {}
+ ## @param primary.extraFlags MariaDB primary additional command line flags
+ ## Can be used to specify command line flags, for example:
+ ## E.g.
+ ## extraFlags: "--max-connect-errors=1000 --max_connections=155"
+ ##
+ extraFlags: ""
+ ## @param primary.extraEnvVars Extra environment variables to be set on MariaDB primary containers
+ ## E.g.
+ ## extraEnvVars:
+ ## - name: TZ
+ ## value: "Europe/Paris"
+ ##
+ extraEnvVars: []
+ ## @param primary.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for MariaDB primary containers
+ ##
+ extraEnvVarsCM: ""
+ ## @param primary.extraEnvVarsSecret Name of existing Secret containing extra env vars for MariaDB primary containers
+ ##
+ extraEnvVarsSecret: ""
+ ## Enable persistence using Persistent Volume Claims
+ ## ref: https://kubernetes.io/docs/user-guide/persistent-volumes/
+ ##
+ persistence:
+ ## @param primary.persistence.enabled Enable persistence on MariaDB primary replicas using a `PersistentVolumeClaim`. If false, use emptyDir
+ ##
+ enabled: true
+ ## @param primary.persistence.existingClaim Name of an existing `PersistentVolumeClaim` for MariaDB primary replicas
+ ## NOTE: When it's set the rest of persistence parameters are ignored
+ ##
+ existingClaim: ""
+ ## @param primary.persistence.subPath Subdirectory of the volume to mount at
+ ##
+ subPath: ""
+ ## @param primary.persistence.storageClass MariaDB primary persistent volume storage Class
+ ## If defined, storageClassName:
+ ## 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: "nfs"
+ ## @param primary.persistence.annotations MariaDB primary persistent volume claim annotations
+ ##
+ annotations: {}
+ ## @param primary.persistence.accessModes MariaDB primary persistent volume access Modes
+ ##
+ accessModes:
+ - ReadWriteOnce
+ ## @param primary.persistence.size MariaDB primary persistent volume size
+ ##
+ size: 8Gi
+ ## @param primary.persistence.selector Selector to match an existing Persistent Volume
+ ## selector:
+ ## matchLabels:
+ ## app: my-app
+ ##
+ selector: {}
+ ## @param primary.extraVolumes Optionally specify extra list of additional volumes to the MariaDB Primary pod(s)
+ ##
+ extraVolumes: []
+ ## @param primary.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the MariaDB Primary container(s)
+ ##
+ extraVolumeMounts: []
+ ## @param primary.initContainers Add additional init containers for the MariaDB Primary pod(s)
+ ##
+ initContainers: []
+ ## @param primary.sidecars Add additional sidecar containers for the MariaDB Primary pod(s)
+ ##
+ sidecars: []
+ ## MariaDB Primary Service parameters
+ ##
+ service:
+ ## @param primary.service.type MariaDB Primary Kubernetes service type
+ ##
+ type: ClusterIP
+ ## @param primary.service.ports.mysql MariaDB Primary Kubernetes service port
+ ##
+ ports:
+ mysql: 3306
+ ## @param primary.service.nodePorts.mysql MariaDB Primary Kubernetes service node port
+ ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
+ ##
+ nodePorts:
+ mysql: ""
+ ## @param primary.service.clusterIP MariaDB Primary Kubernetes service clusterIP IP
+ ##
+ clusterIP: ""
+ ## @param primary.service.loadBalancerIP MariaDB Primary loadBalancerIP if service type is `LoadBalancer`
+ ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
+ ##
+ loadBalancerIP: ""
+ ## @param primary.service.externalTrafficPolicy Enable client source IP preservation
+ ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
+ ##
+ externalTrafficPolicy: Cluster
+ ## @param primary.service.loadBalancerSourceRanges Address that are allowed when MariaDB Primary service is LoadBalancer
+ ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
+ ## E.g.
+ ## loadBalancerSourceRanges:
+ ## - 10.10.10.0/24
+ ##
+ loadBalancerSourceRanges: []
+ ## @param primary.service.extraPorts Extra ports to expose (normally used with the `sidecar` value)
+ ##
+ extraPorts: []
+ ## @param primary.service.annotations Provide any additional annotations which may be required
+ ##
+ annotations: {}
+ ## @param primary.service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP"
+ ## If "ClientIP", consecutive client requests will be directed to the same Pod
+ ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
+ ##
+ sessionAffinity: None
+ ## @param primary.service.sessionAffinityConfig Additional settings for the sessionAffinity
+ ## sessionAffinityConfig:
+ ## clientIP:
+ ## timeoutSeconds: 300
+ sessionAffinityConfig: {}
+ ## MariaDB primary Pod Disruption Budget configuration
+ ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
+ ##
+ pdb:
+ ## @param primary.pdb.create Enable/disable a Pod Disruption Budget creation for MariaDB primary pods
+ ##
+ create: false
+ ## @param primary.pdb.minAvailable Minimum number/percentage of MariaDB primary pods that must still be available after the eviction
+ ##
+ minAvailable: 1
+ ## @param primary.pdb.maxUnavailable Maximum number/percentage of MariaDB primary pods that can be unavailable after the eviction
+ ##
+ maxUnavailable: ""
+ ## @param primary.revisionHistoryLimit Maximum number of revisions that will be maintained in the StatefulSet
+ ##
+ revisionHistoryLimit: 10
+
+ ## @section MariaDB Secondary parameters
+
+ ## Mariadb Secondary parameters
+ ##
+ secondary:
+ ## @param secondary.replicaCount Number of MariaDB secondary replicas
+ ##
+ replicaCount: 1
+ ## @param secondary.command Override default container command on MariaDB Secondary container(s) (useful when using custom images)
+ ##
+ command: []
+ ## @param secondary.args Override default container args on MariaDB Secondary container(s) (useful when using custom images)
+ ##
+ args: []
+ ## @param secondary.lifecycleHooks for the MariaDB Secondary container(s) to automate configuration before or after startup
+ ##
+ lifecycleHooks: {}
+ ## @param secondary.hostAliases Add deployment host aliases
+ ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
+ ##
+ hostAliases: []
+ ## @param secondary.configuration [string] MariaDB Secondary configuration to be injected as ConfigMap
+ ## ref: https://mysql.com/kb/en/mysql/configuring-mysql-with-mycnf/#example-of-configuration-file
+ ##
+ configuration: |-
+ [mysqld]
+ skip-name-resolve
+ explicit_defaults_for_timestamp
+ basedir=/opt/bitnami/mariadb
+ port=3306
+ socket=/opt/bitnami/mariadb/tmp/mysql.sock
+ tmpdir=/opt/bitnami/mariadb/tmp
+ max_allowed_packet=16M
+ bind-address=0.0.0.0
+ pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid
+ log-error=/opt/bitnami/mariadb/logs/mysqld.log
+ character-set-server=UTF8
+ collation-server=utf8_general_ci
+
+ [client]
+ port=3306
+ socket=/opt/bitnami/mariadb/tmp/mysql.sock
+ default-character-set=UTF8
+
+ [manager]
+ port=3306
+ socket=/opt/bitnami/mariadb/tmp/mysql.sock
+ pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid
+ ## @param secondary.existingConfigmap Name of existing ConfigMap with MariaDB Secondary configuration.
+ ## NOTE: When it's set the 'configuration' parameter is ignored
+ ##
+ existingConfigmap: ""
+ ## @param secondary.updateStrategy.type MariaDB secondary statefulset strategy type
+ ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
+ ##
+ updateStrategy:
+ ## StrategyType
+ ## Can be set to RollingUpdate or OnDelete
+ ##
+ type: RollingUpdate
+ ## @param secondary.rollingUpdatePartition Partition update strategy for Mariadb Secondary statefulset
+ ## https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#partitions
+ ##
+ rollingUpdatePartition: ""
+ ## @param secondary.podAnnotations Additional pod annotations for MariaDB secondary pods
+ ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
+ ##
+ podAnnotations: {}
+ ## @param secondary.podLabels Extra labels for MariaDB secondary pods
+ ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
+ ##
+ podLabels: {}
+ ## @param secondary.podAffinityPreset MariaDB secondary pod affinity preset. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard`
+ ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
+ ##
+ podAffinityPreset: ""
+ ## @param secondary.podAntiAffinityPreset MariaDB secondary pod anti-affinity preset. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard`
+ ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
+ ##
+ podAntiAffinityPreset: soft
+ ## Mariadb Secondary node affinity preset
+ ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
+ ##
+ nodeAffinityPreset:
+ ## @param secondary.nodeAffinityPreset.type MariaDB secondary node affinity preset type. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard`
+ ##
+ type: ""
+ ## @param secondary.nodeAffinityPreset.key MariaDB secondary node label key to match Ignored if `secondary.affinity` is set.
+ ## E.g.
+ ## key: "kubernetes.io/e2e-az-name"
+ ##
+ key: ""
+ ## @param secondary.nodeAffinityPreset.values MariaDB secondary node label values to match. Ignored if `secondary.affinity` is set.
+ ## E.g.
+ ## values:
+ ## - e2e-az1
+ ## - e2e-az2
+ ##
+ values: []
+ ## @param secondary.affinity Affinity for MariaDB secondary pods assignment
+ ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
+ ## Note: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set
+ ##
+ affinity: {}
+ ## @param secondary.nodeSelector Node labels for MariaDB secondary pods assignment
+ ## Ref: https://kubernetes.io/docs/user-guide/node-selection/
+ ##
+ nodeSelector: {}
+ ## @param secondary.tolerations Tolerations for MariaDB secondary pods assignment
+ ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
+ ##
+ tolerations: []
+ ## @param secondary.topologySpreadConstraints Topology Spread Constraints for MariaDB secondary pods assignment
+ ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
+ ## E.g.
+ ## topologySpreadConstraints:
+ ## - maxSkew: 1
+ ## topologyKey: topology.kubernetes.io/zone
+ ## whenUnsatisfiable: DoNotSchedule
+ ##
+ topologySpreadConstraints: {}
+ ## @param secondary.priorityClassName Priority class for MariaDB secondary pods assignment
+ ## Ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
+ ##
+ priorityClassName: ""
+ ## @param secondary.schedulerName Name of the k8s scheduler (other than default)
+ ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
+ ##
+ schedulerName: ""
+ ## @param secondary.podManagementPolicy podManagementPolicy to manage scaling operation of MariaDB secondary pods
+ ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies
+ ##
+ podManagementPolicy: ""
+ ## MariaDB secondary Pod security context
+ ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
+ ## @param secondary.podSecurityContext.enabled Enable security context for MariaDB secondary pods
+ ## @param secondary.podSecurityContext.fsGroup Group ID for the mounted volumes' filesystem
+ ##
+ podSecurityContext:
+ enabled: true
+ fsGroup: 1001
+ ## MariaDB secondary container security context
+ ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
+ ## @param secondary.containerSecurityContext.enabled MariaDB secondary container securityContext
+ ## @param secondary.containerSecurityContext.runAsUser User ID for the MariaDB secondary container
+ ## @param secondary.containerSecurityContext.runAsNonRoot Set Controller container's Security Context runAsNonRoot
+ ##
+ containerSecurityContext:
+ enabled: true
+ runAsUser: 1001
+ runAsNonRoot: true
+ ## MariaDB secondary container's resource requests and limits
+ ## ref: https://kubernetes.io/docs/user-guide/compute-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:'.
+ ## @param secondary.resources.limits The resources limits for MariaDB secondary containers
+ ## @param secondary.resources.requests The requested resources for MariaDB secondary containers
+ ##
+ resources:
+ ## Example:
+ ## limits:
+ ## cpu: 100m
+ ## memory: 256Mi
+ limits: {}
+ ## Examples:
+ ## requests:
+ ## cpu: 100m
+ ## memory: 256Mi
+ requests: {}
+ ## Configure extra options for MariaDB Secondary containers' liveness, readiness and startup probes
+ ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes)
+ ## @param secondary.startupProbe.enabled Enable startupProbe
+ ## @param secondary.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
+ ## @param secondary.startupProbe.periodSeconds Period seconds for startupProbe
+ ## @param secondary.startupProbe.timeoutSeconds Timeout seconds for startupProbe
+ ## @param secondary.startupProbe.failureThreshold Failure threshold for startupProbe
+ ## @param secondary.startupProbe.successThreshold Success threshold for startupProbe
+ ##
+ startupProbe:
+ enabled: false
+ initialDelaySeconds: 120
+ periodSeconds: 15
+ timeoutSeconds: 5
+ failureThreshold: 10
+ successThreshold: 1
+ ## Configure extra options for liveness probe
+ ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
+ ## @param secondary.livenessProbe.enabled Enable livenessProbe
+ ## @param secondary.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
+ ## @param secondary.livenessProbe.periodSeconds Period seconds for livenessProbe
+ ## @param secondary.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
+ ## @param secondary.livenessProbe.failureThreshold Failure threshold for livenessProbe
+ ## @param secondary.livenessProbe.successThreshold Success threshold for livenessProbe
+ ##
+ livenessProbe:
+ enabled: true
+ initialDelaySeconds: 120
+ periodSeconds: 10
+ timeoutSeconds: 1
+ failureThreshold: 3
+ successThreshold: 1
+ ## @param secondary.readinessProbe.enabled Enable readinessProbe
+ ## @param secondary.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
+ ## @param secondary.readinessProbe.periodSeconds Period seconds for readinessProbe
+ ## @param secondary.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
+ ## @param secondary.readinessProbe.failureThreshold Failure threshold for readinessProbe
+ ## @param secondary.readinessProbe.successThreshold Success threshold for readinessProbe
+ ##
+ readinessProbe:
+ enabled: true
+ initialDelaySeconds: 30
+ periodSeconds: 10
+ timeoutSeconds: 1
+ failureThreshold: 3
+ successThreshold: 1
+ ## @param secondary.customStartupProbe Override default startup probe for MariaDB secondary containers
+ ##
+ customStartupProbe: {}
+ ## @param secondary.customLivenessProbe Override default liveness probe for MariaDB secondary containers
+ ##
+ customLivenessProbe: {}
+ ## @param secondary.customReadinessProbe Override default readiness probe for MariaDB secondary containers
+ ##
+ customReadinessProbe: {}
+ ## @param secondary.startupWaitOptions Override default builtin startup wait check options for MariaDB secondary containers
+ ## `bitnami/mariadb` Docker image has built-in startup check mechanism,
+ ## which periodically checks if MariaDB service has started up and stops it
+ ## if all checks have failed after X tries. Use these to control these checks.
+ ## ref: https://github.com/bitnami/bitnami-docker-mariadb/pull/240
+ ## Example (with default options):
+ ## startupWaitOptions:
+ ## retries: 300
+ ## waitTime: 2
+ ##
+ startupWaitOptions: {}
+ ## @param secondary.extraFlags MariaDB secondary additional command line flags
+ ## Can be used to specify command line flags, for example:
+ ## E.g.
+ ## extraFlags: "--max-connect-errors=1000 --max_connections=155"
+ ##
+ extraFlags: ""
+ ## @param secondary.extraEnvVars Extra environment variables to be set on MariaDB secondary containers
+ ## E.g.
+ ## extraEnvVars:
+ ## - name: TZ
+ ## value: "Europe/Paris"
+ ##
+ extraEnvVars: []
+ ## @param secondary.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for MariaDB secondary containers
+ ##
+ extraEnvVarsCM: ""
+ ## @param secondary.extraEnvVarsSecret Name of existing Secret containing extra env vars for MariaDB secondary containers
+ ##
+ extraEnvVarsSecret: ""
+ ## Enable persistence using Persistent Volume Claims
+ ## ref: https://kubernetes.io/docs/user-guide/persistent-volumes/
+ ##
+ persistence:
+ ## @param secondary.persistence.enabled Enable persistence on MariaDB secondary replicas using a `PersistentVolumeClaim`
+ ##
+ enabled: true
+ ## @param secondary.persistence.subPath Subdirectory of the volume to mount at
+ ##
+ subPath: ""
+ ## @param secondary.persistence.storageClass MariaDB secondary persistent volume storage Class
+ ## If defined, storageClassName:
+ ## 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: ""
+ ## @param secondary.persistence.annotations MariaDB secondary persistent volume claim annotations
+ ##
+ annotations: {}
+ ## @param secondary.persistence.accessModes MariaDB secondary persistent volume access Modes
+ ##
+ accessModes:
+ - ReadWriteOnce
+ ## @param secondary.persistence.size MariaDB secondary persistent volume size
+ ##
+ size: 8Gi
+ ## @param secondary.persistence.selector Selector to match an existing Persistent Volume
+ ## selector:
+ ## matchLabels:
+ ## app: my-app
+ ##
+ selector: {}
+ ## @param secondary.extraVolumes Optionally specify extra list of additional volumes to the MariaDB secondary pod(s)
+ ##
+ extraVolumes: []
+ ## @param secondary.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the MariaDB secondary container(s)
+ ##
+ extraVolumeMounts: []
+ ## @param secondary.initContainers Add additional init containers for the MariaDB secondary pod(s)
+ ##
+ initContainers: []
+ ## @param secondary.sidecars Add additional sidecar containers for the MariaDB secondary pod(s)
+ ##
+ sidecars: []
+ ## MariaDB Secondary Service parameters
+ ##
+ service:
+ ## @param secondary.service.type MariaDB secondary Kubernetes service type
+ ##
+ type: ClusterIP
+ ## @param secondary.service.ports.mysql MariaDB secondary Kubernetes service port
+ ##
+ ports:
+ mysql: 3306
+ ## @param secondary.service.nodePorts.mysql MariaDB secondary Kubernetes service node port
+ ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
+ ##
+ nodePorts:
+ mysql: ""
+ ## @param secondary.service.clusterIP MariaDB secondary Kubernetes service clusterIP IP
+ ## e.g:
+ ## clusterIP: None
+ ##
+ clusterIP: ""
+ ## @param secondary.service.loadBalancerIP MariaDB secondary loadBalancerIP if service type is `LoadBalancer`
+ ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
+ ##
+ loadBalancerIP: ""
+ ## @param secondary.service.externalTrafficPolicy Enable client source IP preservation
+ ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
+ ##
+ externalTrafficPolicy: Cluster
+ ## @param secondary.service.loadBalancerSourceRanges Address that are allowed when MariaDB secondary service is LoadBalancer
+ ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
+ ## E.g.
+ ## loadBalancerSourceRanges:
+ ## - 10.10.10.0/24
+ ##
+ loadBalancerSourceRanges: []
+ ## @param secondary.service.extraPorts Extra ports to expose (normally used with the `sidecar` value)
+ ##
+ extraPorts: []
+ ## @param secondary.service.annotations Provide any additional annotations which may be required
+ ##
+ annotations: {}
+ ## @param secondary.service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP"
+ ## If "ClientIP", consecutive client requests will be directed to the same Pod
+ ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
+ ##
+ sessionAffinity: None
+ ## @param secondary.service.sessionAffinityConfig Additional settings for the sessionAffinity
+ ## sessionAffinityConfig:
+ ## clientIP:
+ ## timeoutSeconds: 300
+ sessionAffinityConfig: {}
+ ## MariaDB secondary Pod Disruption Budget configuration
+ ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
+ ##
+ pdb:
+ ## @param secondary.pdb.create Enable/disable a Pod Disruption Budget creation for MariaDB secondary pods
+ ##
+ create: false
+ ## @param secondary.pdb.minAvailable Minimum number/percentage of MariaDB secondary pods that should remain scheduled
+ ##
+ minAvailable: 1
+ ## @param secondary.pdb.maxUnavailable Maximum number/percentage of MariaDB secondary pods that may be made unavailable
+ ##
+ maxUnavailable: ""
+ ## @param secondary.revisionHistoryLimit Maximum number of revisions that will be maintained in the StatefulSet
+ ##
+ revisionHistoryLimit: 10
+
+ ## @section RBAC parameters
+
+ ## MariaDB pods ServiceAccount
+ ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
+ ##
+ serviceAccount:
+ ## @param serviceAccount.create Enable the creation of a ServiceAccount for MariaDB pods
+ ##
+ create: true
+ ## @param serviceAccount.name Name of the created ServiceAccount
+ ## If not set and create is true, a name is generated using the mariadb.fullname template
+ ##
+ name: ""
+ ## @param serviceAccount.annotations Annotations for MariaDB Service Account
+ ##
+ annotations: {}
+ ## @param serviceAccount.automountServiceAccountToken Automount service account token for the server service account
+ ##
+ automountServiceAccountToken: false
+ ## Role Based Access
+ ## ref: https://kubernetes.io/docs/admin/authorization/rbac/
+ ##
+ rbac:
+ ## @param rbac.create Whether to create and use RBAC resources or not
+ ##
+ create: false
+
+ ## @section Volume Permissions parameters
+
+ ## Init containers parameters:
+ ## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section.
+ ##
+ volumePermissions:
+ ## @param volumePermissions.enabled Enable init container that changes the owner and group of the persistent volume(s) mountpoint to `runAsUser:fsGroup`
+ ##
+ enabled: false
+ ## @param volumePermissions.image.registry Init container volume-permissions image registry
+ ## @param volumePermissions.image.repository Init container volume-permissions image repository
+ ## @param volumePermissions.image.tag Init container volume-permissions image tag (immutable tags are recommended)
+ ## @param volumePermissions.image.pullPolicy Init container volume-permissions image pull policy
+ ## @param volumePermissions.image.pullSecrets Specify docker-registry secret names as an array
+ ##
+ image:
+ registry: docker.io
+ repository: bitnami/bitnami-shell
+ tag: 10-debian-10-r349
+ pullPolicy: IfNotPresent
+ ## Optionally specify an array of imagePullSecrets (secrets must be manually created in the namespace)
+ ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
+ ## Example:
+ ## pullSecrets:
+ ## - myRegistryKeySecretName
+ ##
+ pullSecrets: []
+ ## @param volumePermissions.resources.limits Init container volume-permissions resource limits
+ ## @param volumePermissions.resources.requests Init container volume-permissions resource requests
+ ##
+ resources:
+ limits: {}
+ requests: {}
+
+ ## @section Metrics parameters
+
+ ## Mysqld Prometheus exporter parameters
+ ##
+ metrics:
+ ## @param metrics.enabled Start a side-car prometheus exporter
+ ##
+ enabled: false
+ ## @param metrics.image.registry Exporter image registry
+ ## @param metrics.image.repository Exporter image repository
+ ## @param metrics.image.tag Exporter image tag (immutable tags are recommended)
+ ## @param metrics.image.pullPolicy Exporter image pull policy
+ ## @param metrics.image.pullSecrets Specify docker-registry secret names as an array
+ ##
+ image:
+ registry: docker.io
+ repository: bitnami/mysqld-exporter
+ tag: 0.13.0-debian-10-r256
+ pullPolicy: IfNotPresent
+ ## Optionally specify an array of imagePullSecrets (secrets must be manually created in the namespace)
+ ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
+ ## Example:
+ ## pullSecrets:
+ ## - myRegistryKeySecretName
+ ##
+ pullSecrets: []
+ ## @param metrics.annotations [object] Annotations for the Exporter pod
+ ##
+ annotations:
+ prometheus.io/scrape: "true"
+ prometheus.io/port: "9104"
+ ## @param metrics.extraArgs [object] Extra args to be passed to mysqld_exporter
+ ## ref: https://github.com/prometheus/mysqld_exporter/
+ ## E.g.
+ ## - --collect.auto_increment.columns
+ ## - --collect.binlog_size
+ ## - --collect.engine_innodb_status
+ ## - --collect.engine_tokudb_status
+ ## - --collect.global_status
+ ## - --collect.global_variables
+ ## - --collect.info_schema.clientstats
+ ## - --collect.info_schema.innodb_metrics
+ ## - --collect.info_schema.innodb_tablespaces
+ ## - --collect.info_schema.innodb_cmp
+ ## - --collect.info_schema.innodb_cmpmem
+ ## - --collect.info_schema.processlist
+ ## - --collect.info_schema.processlist.min_time
+ ## - --collect.info_schema.query_response_time
+ ## - --collect.info_schema.tables
+ ## - --collect.info_schema.tables.databases
+ ## - --collect.info_schema.tablestats
+ ## - --collect.info_schema.userstats
+ ## - --collect.perf_schema.eventsstatements
+ ## - --collect.perf_schema.eventsstatements.digest_text_limit
+ ## - --collect.perf_schema.eventsstatements.limit
+ ## - --collect.perf_schema.eventsstatements.timelimit
+ ## - --collect.perf_schema.eventswaits
+ ## - --collect.perf_schema.file_events
+ ## - --collect.perf_schema.file_instances
+ ## - --collect.perf_schema.indexiowaits
+ ## - --collect.perf_schema.tableiowaits
+ ## - --collect.perf_schema.tablelocks
+ ## - --collect.perf_schema.replication_group_member_stats
+ ## - --collect.slave_status
+ ## - --collect.slave_hosts
+ ## - --collect.heartbeat
+ ## - --collect.heartbeat.database
+ ## - --collect.heartbeat.table
+ ##
+ extraArgs:
+ primary: []
+ secondary: []
+ ## MariaDB metrics container Security Context
+ ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
+ ## @param metrics.containerSecurityContext.enabled Enable security context for MariaDB metrics container
+ ## Example:
+ ## containerSecurityContext:
+ ## enabled: true
+ ## capabilities:
+ ## drop: ["NET_RAW"]
+ ## readOnlyRootFilesystem: true
+ ##
+ containerSecurityContext:
+ enabled: false
+ ## Mysqld Prometheus exporter resource requests and limits
+ ## ref: https://kubernetes.io/docs/user-guide/compute-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:'.
+ ## @param metrics.resources.limits The resources limits for MariaDB prometheus exporter containers
+ ## @param metrics.resources.requests The requested resources for MariaDB prometheus exporter containers
+ ##
+ resources:
+ ## Example:
+ ## limits:
+ ## cpu: 100m
+ ## memory: 256Mi
+ limits: {}
+ ## Examples:
+ ## requests:
+ ## cpu: 100m
+ ## memory: 256Mi
+ requests: {}
+ ## Configure extra options for liveness probe
+ ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
+ ## @param metrics.livenessProbe.enabled Enable livenessProbe
+ ## @param metrics.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
+ ## @param metrics.livenessProbe.periodSeconds Period seconds for livenessProbe
+ ## @param metrics.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
+ ## @param metrics.livenessProbe.failureThreshold Failure threshold for livenessProbe
+ ## @param metrics.livenessProbe.successThreshold Success threshold for livenessProbe
+ ##
+ livenessProbe:
+ enabled: true
+ initialDelaySeconds: 120
+ periodSeconds: 10
+ timeoutSeconds: 1
+ successThreshold: 1
+ failureThreshold: 3
+ ## Configure extra options for readiness probe
+ ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
+ ## @param metrics.readinessProbe.enabled Enable readinessProbe
+ ## @param metrics.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
+ ## @param metrics.readinessProbe.periodSeconds Period seconds for readinessProbe
+ ## @param metrics.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
+ ## @param metrics.readinessProbe.failureThreshold Failure threshold for readinessProbe
+ ## @param metrics.readinessProbe.successThreshold Success threshold for readinessProbe
+ ##
+ readinessProbe:
+ enabled: true
+ initialDelaySeconds: 30
+ periodSeconds: 10
+ timeoutSeconds: 1
+ successThreshold: 1
+ failureThreshold: 3
+ ## Prometheus Service Monitor
+ ## ref: https://github.com/coreos/prometheus-operator
+ ##
+ serviceMonitor:
+ ## @param metrics.serviceMonitor.enabled Create ServiceMonitor Resource for scraping metrics using PrometheusOperator
+ ##
+ enabled: false
+ ## @param metrics.serviceMonitor.namespace Namespace which Prometheus is running in
+ ##
+ namespace: ""
+ ## @param metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus.
+ ##
+ jobLabel: ""
+ ## @param metrics.serviceMonitor.interval Interval at which metrics should be scraped
+ ##
+ interval: 30s
+ ## @param metrics.serviceMonitor.scrapeTimeout Specify the timeout after which the scrape is ended
+ ## e.g:
+ ## scrapeTimeout: 30s
+ ##
+ scrapeTimeout: ""
+ ## @param metrics.serviceMonitor.relabelings RelabelConfigs to apply to samples before scraping
+ ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
+ ##
+ relabelings: []
+ ## @param metrics.serviceMonitor.metricRelabelings MetricRelabelConfigs to apply to samples before ingestion
+ ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
+ ##
+ metricRelabelings: []
+ ## @param metrics.serviceMonitor.honorLabels honorLabels chooses the metric's labels on collisions with target labels
+ ##
+ honorLabels: false
+ ## @param metrics.serviceMonitor.selector ServiceMonitor selector labels
+ ## ref: https://github.com/bitnami/charts/tree/master/bitnami/prometheus-operator#prometheus-configuration
+ ##
+ ## selector:
+ ## prometheus: my-prometheus
+ ##
+ selector: {}
+ ## @param metrics.serviceMonitor.labels Extra labels for the ServiceMonitor
+ ##
+ labels: {}
+ ## Prometheus Operator PrometheusRule configuration
+ ##
+ prometheusRule:
+ ## @param metrics.prometheusRule.enabled if `true`, creates a Prometheus Operator PrometheusRule (also requires `metrics.enabled` to be `true` and `metrics.prometheusRule.rules`)
+ ##
+ enabled: false
+ ## @param metrics.prometheusRule.namespace Namespace for the PrometheusRule Resource (defaults to the Release Namespace)
+ ##
+ namespace: ""
+ ## @param metrics.prometheusRule.additionalLabels Additional labels that can be used so PrometheusRule will be discovered by Prometheus
+ ##
+ additionalLabels: {}
+ ## @param metrics.prometheusRule.rules Prometheus Rule definitions
+ ## - alert: MariaDB-Down
+ ## expr: absent(up{job="mariadb"} == 1)
+ ## for: 5m
+ ## labels:
+ ## severity: warning
+ ## service: mariadb
+ ## annotations:
+ ## message: 'MariaDB instance {{ $labels.instance }} is down'
+ ## summary: MariaDB instance is down
+ ##
+ rules: []
+
+ ## @section NetworkPolicy parameters
+
+ ## Add networkpolicies
+ ##
+ networkPolicy:
+ ## @param networkPolicy.enabled Enable network policies
+ ##
+ enabled: false
+ ## @param networkPolicy.metrics.enabled Enable network policy for metrics (prometheus)
+ ## @param networkPolicy.metrics.namespaceSelector [object] Monitoring namespace selector labels. These labels will be used to identify the prometheus' namespace.
+ ## @param networkPolicy.metrics.podSelector [object] Monitoring pod selector labels. These labels will be used to identify the Prometheus pods.
+ ##
+ metrics:
+ enabled: false
+ ## e.g:
+ ## podSelector:
+ ## label: monitoring
+ ##
+ podSelector: {}
+ ## e.g:
+ ## namespaceSelector:
+ ## label: monitoring
+ ##
+ namespaceSelector: {}
+ ## @param networkPolicy.ingressRules.primaryAccessOnlyFrom.enabled Enable ingress rule that makes primary mariadb nodes only accessible from a particular origin.
+ ## @param networkPolicy.ingressRules.primaryAccessOnlyFrom.namespaceSelector [object] Namespace selector label that is allowed to access the primary node. This label will be used to identified the allowed namespace(s).
+ ## @param networkPolicy.ingressRules.primaryAccessOnlyFrom.podSelector [object] Pods selector label that is allowed to access the primary node. This label will be used to identified the allowed pod(s).
+ ## @param networkPolicy.ingressRules.primaryAccessOnlyFrom.customRules [object] Custom network policy for the primary node.
+ ## @param networkPolicy.ingressRules.secondaryAccessOnlyFrom.enabled Enable ingress rule that makes primary mariadb nodes only accessible from a particular origin.
+ ## @param networkPolicy.ingressRules.secondaryAccessOnlyFrom.namespaceSelector [object] Namespace selector label that is allowed to acces the secondary nodes. This label will be used to identified the allowed namespace(s).
+ ## @param networkPolicy.ingressRules.secondaryAccessOnlyFrom.podSelector [object] Pods selector label that is allowed to access the secondary nodes. This label will be used to identified the allowed pod(s).
+ ## @param networkPolicy.ingressRules.secondaryAccessOnlyFrom.customRules [object] Custom network policy for the secondary nodes.
+ ##
+ ingressRules:
+ ## Allow access to the primary node only from the indicated:
+ primaryAccessOnlyFrom:
+ enabled: false
+ ## e.g:
+ ## namespaceSelector:
+ ## label: ingress
+ ##
+ namespaceSelector: {}
+ ## e.g:
+ ## podSelector:
+ ## label: access
+ ##
+ podSelector: {}
+ ## custom ingress rules
+ ## e.g:
+ ## customRules:
+ ## - from:
+ ## - namespaceSelector:
+ ## matchLabels:
+ ## label: example
+ customRules: {}
+
+ ## Allow access to the secondary node only from the indicated:
+ secondaryAccessOnlyFrom:
+ enabled: false
+ ## e.g:
+ ## namespaceSelector:
+ ## label: ingress
+ ##
+ namespaceSelector: {}
+ ## e.g:
+ ## podSelector:
+ ## label: access
+ ##
+ podSelector: {}
+ ## custom ingress rules
+ ## e.g:
+ ## CustomRules:
+ ## - from:
+ ## - namespaceSelector:
+ ## matchLabels:
+ ## label: example
+ customRules: {}
+
+ ## @param networkPolicy.egressRules.denyConnectionsToExternal Enable egress rule that denies outgoing traffic outside the cluster, except for DNS (port 53).
+ ## @param networkPolicy.egressRules.customRules [object] Custom network policy rule
+ ##
+ egressRules:
+ # Deny connections to external. This is not compatible with an external database.
+ denyConnectionsToExternal: false
+ ## Additional custom egress rules
+ ## e.g:
+ ## customRules:
+ ## - to:
+ ## - namespaceSelector:
+ ## matchLabels:
+ ## label: example
+ customRules: {}
diff --git a/home/nextcloud/Chart.yaml b/home/nextcloud/Chart.yaml
new file mode 100644
index 0000000000..ae1cfee164
--- /dev/null
+++ b/home/nextcloud/Chart.yaml
@@ -0,0 +1,7 @@
+apiVersion: v2
+name: nextcloud
+version: 0.0.0
+dependencies:
+ - name: nextcloud
+ version: 3.2.0
+ repository: https://nextcloud.github.io/helm/
diff --git a/home/nextcloud/values.yaml b/home/nextcloud/values.yaml
new file mode 100644
index 0000000000..4c53aaf9be
--- /dev/null
+++ b/home/nextcloud/values.yaml
@@ -0,0 +1,473 @@
+nextcloud:
+
+ ## Official nextcloud image version
+ ## ref: https://hub.docker.com/r/library/nextcloud/tags/
+ ##
+ image:
+ repository: nextcloud
+ tag: 25.0.0-fpm-alpine
+ pullPolicy: IfNotPresent
+ # pullSecrets:
+ # - myRegistrKeySecretName
+
+ nameOverride: ""
+ fullnameOverride: ""
+ podAnnotations: {}
+ deploymentAnnotations: {}
+
+ # Number of replicas to be deployed
+ replicaCount: 1
+
+ ## Allowing use of ingress controllers
+ ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/
+ ##
+ ingress:
+ enabled: true
+ className: nginx
+ annotations:
+ external-dns.alpha.kubernetes.io/exclude: 'true'
+ nginx.ingress.kubernetes.io/proxy-body-size: 4G
+ cert-manager.io/cluster-issuer: letsencrypt-prod
+ nginx.ingress.kubernetes.io/server-snippet: |-
+ server_tokens off;
+ proxy_hide_header X-Powered-By;
+
+ rewrite ^/.well-known/webfinger /public.php?service=webfinger last;
+ rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
+ rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json;
+ location = /.well-known/carddav {
+ return 301 $scheme://$host/remote.php/dav;
+ }
+ location = /.well-known/caldav {
+ return 301 $scheme://$host/remote.php/dav;
+ }
+ location = /robots.txt {
+ allow all;
+ log_not_found off;
+ access_log off;
+ }
+ location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
+ deny all;
+ }
+ location ~ ^/(?:autotest|occ|issue|indie|db_|console) {
+ deny all;
+ }
+ tls:
+ - secretName: nextcloud-tls
+ hosts:
+ - nextcloud.jupiter.mein.nl
+ labels: {}
+ path: /
+ pathType: Prefix
+
+
+ # Allow configuration of lifecycle hooks
+ # ref: https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/
+ lifecycle: {}
+ # postStartCommand: []
+ # preStopCommand: []
+
+ nextcloud:
+ host: nextcloud.jupiter.mein.nl
+
+ ## Use an existing secret
+ existingSecret:
+ enabled: true
+ secretName: nextcloud-secret
+ # usernameKey: username
+ # passwordKey: password
+ # tokenKey: serverinfo_token
+ # smtpUsernameKey: smtp_username
+ # smtpPasswordKey: smtp_password
+ update: 0
+ # If web server is not binding default port, you can define it
+ # containerPort: 8080
+ datadir: /var/www/html/data
+ persistence:
+ subPath:
+ mail:
+ enabled: true
+ fromAddress: nextcloud
+ domain: jupiter.mein.nl
+ smtp:
+ host: smtp.sendgrid.net
+ secure: tls
+ port: 587
+ authtype: LOGIN
+ # PHP Configuration files
+ # Will be injected in /usr/local/etc/php/conf.d for apache image and in /usr/local/etc/php-fpm.d when nginx.enabled: true
+ phpConfigs: {}
+ # Default config files
+ # IMPORTANT: Will be used only if you put extra configs, otherwise default will come from nextcloud itself
+ # Default confgurations can be found here: https://github.com/nextcloud/docker/tree/master/16.0/apache/config
+ defaultConfigs:
+ # To protect /var/www/html/config
+ .htaccess: true
+ # Redis default configuration
+ redis.config.php: true
+ # Apache configuration for rewrite urls
+ apache-pretty-urls.config.php: true
+ # Define APCu as local cache
+ apcu.config.php: true
+ # Apps directory configs
+ apps.config.php: true
+ # Used for auto configure database
+ autoconfig.php: true
+ # SMTP default configuration
+ smtp.config.php: true
+ # Extra config files created in /var/www/html/config/
+ # ref: https://docs.nextcloud.com/server/15/admin_manual/configuration_server/config_sample_php_parameters.html#multiple-config-php-file
+ configs:
+ custom.config.php: |-
+ 'https',
+ 'overwrite.cli.url' => '__baseUrl__',
+ 'filelocking.enabled' => 'true',
+ 'loglevel' => '2',
+ 'enable_previews' => true,
+ 'trusted_domains' => array(
+ 0 => 'localhost',
+ 1 => '__baseUrl__'
+ )
+ );
+
+ # redis.config.php: |-
+ # '\OC\Memcache\Redis',
+ # 'memcache.locking' => '\OC\Memcache\Redis',
+ # 'redis' => array(
+ # 'host' => getenv('REDIS_HOST'),
+ # 'port' => getenv('REDIS_HOST_PORT') ?: 6379,
+ # 'password' => getenv('REDIS_HOST_PASSWORD')
+ # )
+ # );
+
+ # For example, to use S3 as primary storage
+ # ref: https://docs.nextcloud.com/server/13/admin_manual/configuration_files/primary_storage.html#simple-storage-service-s3
+ #
+ # configs:
+ # s3.config.php: |-
+ # array(
+ # 'class' => '\\OC\\Files\\ObjectStore\\S3',
+ # 'arguments' => array(
+ # 'bucket' => 'my-bucket',
+ # 'autocreate' => true,
+ # 'key' => 'xxx',
+ # 'secret' => 'xxx',
+ # 'region' => 'us-east-1',
+ # 'use_ssl' => true
+ # )
+ # )
+ # );
+
+ ## Strategy used to replace old pods
+ ## IMPORTANT: use with care, it is suggested to leave as that for upgrade purposes
+ ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
+ strategy:
+ type: Recreate
+ # type: RollingUpdate
+ # rollingUpdate:
+ # maxSurge: 1
+ # maxUnavailable: 0
+
+ ##
+ ## Extra environment variables
+ extraEnv:
+ - name: REDIS_HOST
+ value: redis-master.redis.svc.cluster.local
+
+ # Extra mounts for the pods. Example shown is for connecting a legacy NFS volume
+ # to NextCloud pods in Kubernetes. This can then be configured in External Storage
+ extraVolumes:
+ # - name: nfs
+ # nfs:
+ # server: "10.0.0.1"
+ # path: "/nextcloud_data"
+ # readOnly: false
+ extraVolumeMounts:
+ # - name: nfs
+ # mountPath: "/legacy_data"
+
+ # Extra secuurityContext parameters. For example you may need to define runAsNonRoot directive
+ extraSecurityContext:
+ runAsUser: "82"
+ runAsGroup: "82"
+ runAsNonRoot: true
+ readOnlyRootFilesystem: true
+
+ nginx:
+ ## You need to set an fpm version of the image for nextcloud if you want to use nginx!
+ enabled: true
+ image:
+ repository: nginx
+ tag: alpine
+ pullPolicy: IfNotPresent
+
+ config:
+ # This generates the default nginx config as per the nextcloud documentation
+ default: true
+ # custom: |-
+ # worker_processes 1;..
+
+ resources: {}
+
+ internalDatabase:
+ enabled: false
+ name: nextcloud
+
+ ##
+ ## External database configuration
+ ##
+ externalDatabase:
+ enabled: true
+
+ ## Supported database engines: mysql or postgresql
+ type: mysql
+
+ ## Database host
+ host: mariadb.mariadb.svc.cluster.local
+
+ ## Database name
+ database: nextcloud
+
+ ## Use a existing secret
+ existingSecret:
+ enabled: true
+ secretName: nextcloud-db
+ # usernameKey: username
+ # passwordKey: password
+
+ ##
+ ## MariaDB chart configuration
+ ##
+ mariadb:
+ ## Whether to deploy a mariadb server to satisfy the applications database requirements. To use an external database set this to false and configure the externalDatabase parameters
+ enabled: false
+
+ auth:
+ database: nextcloud
+ username: nextcloud
+ password: changeme
+
+ architecture: standalone
+
+ ## Enable persistence using Persistent Volume Claims
+ ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
+ ##
+ primary:
+ persistence:
+ enabled: false
+ # storageClass: ""
+ accessMode: ReadWriteOnce
+ size: 8Gi
+
+ ##
+ ## PostgreSQL chart configuration
+ ## for more options see https://github.com/bitnami/charts/tree/master/bitnami/postgresql
+ ##
+ postgresql:
+ enabled: false
+ postgresqlUsername: nextcloud
+ postgresqlPassword: changeme
+ postgresqlDatabase: nextcloud
+ persistence:
+ enabled: false
+ # storageClass: ""
+
+ ##
+ ## Redis chart configuration
+ ## for more options see https://github.com/bitnami/charts/tree/master/bitnami/redis
+ ##
+
+ redis:
+ enabled: false
+ auth:
+ enabled: true
+ password: 'changeme'
+
+ ## Cronjob to execute Nextcloud background tasks
+ ## ref: https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/background_jobs_configuration.html#webcron
+ ##
+ cronjob:
+ enabled: true
+ # Nexcloud image is used as default but only curl is needed
+ image: {}
+ # repository: nextcloud
+ # tag: 16.0.3-apache
+ # pullPolicy: IfNotPresent
+ # pullSecrets:
+ # - myRegistrKeySecretName
+ # Every 5 minutes
+ # Note: Setting this to any any other value than 5 minutes might
+ # cause issues with how nextcloud background jobs are executed
+ schedule: "*/5 * * * *"
+ annotations: {}
+ # Set curl's insecure option if you use e.g. self-signed certificates
+ curlInsecure: true
+ failedJobsHistoryLimit: 5
+ successfulJobsHistoryLimit: 2
+ # If not set, nextcloud deployment one will be set
+ # 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
+
+ # If not set, nextcloud deployment one will be set
+ # nodeSelector: {}
+
+ # If not set, nextcloud deployment one will be set
+ # tolerations: []
+
+ # If not set, nextcloud deployment one will be set
+ # affinity: {}
+
+ service:
+ type: ClusterIP
+ port: 8080
+ loadBalancerIP: nil
+ nodePort: nil
+
+ ## Enable persistence using Persistent Volume Claims
+ ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
+ ##
+ persistence:
+ # Nextcloud Data (/var/www/html)
+ enabled: true
+ annotations: {}
+ ## nextcloud data Persistent Volume Storage Class
+ ## If defined, storageClassName:
+ ## 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: "longhorn"
+
+ ## A manually managed Persistent Volume and Claim
+ ## Requires persistence.enabled: true
+ ## If defined, PVC must be created manually before volume will be bound
+ # existingClaim:
+
+ accessMode: ReadWriteOnce
+ size: 8Gi
+
+ ## Use an additional pvc for the data directory rather than a subpath of the default PVC
+ ## Useful to store data on a different storageClass (e.g. on slower disks)
+ nextcloudData:
+ enabled: true
+ subPath:
+ annotations: {}
+ storageClass: "longhorn"
+ # existingClaim:
+ accessMode: ReadWriteOnce
+ size: 100Gi
+
+ 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
+
+ ## Liveness and readiness probe values
+ ## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
+ ##
+ livenessProbe:
+ enabled: true
+ initialDelaySeconds: 10
+ periodSeconds: 10
+ timeoutSeconds: 5
+ failureThreshold: 3
+ successThreshold: 1
+ readinessProbe:
+ enabled: true
+ initialDelaySeconds: 10
+ periodSeconds: 10
+ timeoutSeconds: 5
+ failureThreshold: 3
+ successThreshold: 1
+ startupProbe:
+ enabled: false
+ initialDelaySeconds: 30
+ periodSeconds: 10
+ timeoutSeconds: 5
+ failureThreshold: 30
+ successThreshold: 1
+
+
+ ## Enable pod autoscaling using HorizontalPodAutoscaler
+ ## ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
+ ##
+ hpa:
+ enabled: false
+ cputhreshold: 60
+ minPods: 1
+ maxPods: 10
+
+ nodeSelector: {}
+
+ tolerations: []
+
+ affinity: {}
+
+
+ ## Prometheus Exporter / Metrics
+ ##
+ metrics:
+ enabled: false
+
+ replicaCount: 1
+ # The metrics exporter needs to know how you serve Nextcloud either http or https
+ https: false
+ # Use API token if set, otherwise fall back to password authentication
+ # https://github.com/xperimental/nextcloud-exporter#token-authentication
+ # Currently you still need to set the token manually in your nextcloud install
+ token: ""
+ timeout: 5s
+
+ image:
+ repository: xperimental/nextcloud-exporter
+ tag: 0.6.0
+ pullPolicy: IfNotPresent
+
+ ## Metrics exporter resource requests and limits
+ ## ref: http://kubernetes.io/docs/user-guide/compute-resources/
+ ##
+ # resources: {}
+
+ ## Metrics exporter pod Annotation and Labels
+ # podAnnotations: {}
+
+ # podLabels: {}
+
+ service:
+ type: ClusterIP
+ ## Use serviceLoadBalancerIP to request a specific static IP,
+ ## otherwise leave blank
+ # loadBalancerIP:
+ annotations:
+ prometheus.io/scrape: "true"
+ prometheus.io/port: "9205"
+ labels: {}
+
+ rbac:
+ enabled: false
+ serviceaccount:
+ create: true
+ name: nextcloud-serviceaccount
diff --git a/home/pihole/Chart.yaml b/home/pihole/Chart.yaml
new file mode 100644
index 0000000000..f4b346fe6b
--- /dev/null
+++ b/home/pihole/Chart.yaml
@@ -0,0 +1,7 @@
+apiVersion: v2
+name: pihole
+version: 0.0.0
+dependencies:
+ - name: pihole
+ version: 2.9.3
+ repository: https://mojo2600.github.io/pihole-kubernetes/
\ No newline at end of file
diff --git a/home/pihole/templates/pihole-password.yaml b/home/pihole/templates/pihole-password.yaml
new file mode 100644
index 0000000000..f99aec52c9
--- /dev/null
+++ b/home/pihole/templates/pihole-password.yaml
@@ -0,0 +1,19 @@
+apiVersion: external-secrets.io/v1beta1
+kind: ExternalSecret
+metadata:
+ name: {{ .Values.pihole.admin.existingSecret }}
+ namespace: {{ .Release.Namespace }}
+spec:
+ secretStoreRef:
+ kind: ClusterSecretStore
+ name: vault
+ target:
+ template:
+ engineVersion: v2
+ data:
+ password: {{` "{{ .password }}" `}}
+ data:
+ - secretKey: password
+ remoteRef:
+ key: /pihole/admin
+ property: password
diff --git a/home/pihole/values.yaml b/home/pihole/values.yaml
new file mode 100644
index 0000000000..23eec81ba0
--- /dev/null
+++ b/home/pihole/values.yaml
@@ -0,0 +1,401 @@
+pihole:
+ # 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: "2022.10"
+ # -- 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.225"
+ # -- 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: true
+
+ # -- `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:
+ enabled: true
+ ingressClassName: nginx
+ annotations:
+ cert-manager.io/cluster-issuer: letsencrypt-prod
+ hosts:
+ - &host pihole.jupiter.mein.nl
+ path: /
+ tls:
+ - secretName: pihole-tls-certificate
+ hosts:
+ - *host
+
+ # -- 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: false
+
+ # -- specify an existing `PersistentVolumeClaim` to use
+ # existingClaim: ""
+
+ # -- Annotations for the `PersitentVolumeClaim`
+ annotations: {}
+
+ accessModes:
+ - ReadWriteOnce
+
+ size: "500Mi"
+
+ ## If defined, storageClassName:
+ ## 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:
+ # topologyKey:
+ # whenUnsatisfiable:
+ # labelSelector: