Compare commits

...

4 Commits

Author SHA1 Message Date
Vegetto
8c7886aca6 [postgres-cluster] New chart to create Postgres clusters with local storage (#739)
* first release of postgres-cluster

* increase path version

* Fix .Values access

* Use common.labels.selectorLabels

* 1.0.4 - Use .Value and not $.Value

* 1.0.5 - fix schedule

* 1.0.6

* 1.0.6 - Remove unneded service

* 1.0.8

* 1.0.9 - fix .Value.replicaNodes

* 1.0.10

* move chart

* WIP

* Ready for test

* update readme

* fix secret name

* Merge branch 'postgres-cluster'

* add labels

* gen secret

* fix labels

* keep DB content

* Ready to submit

* rename chart

Co-authored-by: angelnu <git@angelnucom>
Co-authored-by: ᗪєνιη ᗷυнʟ <onedr0p@users.noreply.github.com>
2021-04-01 07:24:16 -04:00
ᗪєνιη ᗷυнʟ
64b0f9e85c [adguard-home] migrate to common (#741)
* feat: migrate adguard-home to common

* feat: migrate adguard-home to common

* feat: migrate adguard-home to common

* feat: migrate adguard-home to common

* feat: migrate adguard-home to common

* feat: migrate adguard-home to common

* feat: migrate adguard-home to common

* feat: migrate adguard-home to common

* feat: migrate adguard-home to common

* feat: migrate adguard-home to common

* feat: migrate adguard-home to common

* feat: migrate adguard-home to common

* feat: migrate adguard-home to common

* feat: migrate adguard-home to common

* feat: migrate adguard-home to common

* feat: migrate adguard-home to common

* feat: migrate adguard-home to common
2021-03-31 22:27:05 -04:00
ᗪєνιη ᗷυнʟ
1f6a7848f7 [stash] new chart (#740)
* feat: stash app

* feat: stash app

* feat: stash app

* feat: stash app

* feat: stash app

* feat: stash app
2021-03-31 13:39:48 -04:00
Vegetto
9992a5d4cc Add CHART_TYPE to tasks (#737)
Co-authored-by: ᗪєνιη ᗷυнʟ <onedr0p@users.noreply.github.com>
2021-03-30 06:51:04 -04:00
47 changed files with 1442 additions and 1095 deletions

View File

@@ -8,6 +8,7 @@ excluded-charts:
- charts/stable/alertmanager-bot
- charts/stable/dnsmadeeasy-webhook
- charts/stable/ser2sock
- charts/stable/zalando-postgres-cluster
- charts/stable/zigbee2mqtt
chart-repos:
- bitnami=https://charts.bitnami.com/bitnami

View File

@@ -7,18 +7,18 @@ tasks:
desc: create new chart
cmds:
- git checkout -b add-chart-{{.CHART}}
- cp -r {{.GIT_ROOT}}/templates/chart {{.GIT_ROOT}}/charts/{{.CHART}}
- ./.bin/go-replace -s '${CHARTNAME}' -r "{{.CHART}}" --path={{.GIT_ROOT}}/charts/{{.CHART}} --path-pattern='*.*'
- cp -r {{.GIT_ROOT}}/templates/chart "{{.GIT_ROOT}}/charts/{{.CHART_TYPE}}/{{.CHART}}"
- ./.bin/go-replace -s '${CHARTNAME}' -r "{{.CHART}}" --path="{{.GIT_ROOT}}/charts/{{.CHART_TYPE}}/{{.CHART}}" --path-pattern='*.*'
- task: dependency
- echo "Congratulations, charts/{{.CHART}} successfully generated, you can now edit chart informations ( Chart.yaml and values.yaml )"
- echo "Congratulations, charts/{{.CHART_TYPE}}/{{.CHART}} successfully generated, you can now edit chart informations ( Chart.yaml and values.yaml )"
status:
- test -d {{.GIT_ROOT}}/charts/{{.CHART}}
- test -d "{{.GIT_ROOT}}/charts/{{.CHART_TYPE}}/{{.CHART}}"
deps:
- check-chart
silent: true
dependency:
dir: "{{.GIT_ROOT}}/charts/{{.CHART}}"
dir: "{{.GIT_ROOT}}/charts/{{.CHART_TYPE}}/{{.CHART}}"
cmds:
- test -d Chart.lock && rm Chart.lock || exit 0
- test -d tmpcharts && rm -rf tmpcharts || exit 0
@@ -27,7 +27,7 @@ tasks:
lint:
desc: lint your chart code
dir: "{{.GIT_ROOT}}/charts/{{.CHART}}"
dir: "{{.GIT_ROOT}}/charts/{{.CHART_TYPE}}/{{.CHART}}"
cmds:
- helm lint
deps:
@@ -37,7 +37,7 @@ tasks:
ct-lint:
desc: run `ct lint` on your chart code
cmds:
- docker run --rm -it --user $(id -u):$(id -g) -e "HELM_CONFIG_HOME=/tmp/helm" -e "HELM_CACHE_HOME=/tmp/helm" -v {{.GIT_ROOT}}:/ci -w /ci quay.io/helmpack/chart-testing:latest ct lint --charts charts/{{.CHART}} --config /ci/.github/ct-lint.yaml
- docker run --rm -it --user $(id -u):$(id -g) -e "HELM_CONFIG_HOME=/tmp/helm" -e "HELM_CACHE_HOME=/tmp/helm" -v {{.GIT_ROOT}}:/ci -w /ci quay.io/helmpack/chart-testing:latest ct lint --charts "charts/{{.CHART_TYPE}}/{{.CHART}}" --config /ci/.github/ct-lint.yaml
deps:
- check-chart
- lint
@@ -46,12 +46,13 @@ tasks:
desc: generate helm-docs
dir: "{{.GIT_ROOT}}/hack"
cmds:
- ./gen-helm-docs.sh "{{.CHART}}"
- ./gen-helm-docs.sh "{{.CHART_TYPE}}" "{{.CHART}}"
deps:
- check-chart
# Checks Parameters
check-chart:
cmds:
- test ! -z "{{.CHART_TYPE}}" || (echo "Please define CHART_TYPE parameter"; exit 1)
- test ! -z "{{.CHART}}" || (echo "Please define CHART parameter"; exit 1)
silent: true

View File

@@ -22,3 +22,5 @@
.vscode/
# OWNERS file for Kubernetes
OWNERS
# helm-docs templates
*.gotmpl

View File

@@ -1,15 +1,21 @@
apiVersion: v2
appVersion: v0.102.0
appVersion: v0.105.2
description: DNS proxy as ad-blocker for local network
name: adguard-home
version: 2.2.3
version: 3.0.0
kubeVersion: ">=1.16.0-0"
keywords:
- adguard-home
- adguard
- dns
- adguard-home
- adblock
- dns
home: https://github.com/k8s-at-home/charts/tree/master/charts/stable/adguard-home
icon: https://avatars3.githubusercontent.com/u/8361145?s=200&v=4?sanitize=true
sources:
- https://github.com/AdguardTeam/AdGuardHome
- https://github.com/AdguardTeam/AdGuardHome
maintainers:
- name: billimek
- name: billimek
email: jeff@billimek.com
dependencies:
- name: common
repository: https://library-charts.k8s-at-home.com
version: 2.1.0

View File

@@ -1,6 +1,6 @@
# adguard-home
![Version: 2.2.2](https://img.shields.io/badge/Version-2.2.2-informational?style=flat-square) ![AppVersion: v0.102.0](https://img.shields.io/badge/AppVersion-v0.102.0-informational?style=flat-square)
![Version: 3.0.0](https://img.shields.io/badge/Version-3.0.0-informational?style=flat-square) ![AppVersion: v0.105.2](https://img.shields.io/badge/AppVersion-v0.105.2-informational?style=flat-square)
DNS proxy as ad-blocker for local network
@@ -12,10 +12,13 @@ DNS proxy as ad-blocker for local network
## Requirements
Kubernetes: `>=1.16.0-0`
## Dependencies
| Repository | Name | Version |
|------------|------|---------|
| https://library-charts.k8s-at-home.com | common | 2.1.0 |
## TL;DR
@@ -72,165 +75,35 @@ N/A
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| affinity | object | `{}` | |
| configAsCode.config.bind_host | string | `"0.0.0.0"` | |
| configAsCode.config.bind_port | int | `3000` | |
| configAsCode.config.clients | list | `[]` | |
| configAsCode.config.debug_pprof | bool | `false` | |
| configAsCode.config.dhcp.enabled | bool | `false` | |
| configAsCode.config.dhcp.gateway_ip | string | `""` | |
| configAsCode.config.dhcp.icmp_timeout_msec | int | `1000` | |
| configAsCode.config.dhcp.interface_name | string | `""` | |
| configAsCode.config.dhcp.lease_duration | int | `86400` | |
| configAsCode.config.dhcp.range_end | string | `""` | |
| configAsCode.config.dhcp.range_start | string | `""` | |
| configAsCode.config.dhcp.subnet_mask | string | `""` | |
| configAsCode.config.dns.aaaa_disabled | bool | `false` | |
| configAsCode.config.dns.all_servers | bool | `false` | |
| configAsCode.config.dns.allowed_clients | list | `[]` | |
| configAsCode.config.dns.anonymize_client_ip | bool | `false` | |
| configAsCode.config.dns.bind_host | string | `"0.0.0.0"` | |
| configAsCode.config.dns.blocked_hosts | list | `[]` | |
| configAsCode.config.dns.blocked_response_ttl | int | `10` | |
| configAsCode.config.dns.blocked_services | list | `[]` | |
| configAsCode.config.dns.blocking_ipv4 | string | `""` | |
| configAsCode.config.dns.blocking_ipv6 | string | `""` | |
| configAsCode.config.dns.blocking_mode | string | `"default"` | |
| configAsCode.config.dns.bogus_nxdomain | list | `[]` | |
| configAsCode.config.dns.bootstrap_dns[0] | string | `"9.9.9.10"` | |
| configAsCode.config.dns.bootstrap_dns[1] | string | `"149.112.112.10"` | |
| configAsCode.config.dns.bootstrap_dns[2] | string | `"2620:fe::10"` | |
| configAsCode.config.dns.bootstrap_dns[3] | string | `"2620:fe::fe:10"` | |
| configAsCode.config.dns.cache_size | int | `4194304` | |
| configAsCode.config.dns.cache_time | int | `30` | |
| configAsCode.config.dns.cache_ttl_max | int | `0` | |
| configAsCode.config.dns.cache_ttl_min | int | `0` | |
| configAsCode.config.dns.disallowed_clients | list | `[]` | |
| configAsCode.config.dns.edns_client_subnet | bool | `false` | |
| configAsCode.config.dns.enable_dnssec | bool | `false` | |
| configAsCode.config.dns.fastest_addr | bool | `false` | |
| configAsCode.config.dns.filtering_enabled | bool | `true` | |
| configAsCode.config.dns.filters_update_interval | int | `24` | |
| configAsCode.config.dns.parental_block_host | string | `"family-block.dns.adguard.com"` | |
| configAsCode.config.dns.parental_cache_size | int | `1048576` | |
| configAsCode.config.dns.parental_enabled | bool | `false` | |
| configAsCode.config.dns.port | int | `53` | |
| configAsCode.config.dns.protection_enabled | bool | `true` | |
| configAsCode.config.dns.querylog_enabled | bool | `true` | |
| configAsCode.config.dns.querylog_interval | int | `90` | |
| configAsCode.config.dns.querylog_size_memory | int | `1000` | |
| configAsCode.config.dns.ratelimit | int | `0` | |
| configAsCode.config.dns.ratelimit_whitelist | list | `[]` | |
| configAsCode.config.dns.refuse_any | bool | `true` | |
| configAsCode.config.dns.rewrites | list | `[]` | |
| configAsCode.config.dns.safebrowsing_block_host | string | `"standard-block.dns.adguard.com"` | |
| configAsCode.config.dns.safebrowsing_cache_size | int | `1048576` | |
| configAsCode.config.dns.safebrowsing_enabled | bool | `false` | |
| configAsCode.config.dns.safesearch_cache_size | int | `1048576` | |
| configAsCode.config.dns.safesearch_enabled | bool | `false` | |
| configAsCode.config.dns.statistics_interval | int | `1` | |
| configAsCode.config.dns.upstream_dns[0] | string | `"https://dns10.quad9.net/dns-query"` | |
| configAsCode.config.filters[0].enabled | bool | `true` | |
| configAsCode.config.filters[0].id | int | `1` | |
| configAsCode.config.filters[0].name | string | `"AdGuard DNS filter"` | |
| configAsCode.config.filters[0].url | string | `"https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt"` | |
| configAsCode.config.filters[1].enabled | bool | `false` | |
| configAsCode.config.filters[1].id | int | `2` | |
| configAsCode.config.filters[1].name | string | `"AdAway"` | |
| configAsCode.config.filters[1].url | string | `"https://adaway.org/hosts.txt"` | |
| configAsCode.config.filters[2].enabled | bool | `false` | |
| configAsCode.config.filters[2].id | int | `4` | |
| configAsCode.config.filters[2].name | string | `"MalwareDomainList.com Hosts List"` | |
| configAsCode.config.filters[2].url | string | `"https://www.malwaredomainlist.com/hostslist/hosts.txt"` | |
| configAsCode.config.http_proxy | string | `""` | |
| configAsCode.config.language | string | `"en"` | |
| configAsCode.config.log_file | string | `""` | |
| configAsCode.config.rlimit_nofile | int | `0` | |
| configAsCode.config.schema_version | int | `6` | |
| configAsCode.config.tls.allow_unencrypted_doh | bool | `false` | |
| configAsCode.config.tls.certificate_chain | string | `""` | |
| configAsCode.config.tls.certificate_path | string | `""` | |
| configAsCode.config.tls.enabled | bool | `false` | |
| configAsCode.config.tls.force_https | bool | `false` | |
| configAsCode.config.tls.port_dns_over_tls | int | `853` | |
| configAsCode.config.tls.port_https | int | `443` | |
| configAsCode.config.tls.private_key | string | `""` | |
| configAsCode.config.tls.private_key_path | string | `""` | |
| configAsCode.config.tls.server_name | string | `""` | |
| configAsCode.config.tls.strict_sni_check | bool | `false` | |
| configAsCode.config.user_rules | list | `[]` | |
| configAsCode.config.users | list | `[]` | |
| configAsCode.config.verbose | bool | `false` | |
| configAsCode.config.web_session_ttl | int | `720` | |
| configAsCode.config.whitelist_filters | list | `[]` | |
| configAsCode.enabled | bool | `false` | |
| configAsCode.image.pullPolicy | string | `"Always"` | |
| configAsCode.image.repository | string | `"busybox"` | |
| configAsCode.image.tag | string | `"latest"` | |
| configAsCode.resources | object | `{}` | |
| fullnameOverride | string | `""` | |
| args[0] | string | `"--config"` | |
| args[1] | string | `"/opt/adguardhome/conf/AdGuardHome.yaml"` | |
| args[2] | string | `"--no-check-update"` | |
| config | string | `"bind_host: 0.0.0.0\nbind_port: 3000\nbeta_bind_port: 0\nusers: []\nhttp_proxy: \"\"\nlanguage: en\nrlimit_nofile: 0\ndebug_pprof: false\nweb_session_ttl: 720\ndns:\n bind_host: 0.0.0.0\n port: 53\n statistics_interval: 1\n querylog_enabled: true\n querylog_file_enabled: true\n querylog_interval: 90\n querylog_size_memory: 1000\n anonymize_client_ip: false\n protection_enabled: true\n blocking_mode: default\n blocking_ipv4: \"\"\n blocking_ipv6: \"\"\n blocked_response_ttl: 10\n parental_block_host: family-block.dns.adguard.com\n safebrowsing_block_host: standard-block.dns.adguard.com\n ratelimit: 0\n ratelimit_whitelist: []\n refuse_any: true\n upstream_dns:\n - https://dns10.quad9.net/dns-query\n upstream_dns_file: \"\"\n bootstrap_dns:\n - 9.9.9.10\n - 149.112.112.10\n - 2620:fe::10\n - 2620:fe::fe:10\n all_servers: false\n fastest_addr: false\n allowed_clients: []\n disallowed_clients: []\n blocked_hosts: []\n cache_size: 4194304\n cache_ttl_min: 0\n cache_ttl_max: 0\n bogus_nxdomain: []\n aaaa_disabled: false\n enable_dnssec: false\n edns_client_subnet: false\n max_goroutines: 300\n ipset: []\n filtering_enabled: true\n filters_update_interval: 24\n parental_enabled: false\n safesearch_enabled: false\n safebrowsing_enabled: false\n safebrowsing_cache_size: 1048576\n safesearch_cache_size: 1048576\n parental_cache_size: 1048576\n cache_time: 30\n rewrites: []\n blocked_services: []\n customresolver: null\ntls:\n enabled: false\n server_name: \"\"\n force_https: false\n port_https: 443\n port_dns_over_tls: 853\n port_dns_over_quic: 784\n port_dnscrypt: 0\n dnscrypt_config_file: \"\"\n allow_unencrypted_doh: false\n strict_sni_check: false\n certificate_chain: \"\"\n private_key: \"\"\n certificate_path: \"\"\n private_key_path: \"\"\nfilters:\n- enabled: true\n url: https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt\n name: AdGuard DNS filter\n id: 1\n- enabled: false\n url: https://adaway.org/hosts.txt\n name: AdAway\n id: 2\n- enabled: false\n url: https://www.malwaredomainlist.com/hostslist/hosts.txt\n name: MalwareDomainList.com Hosts List\n id: 4\nwhitelist_filters: []\nuser_rules: []\ndhcp:\n enabled: false\n interface_name: \"\"\n dhcpv4:\n gateway_ip: \"\"\n subnet_mask: \"\"\n range_start: \"\"\n range_end: \"\"\n lease_duration: 86400\n icmp_timeout_msec: 1000\n options: []\n dhcpv6:\n range_start: \"\"\n lease_duration: 86400\n ra_slaac_only: false\n ra_allow_slaac: false\nclients: []\nlog_compress: false\nlog_localtime: false\nlog_max_backups: 0\nlog_max_size: 100\nlog_max_age: 3\nlog_file: \"\"\nverbose: false\nschema_version: 7\n"` | |
| env | object | `{}` | |
| image.pullPolicy | string | `"IfNotPresent"` | |
| image.repository | string | `"adguard/adguardhome"` | |
| ingress.annotations | object | `{}` | |
| ingress.enabled | bool | `false` | |
| ingress.hosts[0] | string | `"chart-example.local"` | |
| ingress.path | string | `"/"` | |
| ingress.tls | list | `[]` | |
| nameOverride | string | `""` | |
| nodeSelector | object | `{}` | |
| persistence.config.accessMode | string | `"ReadWriteOnce"` | |
| persistence.config.enabled | bool | `true` | |
| persistence.config.size | string | `"20Mi"` | |
| persistence.config.skipuninstall | bool | `false` | |
| persistence.work.accessMode | string | `"ReadWriteOnce"` | |
| persistence.work.enabled | bool | `true` | |
| persistence.work.size | string | `"10Gi"` | |
| persistence.work.skipuninstall | bool | `false` | |
| podAnnotations."prometheus.io/port" | string | `"api"` | |
| podAnnotations."prometheus.io/scrape" | string | `"true"` | |
| podSecurityContext | object | `{}` | |
| probes.liveness.enabled | bool | `true` | |
| probes.liveness.failureThreshold | int | `5` | |
| probes.liveness.initialDelaySeconds | int | `5` | |
| probes.liveness.periodSeconds | int | `10` | |
| probes.readiness.enabled | bool | `false` | |
| probes.readiness.failureThreshold | int | `5` | |
| probes.readiness.initialDelaySeconds | int | `5` | |
| probes.readiness.periodSeconds | int | `10` | |
| probes.startup.enabled | bool | `false` | |
| probes.startup.failureThreshold | int | `30` | |
| probes.startup.initialDelaySeconds | int | `5` | |
| probes.startup.periodSeconds | int | `10` | |
| resources | object | `{}` | |
| securityContext | object | `{}` | |
| service.annotations | object | `{}` | |
| service.type | string | `"ClusterIP"` | |
| serviceDHCP.annotations | object | `{}` | |
| serviceDHCP.enabled | bool | `false` | |
| serviceDHCP.loadBalancerIP | string | `""` | |
| serviceDHCP.type | string | `"NodePort"` | |
| serviceDNSOverTLS.annotations | object | `{}` | |
| serviceDNSOverTLS.enabled | bool | `false` | |
| serviceDNSOverTLS.loadBalancerIP | string | `""` | |
| serviceDNSOverTLS.type | string | `"NodePort"` | |
| serviceMonitor.additionalLabels | object | `{}` | |
| serviceMonitor.enabled | bool | `false` | |
| serviceTCP.annotations | object | `{}` | |
| serviceTCP.enabled | bool | `false` | |
| serviceTCP.loadBalancerIP | string | `""` | |
| serviceTCP.type | string | `"NodePort"` | |
| serviceUDP.annotations | object | `{}` | |
| serviceUDP.enabled | bool | `true` | |
| serviceUDP.loadBalancerIP | string | `""` | |
| serviceUDP.type | string | `"NodePort"` | |
| strategyType | string | `"Recreate"` | |
| timezone | string | `"UTC"` | |
| tlsSecretName | string | `""` | |
| tolerations | list | `[]` | |
| volumePermissions.image.pullPolicy | string | `"Always"` | |
| volumePermissions.image.repository | string | `"busybox"` | |
| volumePermissions.image.tag | string | `"latest"` | |
| volumePermissions.resources | object | `{}` | |
| image.tag | string | `"v0.105.2"` | |
| initContainers[0].command[0] | string | `"sh"` | |
| initContainers[0].command[1] | string | `"-c"` | |
| initContainers[0].command[2] | string | `"if [ ! -f /opt/adguardhome/conf/AdGuardHome.yaml ]; then\n mkdir -p /opt/adguardhome/conf\n cp /tmp/AdGuardHome.yaml /opt/adguardhome/conf/AdGuardHome.yaml\nfi\n"` | |
| initContainers[0].image | string | `"busybox"` | |
| initContainers[0].name | string | `"copy-configmap"` | |
| initContainers[0].securityContext.runAsUser | int | `0` | |
| initContainers[0].volumeMounts[0].mountPath | string | `"/tmp/AdGuardHome.yaml"` | |
| initContainers[0].volumeMounts[0].name | string | `"adguard-home-config"` | |
| initContainers[0].volumeMounts[0].subPath | string | `"AdGuardHome.yaml"` | |
| persistence.config.emptyDir.enabled | bool | `false` | |
| persistence.config.enabled | bool | `false` | |
| persistence.config.mountPath | string | `"/opt/adguardhome/conf"` | |
| persistence.data.emptyDir.enabled | bool | `false` | |
| persistence.data.enabled | bool | `false` | |
| persistence.data.mountPath | string | `"/opt/adguardhome/work"` | |
| prometheus.serviceMonitor.additionalLabels | object | `{}` | |
| prometheus.serviceMonitor.enabled | bool | `false` | |
| prometheus.serviceMonitor.interval | string | `"30s"` | |
| replicas | int | `1` | (int) Number of pods to load balance between |
| service.port.port | int | `3000` | |
| strategy.type | string | `"Recreate"` | |
## Changelog
@@ -238,7 +111,7 @@ All notable changes to this application Helm chart will be documented in this fi
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
### [2.2.1]
### [3.0.0]
#### Added
@@ -246,13 +119,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
#### Changed
- Use helm-docs
- **BREAKING** Migrate Adguard Home to the common library, a lot of configuration has changed.
#### Removed
- N/A
[2.2.1]: #2.2.1
[3.0.0]: #3.0.0
## Support

View File

@@ -9,7 +9,7 @@ All notable changes to this application Helm chart will be documented in this fi
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
### [2.2.1]
### [3.0.0]
#### Added
@@ -17,11 +17,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
#### Changed
- Use helm-docs
- **BREAKING** Migrate Adguard Home to the common library, a lot of configuration has changed.
#### Removed
- N/A
[2.2.1]: #2.2.1
[3.0.0]: #3.0.0
{{- end -}}

View File

@@ -0,0 +1,11 @@
persistence:
config:
enabled: true
emptyDir:
enabled: true
mountPath: /opt/adguardhome/conf
data:
enabled: true
emptyDir:
enabled: true
mountPath: /opt/adguardhome/work

View File

@@ -1,15 +1 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.serviceUDP.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "adguard-home.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.serviceUDP.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 svc -w {{ include "adguard-home.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "adguard-home.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo http://$SERVICE_IP:{{ .Values.serviceUDP.port }}
{{- else if contains "ClusterIP" .Values.serviceUDP.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "adguard-home.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:3000
{{- end }}
{{- include "common.notes.defaultNotes" . -}}

View File

@@ -1,32 +0,0 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "adguard-home.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 "adguard-home.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 "adguard-home.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}

View File

@@ -0,0 +1,31 @@
{{/* Make sure all variables are set properly */}}
{{- include "common.values.setup" . }}
{{/* Append the configMap to the additionalVolumes */}}
{{- define "adguard-home.configmap.volume" -}}
name: adguard-home-config
configMap:
name: {{ template "common.names.fullname" . }}-config
{{- end -}}
{{- $volume := include "adguard-home.configmap.volume" . | fromYaml -}}
{{- if $volume -}}
{{- $additionalVolumes := append .Values.additionalVolumes $volume }}
{{- $_ := set .Values "additionalVolumes" (deepCopy $additionalVolumes) -}}
{{- end -}}
{{/* Append the configMap volume to the additionalVolumeMounts */}}
{{- define "adguard-home.configmap.volumeMount" -}}
name: adguard-home-config
mountPath: /tmp/AdGuardHome.yaml
subPath: AdGuardHome.yaml
{{- end -}}
{{- $volumeMount := include "adguard-home.configmap.volumeMount" . | fromYaml -}}
{{- if $volumeMount -}}
{{- $additionalVolumeMounts := append .Values.additionalVolumeMounts $volumeMount }}
{{- $_ := set .Values "additionalVolumeMounts" (deepCopy $additionalVolumeMounts) -}}
{{- end -}}
{{/* Render the templates */}}
{{ include "common.all" . }}

View File

@@ -1,29 +0,0 @@
{{- if and .Values.persistence.config.enabled (not .Values.persistence.config.existingClaim) }}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: {{ template "adguard-home.fullname" . }}-config
{{- if .Values.persistence.config.skipuninstall }}
annotations:
"helm.sh/resource-policy": keep
{{- end }}
labels:
app.kubernetes.io/name: {{ include "adguard-home.name" . }}
helm.sh/chart: {{ include "adguard-home.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
accessModes:
- {{ .Values.persistence.config.accessMode | quote }}
resources:
requests:
storage: {{ .Values.persistence.config.size | quote }}
{{- if .Values.persistence.config.storageClass }}
{{- if (eq "-" .Values.persistence.config.storageClass) }}
storageClassName: ""
{{- else }}
storageClassName: "{{ .Values.persistence.config.storageClass }}"
{{- end }}
{{- end }}
{{- end -}}

View File

@@ -1,14 +1,9 @@
{{- if .Values.configAsCode.enabled }}
kind: ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "adguard-home.fullname" . }}
name: {{ template "common.names.fullname" . }}-config
labels:
app.kubernetes.io/name: {{ include "adguard-home.name" . }}
helm.sh/chart: {{ include "adguard-home.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- include "common.labels" . | nindent 4 }}
data:
AdGuardHome.yaml: |
{{- toYaml .Values.configAsCode.config | nindent 4 }}
{{- end }}
{{ .Values.config | indent 4 }}

View File

@@ -1,208 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "adguard-home.fullname" . }}
labels:
app.kubernetes.io/name: {{ include "adguard-home.name" . }}
helm.sh/chart: {{ include "adguard-home.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
replicas: 1
strategy:
type: {{ .Values.strategyType }}
revisionHistoryLimit: 3
selector:
matchLabels:
app.kubernetes.io/name: {{ include "adguard-home.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
template:
metadata:
labels:
app.kubernetes.io/name: {{ include "adguard-home.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
annotations:
{{- with .Values.podAnnotations }}
{{ toYaml . | nindent 8 }}
{{- end }}
{{- if .Values.configAsCode.enabled }}
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
{{- end }}
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
{{- if or .Values.configAsCode.enabled .Values.securityContext.runAsUser }}
initContainers:
{{- if .Values.configAsCode.enabled }}
- name: "config"
securityContext:
readOnlyRootFilesystem: true
image: "{{ .Values.configAsCode.image.repository }}:{{ .Values.configAsCode.image.tag }}"
imagePullPolicy: {{ .Values.configAsCode.image.pullPolicy }}
command: ["sh", "-c", "cat /configmap/AdGuardHome.yaml > /opt/adguardhome/conf/AdGuardHome.yaml"]
resources: {{- toYaml .Values.configAsCode.resources | nindent 12 }}
volumeMounts:
- name: configmap
mountPath: /configmap
- name: config
mountPath: /opt/adguardhome/conf
readOnly: false
{{- end }}
{{- if .Values.securityContext.runAsUser }}
- name: "volume-permissions"
securityContext:
readOnlyRootFilesystem: true
image: "{{ .Values.volumePermissions.image.repository }}:{{ .Values.volumePermissions.image.tag }}"
imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy }}
command: ["/bin/chown", "-R", "{{ .Values.securityContext.runAsUser }}:", "/opt/adguardhome/work", "/opt/adguardhome/conf"]
resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }}
volumeMounts:
- name: work
mountPath: /opt/adguardhome/work
{{- with .Values.persistence.work.subPath }}
subPath: {{ . }}
{{- end }}
readOnly: false
- name: config
mountPath: /opt/adguardhome/conf
{{- with .Values.persistence.config.subPath }}
subPath: {{ . }}
{{- end }}
readOnly: false
{{- end }}
{{- end }}
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ default .Chart.AppVersion .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
{{- if .Values.timezone }}
- name: TZ
value: {{ .Values.timezone | quote }}
{{- end }}
volumeMounts:
- name: work
mountPath: /opt/adguardhome/work
{{- with .Values.persistence.work.subPath }}
subPath: {{ . }}
{{- end }}
readOnly: false
- name: config
mountPath: /opt/adguardhome/conf
{{- with .Values.persistence.config.subPath }}
subPath: {{ . }}
{{- end }}
readOnly: false
{{- if .Values.tlsSecretName }}
- name: certs
mountPath: /certs
readOnly: false
{{- end }}
ports:
- name: http
{{- if .Values.configAsCode.enabled }}
containerPort: {{ .Values.configAsCode.config.bind_port | default 3000 }}
{{- else }}
containerPort: 3000
{{- end }}
- name: dns
{{- if .Values.configAsCode.enabled }}
containerPort: {{ .Values.configAsCode.config.dns.port | default 53 }}
{{- else }}
containerPort: 53
{{- end }}
protocol: TCP
- name: dns-udp
{{- if .Values.configAsCode.enabled }}
containerPort: {{ .Values.configAsCode.config.dns.port | default 53 }}
{{- else }}
containerPort: 53
{{- end }}
protocol: UDP
{{- if .Values.serviceDHCP.enabled }}
- name: dhcp-server-udp
containerPort: 67
protocol: UDP
- name: dhcp-client-tcp
containerPort: 68
protocol: TCP
- name: dhcp-client-udp
containerPort: 68
protocol: UDP
{{- end }}
{{- if .Values.serviceDNSOverTLS.enabled }}
- name: dns-over-tls
containerPort: 853
protocol: TCP
{{- end }}
{{- if .Values.probes.liveness.enabled }}
livenessProbe:
httpGet:
path: /login.html
port: http
scheme: HTTP
initialDelaySeconds: {{ .Values.probes.liveness.initialDelaySeconds }}
failureThreshold: {{ .Values.probes.liveness.failureThreshold }}
periodSeconds: {{ .Values.probes.liveness.periodSeconds }}
{{- end }}
{{- if .Values.probes.readiness.enabled }}
readinessProbe:
httpGet:
path: /login.html
port: http
scheme: HTTP
initialDelaySeconds: {{ .Values.probes.readiness.initialDelaySeconds }}
failureThreshold: {{ .Values.probes.readiness.failureThreshold }}
periodSeconds: {{ .Values.probes.readiness.periodSeconds }}
{{- end }}
{{- if .Values.probes.startup.enabled }}
startupProbe:
httpGet:
path: /login.html
port: http
scheme: HTTP
initialDelaySeconds: {{ .Values.probes.startup.initialDelaySeconds }}
failureThreshold: {{ .Values.probes.startup.failureThreshold }}
periodSeconds: {{ .Values.probes.startup.periodSeconds }}
{{- end }}
resources:
{{- toYaml .Values.resources | nindent 12 }}
volumes:
{{- if .Values.tlsSecretName }}
- name: certs
secret:
secretName: {{ .Values.tlsSecretName }}
{{- end }}
{{- if .Values.configAsCode.enabled }}
- name: configmap
configMap:
name: {{ include "adguard-home.fullname" . }}
{{- end }}
- name: config
{{- if .Values.persistence.config.enabled }}
persistentVolumeClaim:
claimName: {{ if .Values.persistence.config.existingClaim }}{{ .Values.persistence.config.existingClaim }}{{- else }}{{ template "adguard-home.fullname" . }}-config{{- end }}
{{- else }}
emptyDir: {}
{{- end }}
- name: work
{{- if .Values.persistence.work.enabled }}
persistentVolumeClaim:
claimName: {{ if .Values.persistence.work.existingClaim }}{{ .Values.persistence.work.existingClaim }}{{- else }}{{ template "adguard-home.fullname" . }}-work{{- end }}
{{- else }}
emptyDir: {}
{{- 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 }}

View File

@@ -1,38 +0,0 @@
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "adguard-home.fullname" . -}}
{{- $ingressPath := .Values.ingress.path -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ $fullName }}
labels:
app.kubernetes.io/name: {{ include "adguard-home.name" . }}
helm.sh/chart: {{ include "adguard-home.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- with .Values.ingress.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
spec:
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ . | quote }}
http:
paths:
- path: {{ $ingressPath }}
backend:
serviceName: {{ $fullName }}
servicePort: http
{{- end }}
{{- end }}

View File

@@ -1,45 +0,0 @@
{{- if .Values.serviceDHCP.enabled }}
apiVersion: v1
kind: Service
metadata:
name: {{ include "adguard-home.fullname" . }}-dhcp
labels:
app.kubernetes.io/name: {{ include "adguard-home.name" . }}
helm.sh/chart: {{ include "adguard-home.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- if .Values.serviceDHCP.annotations }}
annotations:
{{ toYaml .Values.serviceDHCP.annotations | indent 4 }}
{{- end }}
spec:
type: {{ .Values.serviceDHCP.type }}
{{- if .Values.serviceDHCP.loadBalancerIP }}
loadBalancerIP: {{ .Values.serviceDHCP.loadBalancerIP }}
{{- end }}
{{- if .Values.serviceDHCP.loadBalancerSourceRanges }}
loadBalancerSourceRanges:
{{ toYaml .Values.serviceDHCP.loadBalancerSourceRanges | indent 4 }}
{{- end -}}
{{- if .Values.serviceDHCP.externalIPs }}
externalIPs:
{{ toYaml .Values.serviceDHCP.externalIPs | indent 4 }}
{{- end }}
externalTrafficPolicy: {{ .Values.serviceDHCP.externalTrafficPolicy }}
ports:
- port: 67
targetPort: dhcp-server-udp
protocol: UDP
name: dhcp-server-udp
- port: 68
targetPort: dhcp-client-tcp
protocol: TCP
name: dhcp-client-tcp
- port: 68
targetPort: dhcp-client-udp
protocol: UDP
name: dhcp-client-udp
selector:
app.kubernetes.io/name: {{ include "adguard-home.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}

View File

@@ -1,37 +0,0 @@
{{- if .Values.serviceDNSOverTLS.enabled }}
apiVersion: v1
kind: Service
metadata:
name: {{ include "adguard-home.fullname" . }}-dns-over-tls
labels:
app.kubernetes.io/name: {{ include "adguard-home.name" . }}
helm.sh/chart: {{ include "adguard-home.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- if .Values.serviceDNSOverTLS.annotations }}
annotations:
{{ toYaml .Values.serviceDNSOverTLS.annotations | indent 4 }}
{{- end }}
spec:
type: {{ .Values.serviceDNSOverTLS.type }}
{{- if .Values.serviceDNSOverTLS.loadBalancerIP }}
loadBalancerIP: {{ .Values.serviceDNSOverTLS.loadBalancerIP }}
{{- end }}
{{- if .Values.serviceDNSOverTLS.loadBalancerSourceRanges }}
loadBalancerSourceRanges:
{{ toYaml .Values.serviceDNSOverTLS.loadBalancerSourceRanges | indent 4 }}
{{- end -}}
{{- if .Values.serviceDNSOverTLS.externalIPs }}
externalIPs:
{{ toYaml .Values.serviceDNSOverTLS.externalIPs | indent 4 }}
{{- end }}
externalTrafficPolicy: {{ .Values.serviceDNSOverTLS.externalTrafficPolicy }}
ports:
- port: 853
targetPort: dns-over-tls
protocol: TCP
name: dns-over-tls
selector:
app.kubernetes.io/name: {{ include "adguard-home.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}

View File

@@ -1,37 +0,0 @@
{{- if .Values.serviceTCP.enabled }}
apiVersion: v1
kind: Service
metadata:
name: {{ include "adguard-home.fullname" . }}-tcp
labels:
app.kubernetes.io/name: {{ include "adguard-home.name" . }}
helm.sh/chart: {{ include "adguard-home.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- if .Values.serviceTCP.annotations }}
annotations:
{{ toYaml .Values.serviceTCP.annotations | indent 4 }}
{{- end }}
spec:
type: {{ .Values.serviceTCP.type }}
{{- if .Values.serviceTCP.loadBalancerIP }}
loadBalancerIP: {{ .Values.serviceTCP.loadBalancerIP }}
{{- end }}
{{- if .Values.serviceTCP.loadBalancerSourceRanges }}
loadBalancerSourceRanges:
{{ toYaml .Values.serviceTCP.loadBalancerSourceRanges | indent 4 }}
{{- end -}}
{{- if .Values.serviceTCP.externalIPs }}
externalIPs:
{{ toYaml .Values.serviceTCP.externalIPs | indent 4 }}
{{- end }}
externalTrafficPolicy: {{ .Values.serviceTCP.externalTrafficPolicy }}
ports:
- port: 53
targetPort: dns
protocol: TCP
name: dns
selector:
app.kubernetes.io/name: {{ include "adguard-home.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}

View File

@@ -1,37 +0,0 @@
{{- if .Values.serviceUDP.enabled }}
apiVersion: v1
kind: Service
metadata:
name: {{ include "adguard-home.fullname" . }}-udp
labels:
app.kubernetes.io/name: {{ include "adguard-home.name" . }}
helm.sh/chart: {{ include "adguard-home.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- if .Values.serviceUDP.annotations }}
annotations:
{{ toYaml .Values.serviceUDP.annotations | indent 4 }}
{{- end }}
spec:
type: {{ .Values.serviceUDP.type }}
{{- if .Values.serviceUDP.loadBalancerIP }}
loadBalancerIP: {{ .Values.serviceUDP.loadBalancerIP }}
{{- end }}
{{- if .Values.serviceUDP.loadBalancerSourceRanges }}
loadBalancerSourceRanges:
{{ toYaml .Values.serviceUDP.loadBalancerSourceRanges | indent 4 }}
{{- end -}}
{{- if .Values.serviceUDP.externalIPs }}
externalIPs:
{{ toYaml .Values.serviceUDP.externalIPs | indent 4 }}
{{- end }}
externalTrafficPolicy: {{ .Values.serviceUDP.externalTrafficPolicy }}
ports:
- port: 53
targetPort: dns-udp
protocol: UDP
name: dns-udp
selector:
app.kubernetes.io/name: {{ include "adguard-home.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}

View File

@@ -1,35 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ include "adguard-home.fullname" . }}
labels:
app.kubernetes.io/name: {{ include "adguard-home.name" . }}
helm.sh/chart: {{ include "adguard-home.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 .Values.service.loadBalancerIP }}
loadBalancerIP: {{ .Values.service.loadBalancerIP }}
{{- end }}
{{- if .Values.service.loadBalancerSourceRanges }}
loadBalancerSourceRanges:
{{ toYaml .Values.service.loadBalancerSourceRanges | indent 4 }}
{{- end -}}
{{- if .Values.service.externalIPs }}
externalIPs:
{{ toYaml .Values.service.externalIPs | indent 4 }}
{{- end }}
externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy }}
ports:
- port: 3000
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/name: {{ include "adguard-home.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}

View File

@@ -1,23 +1,21 @@
{{- if .Values.serviceMonitor.enabled }}
{{- if .Values.prometheus.serviceMonitor.enabled }}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: {{ include "adguard-home.fullname" . }}
name: {{ template "common.names.fullname" . }}
labels:
app.kubernetes.io/name: {{ include "adguard-home.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
helm.sh/chart: {{ include "adguard-home.chart" . }}
{{- with .Values.serviceMonitor.additionalLabels }}
{{- include "common.labels" . | nindent 4 }}
{{- with .Values.prometheus.serviceMonitor.additionalLabels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
selector:
matchLabels:
app.kubernetes.io/name: {{ include "adguard-home.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- include "common.labels.selectorLabels" . | nindent 6 }}
endpoints:
- port: http
interval: 30s
{{- with .Values.prometheus.serviceMonitor.interval }}
interval: {{ . }}
{{- end }}
path: /
{{- end }}

View File

@@ -1,29 +0,0 @@
{{- if and .Values.persistence.work.enabled (not .Values.persistence.work.existingClaim) }}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: {{ template "adguard-home.fullname" . }}-work
{{- if .Values.persistence.work.skipuninstall }}
annotations:
"helm.sh/resource-policy": keep
{{- end }}
labels:
app.kubernetes.io/name: {{ include "adguard-home.name" . }}
helm.sh/chart: {{ include "adguard-home.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
accessModes:
- {{ .Values.persistence.work.accessMode | quote }}
resources:
requests:
storage: {{ .Values.persistence.work.size | quote }}
{{- if .Values.persistence.work.storageClass }}
{{- if (eq "-" .Values.persistence.work.storageClass) }}
storageClassName: ""
{{- else }}
storageClassName: "{{ .Values.persistence.work.storageClass }}"
{{- end }}
{{- end }}
{{- end -}}

View File

@@ -1,24 +1,115 @@
# upgrade strategy type (e.g. Recreate or RollingUpdate)
strategyType: Recreate
#
# 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
#
configAsCode:
enabled: false
resources: {}
# requests:
# memory: 128Mi
# cpu: 100m
image:
repository: busybox
tag: latest
pullPolicy: Always
# Copy the configmap to the AdGuardHome conf directory
# Do NOT overwrite when the file already exists
initContainers:
- name: copy-configmap
image: busybox
command:
- "sh"
- "-c"
- |
if [ ! -f /opt/adguardhome/conf/AdGuardHome.yaml ]; then
mkdir -p /opt/adguardhome/conf
cp /tmp/AdGuardHome.yaml /opt/adguardhome/conf/AdGuardHome.yaml
fi
volumeMounts:
- name: adguard-home-config
mountPath: /tmp/AdGuardHome.yaml
subPath: AdGuardHome.yaml
securityContext:
runAsUser: 0
image:
repository: adguard/adguardhome
tag: v0.105.2
pullPolicy: IfNotPresent
strategy:
type: Recreate
env: {}
# TZ:
args:
- "--config"
- "/opt/adguardhome/conf/AdGuardHome.yaml"
- "--no-check-update"
# -- (int) Number of pods to load balance between
replicas: 1
service:
port:
port: 3000
# additionalServices:
# - enabled: true
# nameSuffix: dns-tcp
# type: NodePort
# port:
# port: 53
# name: dns-tcp
# protocol: TCP
# targetPort: 53
# externalTrafficPolicy: Local
# - enabled: true
# nameSuffix: dns-udp
# type: NodePort
# port:
# port: 53
# name: dns-udp
# protocol: UDP
# targetPort: 53
# externalTrafficPolicy: Local
persistence:
config:
enabled: false
emptyDir:
enabled: false
mountPath: /opt/adguardhome/conf
data:
enabled: false
emptyDir:
enabled: false
mountPath: /opt/adguardhome/work
## Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
# storageClass: "-"
# accessMode: ReadWriteOnce
# size: 1Gi
## Do not delete the pvc upon helm uninstall
# skipuninstall: false
# existingClaim: ""
prometheus:
serviceMonitor:
enabled: false
interval: 30s
additionalLabels: {}
# podAnnotations:
# prometheus.io/scrape: "true"
# prometheus.io/port: "api"
# -- Full list of options https://github.com/AdguardTeam/AdGuardHome/wiki/Configuration
# @default -- see URL to default config
config: |
bind_host: 0.0.0.0
bind_port: 3000
beta_bind_port: 0
users: []
# - name: admin
# password: $2y$05$mV4GSa5Dymk4Hjg3NCscBuCYSckCGfc2mbS57SNkBkBAfvqfOdFfm
http_proxy: ""
language: "en"
language: en
rlimit_nofile: 0
debug_pprof: false
web_session_ttl: 720
@@ -27,6 +118,7 @@ configAsCode:
port: 53
statistics_interval: 1
querylog_enabled: true
querylog_file_enabled: true
querylog_interval: 90
querylog_size_memory: 1000
anonymize_client_ip: false
@@ -42,6 +134,7 @@ configAsCode:
refuse_any: true
upstream_dns:
- https://dns10.quad9.net/dns-query
upstream_dns_file: ""
bootstrap_dns:
- 9.9.9.10
- 149.112.112.10
@@ -50,15 +143,8 @@ configAsCode:
all_servers: false
fastest_addr: false
allowed_clients: []
# - 10.0.0.1
# - 10.0.1.1/24
disallowed_clients: []
# - 10.0.1.1
# - 10.0.11.1/24
blocked_hosts: []
# - example.org
# - '*.example.org'
# - '||example.org^'
cache_size: 4194304
cache_ttl_min: 0
cache_ttl_max: 0
@@ -66,6 +152,8 @@ configAsCode:
aaaa_disabled: false
enable_dnssec: false
edns_client_subnet: false
max_goroutines: 300
ipset: []
filtering_enabled: true
filters_update_interval: 24
parental_enabled: false
@@ -76,38 +164,17 @@ configAsCode:
parental_cache_size: 1048576
cache_time: 30
rewrites: []
# - domain: example.org
# answer: 127.0.0.1
# - domain: '*.example.org'
# answer: 127.0.0.1
blocked_services: []
# - facebook
# - origin
# - twitter
# - snapchat
# - skype
# - whatsapp
# - instagram
# - youtube
# - netflix
# - twitch
# - discord
# - amazon
# - ebay
# - cloudflare
# - steam
# - epic_games
# - reddit
# - ok
# - vk
# - mail_ru
# - tiktok
customresolver: null
tls:
enabled: false
server_name: ""
force_https: false
port_https: 443
port_dns_over_tls: 853
port_dns_over_quic: 784
port_dnscrypt: 0
dnscrypt_config_file: ""
allow_unencrypted_doh: false
strict_sni_check: false
certificate_chain: ""
@@ -128,235 +195,29 @@ configAsCode:
name: MalwareDomainList.com Hosts List
id: 4
whitelist_filters: []
# - enabled: true
# url: https://easylist-downloads.adblockplus.org/exceptionrules.txt
# name: Allow nonintrusive advertising
# id: 1595760241
user_rules: []
# - '||example.org^'
# - '@@||example.org^'
# - 127.0.0.1 example.org
# - '! Here goes a comment'
# - '# Also a comment'
dhcp:
enabled: false
interface_name: ""
dhcpv4:
gateway_ip: ""
subnet_mask: ""
range_start: ""
range_end: ""
lease_duration: 86400
icmp_timeout_msec: 1000
options: []
dhcpv6:
range_start: ""
lease_duration: 86400
ra_slaac_only: false
ra_allow_slaac: false
clients: []
# - name: myuser
# tags:
# - user_admin
# ids:
# - 192.168.91.1
# use_global_settings: true
# filtering_enabled: false
# parental_enabled: false
# safesearch_enabled: false
# safebrowsing_enabled: false
# use_global_blocked_services: true
# blocked_services: []
# upstreams: []
log_compress: false
log_localtime: false
log_max_backups: 0
log_max_size: 100
log_max_age: 3
log_file: ""
verbose: false
schema_version: 6
tlsSecretName: ""
# name of the secret that contains the tls cert and key.
# this secret will be mounted inside the adguard container /certs path. e.g. works with cert-manager
image:
repository: adguard/adguardhome
# Image tag is set via charts appVersion. If you want to override the tag, specify it here
# tag: vX.Y.Z
pullPolicy: IfNotPresent
nameOverride: ""
fullnameOverride: ""
podSecurityContext: {}
# fsGroup: 2000
securityContext: {}
# capabilities:
# drop:
# - ALL
# add:
# - NET_BIND_SERVICE
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
timezone: "UTC"
ingress:
enabled: false
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
path: /
hosts:
- chart-example.local
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
# Probes configuration
probes:
liveness:
enabled: true
initialDelaySeconds: 5
failureThreshold: 5
periodSeconds: 10
readiness:
enabled: false
initialDelaySeconds: 5
failureThreshold: 5
periodSeconds: 10
startup:
enabled: false
initialDelaySeconds: 5
failureThreshold: 30
periodSeconds: 10
service:
type: ClusterIP
# externalTrafficPolicy: Local
# externalIPs: []
# loadBalancerIP: ""
# a fixed LoadBalancer IP
# loadBalancerSourceRanges: []
annotations: {}
# metallb.universe.tf/address-pool: network-services
# metallb.universe.tf/allow-shared-ip: adguard-home-svc
serviceTCP:
enabled: false
type: NodePort
# externalTrafficPolicy: Local
# externalIPs: []
loadBalancerIP: ""
# a fixed LoadBalancer IP
# loadBalancerSourceRanges: []
annotations: {}
# metallb.universe.tf/address-pool: network-services
# metallb.universe.tf/allow-shared-ip: adguard-home-svc
serviceUDP:
enabled: true
type: NodePort
# externalTrafficPolicy: Local
# externalIPs: []
loadBalancerIP: ""
# a fixed LoadBalancer IP
# loadBalancerSourceRanges: []
annotations: {}
# metallb.universe.tf/address-pool: network-services
# metallb.universe.tf/allow-shared-ip: adguard-home-svc
serviceDNSOverTLS:
enabled: false
## Enable if you use AdGuard as a DNS over TLS/HTTPS server
type: NodePort
# externalTrafficPolicy: Local
# externalIPs: []
loadBalancerIP: ""
# a fixed LoadBalancer IP
# loadBalancerSourceRanges: []
annotations: {}
# metallb.universe.tf/address-pool: network-services
# metallb.universe.tf/allow-shared-ip: adguard-home-svc
serviceDHCP:
enabled: false
## Enable if you use AdGuard as a DHCP Server
type: NodePort
# externalTrafficPolicy: Local
# externalIPs: []
loadBalancerIP: ""
# a fixed LoadBalancer IP
annotations: {}
# metallb.universe.tf/address-pool: network-services
# metallb.universe.tf/allow-shared-ip: adguard-home-svc
serviceMonitor:
enabled: false
additionalLabels: {}
## Pod Annotations
podAnnotations:
prometheus.io/scrape: "true"
prometheus.io/port: "api"
persistence:
config:
enabled: true
## adguard-home configuration data Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
##
# storageClass: "-"
##
## If you want to reuse an existing claim, you can pass the name of the PVC using
## the existingClaim variable
# existingClaim: your-claim
# subPath: some-subpath
accessMode: ReadWriteOnce
size: 20Mi
## Do not delete the pvc upon helm uninstall
skipuninstall: false
work:
enabled: true
## adguard-home work volume configuration
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
##
# storageClass: "-"
##
## If you want to reuse an existing claim, you can pass the name of the PVC using
## the existingClaim variable
# existingClaim: your-claim
# subPath: some-subpath
accessMode: ReadWriteOnce
size: 10Gi
## Do not delete the pvc upon helm uninstall
skipuninstall: false
volumePermissions:
image:
repository: busybox
tag: latest
pullPolicy: Always
resources: {}
# requests:
# memory: 128Mi
# cpu: 100m
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:
# memory: 500Mi
# requests:
# cpu: 50m
# memory: 275Mi
nodeSelector: {}
tolerations: []
affinity: {}
schema_version: 7

View File

@@ -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
.vscode/
# OWNERS file for Kubernetes
OWNERS
# helm-docs templates
*.gotmpl

View File

@@ -0,0 +1,19 @@
apiVersion: v2
appVersion: latest
description: An organizer for your porn, written in Go
name: stash
version: 1.0.0
kubeVersion: ">=1.16.0-0"
keywords:
- porn
home: https://github.com/k8s-at-home/charts/tree/master/charts/stable/stash
sources:
- https://github.com/stashapp/stash
- https://hub.docker.com/r/stashapp/stash
maintainers:
- name: onedr0p
email: devin.kray@gmail.com
dependencies:
- name: common
repository: https://library-charts.k8s-at-home.com
version: 2.1.0

View File

@@ -0,0 +1,122 @@
# stash
![Version: 1.0.0](https://img.shields.io/badge/Version-1.0.0-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square)
An organizer for your porn, written in Go
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)**
## Source Code
* <https://github.com/stashapp/stash>
* <https://hub.docker.com/r/stashapp/stash>
## Requirements
Kubernetes: `>=1.16.0-0`
## Dependencies
| Repository | Name | Version |
|------------|------|---------|
| https://library-charts.k8s-at-home.com | common | 2.1.0 |
## TL;DR
```console
helm repo add k8s-at-home https://k8s-at-home.com/charts/
helm repo update
helm install stash k8s-at-home/stash
```
## Installing the Chart
To install the chart with the release name `stash`
```console
helm install stash k8s-at-home/stash
```
## Uninstalling the Chart
To uninstall the `stash` deployment
```console
helm uninstall stash
```
The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release.
## Configuration
Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values.
Other values may be used from the [values.yaml](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common).
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
```console
helm install stash \
--set env.TZ="America/New York" \
k8s-at-home/stash
```
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart.
```console
helm install stash k8s-at-home/stash -f values.yaml
```
## Custom configuration
N/A
## Values
**Important**: When deploying an application Helm chart you can add more values from our common library chart [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common)
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| env | object | `{}` | |
| image.pullPolicy | string | `"IfNotPresent"` | |
| image.repository | string | `"stashapp/stash"` | |
| image.tag | string | `"latest"` | |
| ingress.enabled | bool | `false` | |
| persistence.config.emptyDir.enabled | bool | `false` | |
| persistence.config.enabled | bool | `false` | |
| persistence.media.emptyDir.enabled | bool | `false` | |
| persistence.media.enabled | bool | `false` | |
| persistence.media.mountPath | string | `"/media"` | |
| service.port.port | int | `9999` | |
| strategy.type | string | `"Recreate"` | |
## Changelog
All notable changes to this application Helm chart will be documented in this file but does not include changes from our common library. To read those click [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common#changelog).
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
### [1.0.0]
#### Added
- N/A
#### Changed
- N/A
#### Removed
- N/A
[1.0.0]: #1.0.0
## Support
- See the [Docs](https://docs.k8s-at-home.com/our-helm-charts/getting-started/)
- Open an [issue](https://github.com/k8s-at-home/charts/issues/new/choose)
- Ask a [question](https://github.com/k8s-at-home/organization/discussions)
- Join our [Discord](https://discord.gg/sTMX7Vh) community
----------------------------------------------
Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)

View File

@@ -0,0 +1,145 @@
{{- define "custom.repository.organization" -}}
k8s-at-home
{{- end -}}
{{- define "custom.repository.url" -}}
https://github.com/k8s-at-home/charts
{{- end -}}
{{- define "custom.helm.url" -}}
https://k8s-at-home.com/charts/
{{- end -}}
{{- define "custom.helm.path" -}}
{{ template "custom.repository.organization" . }}/{{ template "chart.name" . }}
{{- end -}}
{{- define "custom.notes" -}}
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)**
{{- end -}}
{{- define "custom.requirements" -}}
## Requirements
{{ template "chart.kubeVersionLine" . }}
{{- end -}}
{{- define "custom.dependencies" -}}
## Dependencies
{{ template "chart.requirementsTable" . }}
{{- end -}}
{{- define "custom.install.tldr" -}}
## TL;DR
```console
helm repo add {{ template "custom.repository.organization" . }} {{ template "custom.helm.url" . }}
helm repo update
helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }}
```
{{- end -}}
{{- define "custom.install" -}}
## Installing the Chart
To install the chart with the release name `{{ template "chart.name" . }}`
```console
helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }}
```
{{- end -}}
{{- define "custom.uninstall" -}}
## Uninstalling the Chart
To uninstall the `{{ template "chart.name" . }}` deployment
```console
helm uninstall {{ template "chart.name" . }}
```
The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release.
{{- end -}}
{{- define "custom.configuration.header" -}}
## Configuration
{{- end -}}
{{- define "custom.configuration.readValues" -}}
Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values.
Other values may be used from the [values.yaml](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common).
{{- end -}}
{{- define "custom.configuration.example.set" -}}
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
```console
helm install {{ template "chart.name" . }} \
--set env.TZ="America/New York" \
{{ template "custom.helm.path" . }}
```
{{- end -}}
{{- define "custom.configuration.example.file" -}}
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart.
```console
helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }} -f values.yaml
```
{{- end -}}
{{- define "custom.valuesSection" -}}
## Values
**Important**: When deploying an application Helm chart you can add more values from our common library chart [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common)
{{ template "chart.valuesTable" . }}
{{- end -}}
{{- define "custom.support" -}}
## Support
- See the [Docs](https://docs.k8s-at-home.com/our-helm-charts/getting-started/)
- Open an [issue](https://github.com/k8s-at-home/charts/issues/new/choose)
- Ask a [question](https://github.com/k8s-at-home/organization/discussions)
- Join our [Discord](https://discord.gg/sTMX7Vh) community
{{- end -}}
{{ template "chart.header" . }}
{{ template "chart.versionBadge" . }}{{ template "chart.typeBadge" . }}{{ template "chart.appVersionBadge" . }}
{{ template "chart.description" . }}
{{ template "custom.notes" . }}
{{ template "chart.sourcesSection" . }}
{{ template "custom.requirements" . }}
{{ template "custom.dependencies" . }}
{{ template "custom.install.tldr" . }}
{{ template "custom.install" . }}
{{ template "custom.uninstall" . }}
{{ template "custom.configuration.header" . }}
{{ template "custom.configuration.readValues" . }}
{{ template "custom.configuration.example.set" . }}
{{ template "custom.configuration.example.file" . }}
{{ template "custom.custom.configuration" . }}
{{ template "custom.valuesSection" . }}
{{ template "custom.changelog" . }}
{{ template "custom.support" . }}
{{ template "helm-docs.versionFooter" . }}

View File

@@ -0,0 +1,27 @@
{{- define "custom.changelog.header" -}}
## Changelog
{{- end -}}
{{- define "custom.changelog" -}}
{{ template "custom.changelog.header" . }}
All notable changes to this application Helm chart will be documented in this file but does not include changes from our common library. To read those click [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common#changelog).
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
### [1.0.0]
#### Added
- N/A
#### Changed
- N/A
#### Removed
- N/A
[1.0.0]: #1.0.0
{{- end -}}

View File

@@ -0,0 +1,9 @@
{{- define "custom.custom.configuration.header" -}}
## Custom configuration
{{- end -}}
{{- define "custom.custom.configuration" -}}
{{ template "custom.custom.configuration.header" . }}
N/A
{{- end -}}

View File

@@ -0,0 +1,16 @@
env:
STASH_STASH: "/media"
STASH_GENERATED: "/root/.stash/generated"
STASH_METADATA: "/root/.stash/metadata"
STASH_CACHE: "/root/.stash/cache"
persistence:
config:
enabled: true
emptyDir:
enabled: true
mountPath: /root/.stash
media:
enabled: true
emptyDir:
enabled: true
mountPath: /media

View File

@@ -0,0 +1 @@
{{- include "common.notes.defaultNotes" . -}}

View File

@@ -0,0 +1 @@
{{ include "common.all" . }}

View File

@@ -0,0 +1,54 @@
#
# 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:
repository: stashapp/stash
pullPolicy: IfNotPresent
tag: latest@sha256:24dbd76071745be0c4e75f730aa7ac2b37cb2b2918eabf8559643196b3b7a64a
strategy:
type: Recreate
# # See more environment variables in the stash documentation
# https://raw.githubusercontent.com/stashapp/stash/master/docker/production/docker-compose.yml
env: {}
# STASH_STASH:
# STASH_GENERATED:
# STASH_METADATA:
# STASH_CACHE:
service:
port:
port: 9999
ingress:
enabled: false
persistence:
config:
enabled: false
emptyDir:
enabled: false
mountPath: /root/.stash
media:
enabled: false
emptyDir:
enabled: false
mountPath: /media
## Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
# storageClass: "-"
# accessMode: ReadWriteOnce
# size: 1Gi
## Do not delete the pvc upon helm uninstall
# skipuninstall: false
# existingClaim: ""

View File

@@ -0,0 +1,24 @@
# 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
.vscode/
# OWNERS file for Kubernetes
OWNERS

View File

@@ -0,0 +1,12 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.0.0]
### Changed
- Initial version

View File

@@ -0,0 +1,20 @@
apiVersion: v2
version: 1.0.0
description: Creates a postgres cluster using the Zalando Postgres operator and local storage
name: zalando-postgres-cluster
appVersion: 1.0.0
keywords:
- postgres
- operator
- zalando
home: https://github.com/k8s-at-home/charts/tree/master/charts/stable/zalando-postgres-cluster
icon: https://upload.wikimedia.org/wikipedia/commons/thumb/2/29/Postgresql_elephant.svg/1200px-Postgresql_elephant.svg.png
sources:
- https://github.com/zalando/postgres-operator
maintainers:
- name: angelnu
email: git@angelnu.com
dependencies:
- name: common
repository: https://library-charts.k8s-at-home.com
version: 2.1.0

View File

@@ -0,0 +1,142 @@
# zalando-postgres-cluster
![Version: 1.0.0](https://img.shields.io/badge/Version-1.0.0-informational?style=flat-square) ![AppVersion: 1.0.0](https://img.shields.io/badge/AppVersion-1.0.0-informational?style=flat-square)
Creates a postgres cluster using the Zalando Postgres operator and local storage
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)**
## Source Code
* <https://github.com/zalando/postgres-operator>
## Requirements
## Dependencies
| Repository | Name | Version |
|------------|------|---------|
| https://library-charts.k8s-at-home.com | common | 2.1.0 |
## TL;DR
```console
helm repo add k8s-at-home https://k8s-at-home.com/charts/
helm repo update
helm install zalando-postgres-cluster k8s-at-home/zalando-postgres-cluster
```
## Installing the Chart
To install the chart with the release name `zalando-postgres-cluster`
```console
helm install zalando-postgres-cluster k8s-at-home/zalando-postgres-cluster
```
## Uninstalling the Chart
To uninstall the `zalando-postgres-cluster` deployment
```console
helm uninstall zalando-postgres-cluster
```
The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release.
## Configuration
Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values.
Other values may be used from the [values.yaml](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common).
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
```console
helm install zalando-postgres-cluster \
--set env.TZ="America/New York" \
k8s-at-home/zalando-postgres-cluster
```
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart.
```console
helm install zalando-postgres-cluster k8s-at-home/zalando-postgres-cluster -f values.yaml
```
## Custom configuration
This chart is a wrapper for the [Zalando postgres operator](https://github.com/zalando/postgres-operator) to create
a high available Postgres cluster using nodes local storage.
Features added by this wrapper:
- creates an storage class using local storage in the nodes specified in `persistentVolumes.replicaNodes`. These replicas survive
a tear-down and tear-up of the cluster.
- (optional) does sql dumps to an existing PVC with K8S cronjobs. The Operator only supports backups to cloud, not NFS PVC for example.
- Define the password for the DB so that it can be used accross tear-down and tear-up of the cluster.
## Values
**Important**: When deploying an application Helm chart you can add more values from our common library chart [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common)
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| controllerType | string | `""` | |
| dumpBackup.existingClaim | string | `nil` | |
| dumpBackup.image.pullPolicy | string | `"IfNotPresent"` | |
| dumpBackup.image.repository | string | `"postgres"` | |
| dumpBackup.image.tag | string | `"latest"` | |
| dumpBackup.resources.requests.cpu | string | `"5m"` | |
| dumpBackup.resources.requests.memory | string | `"10Mi"` | |
| dumpBackup.schedule | string | `"@daily"` | Backup schedule for postgres dumps |
| dumpBackup.subpath | string | `nil` | Persistent volume claim subpath for the backups @default: <subpathPrefix/<release-name> |
| dumpBackup.subpathPrefix | string | `"backup/db"` | Persistent volume claim subpath prefix for the backups |
| persistentVolumes.accessModes[0] | string | `"ReadWriteOnce"` | |
| persistentVolumes.annotations | object | `{}` | |
| persistentVolumes.hostPath | string | `nil` | Local path for the persistent volumes @default: <hostPathPrefix/<release-name> |
| persistentVolumes.hostPathPrefix | string | `"/run/db"` | Local prefix for persistent volumes NOTE: The default is in tempfs - you should change to a persistent place for production!!! |
| persistentVolumes.labels | object | `{}` | |
| persistentVolumes.reclaimPolicy | string | `"Retain"` | persistentVolumeReclaimPolicy for the persistent volumes Recicle will delete content once DB is deleted while Retain (default) will keep it. |
| persistentVolumes.replicaNodes | list | `["node1.example.com","node2.example.com"]` | Replica nodes Must set with at least 2 nodes for the cluster to be highly available |
| postgresql.databases | object | `{"postgres":"postgres"}` | databases to create and their user |
| postgresql.numberOfInstances | string | `nil` | Number of replicas It will be automatically set with the number of replicaNodes so any values set here are ignored. |
| postgresql.postgresql.version | string | `"13"` | Postgres version to deploy - see which versions are supported by the operator |
| postgresql.teamId | string | `nil` | team Id for the DB cluster |
| postgresql.users | object | `{"postgres":["superuser","createdb"]}` | DB users to create (see operator) |
| postgresql.volume.size | string | `"1Gi"` | Size of the persistance volume to allocate |
| postgresql.volume.storageClass | string | `nil` | Name of the storage class |
| service.enabled | bool | `false` | |
| superuser.password | string | `nil` | Superuser password |
| superuser.secret | string | `nil` | Superuser k8s secret name. It must match the patter used by the operator |
| superuser.user | string | `nil` | Superuser user used for cronjobs |
## Changelog
All notable changes to this application Helm chart will be documented in this file but does not include changes from our common library. To read those click [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/commonREADME.md#Changelog).
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
### [1.0.0]
#### Added
- N/A
#### Changed
- N/A
#### Removed
- N/A
[1.0.0]: #1.0.0
## Support
- See the [Docs](https://docs.k8s-at-home.com/our-helm-charts/getting-started/)
- Open an [issue](https://github.com/k8s-at-home/charts/issues/new/choose)
- Ask a [question](https://github.com/k8s-at-home/organization/discussions)
- Join our [Discord](https://discord.gg/sTMX7Vh) community
----------------------------------------------
Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)

View File

@@ -0,0 +1,145 @@
{{- define "custom.repository.organization" -}}
k8s-at-home
{{- end -}}
{{- define "custom.repository.url" -}}
https://github.com/k8s-at-home/charts
{{- end -}}
{{- define "custom.helm.url" -}}
https://k8s-at-home.com/charts/
{{- end -}}
{{- define "custom.helm.path" -}}
{{ template "custom.repository.organization" . }}/{{ template "chart.name" . }}
{{- end -}}
{{- define "custom.notes" -}}
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)**
{{- end -}}
{{- define "custom.requirements" -}}
## Requirements
{{ template "chart.kubeVersionLine" . }}
{{- end -}}
{{- define "custom.dependencies" -}}
## Dependencies
{{ template "chart.requirementsTable" . }}
{{- end -}}
{{- define "custom.install.tldr" -}}
## TL;DR
```console
helm repo add {{ template "custom.repository.organization" . }} {{ template "custom.helm.url" . }}
helm repo update
helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }}
```
{{- end -}}
{{- define "custom.install" -}}
## Installing the Chart
To install the chart with the release name `{{ template "chart.name" . }}`
```console
helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }}
```
{{- end -}}
{{- define "custom.uninstall" -}}
## Uninstalling the Chart
To uninstall the `{{ template "chart.name" . }}` deployment
```console
helm uninstall {{ template "chart.name" . }}
```
The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release.
{{- end -}}
{{- define "custom.configuration.header" -}}
## Configuration
{{- end -}}
{{- define "custom.configuration.readValues" -}}
Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values.
Other values may be used from the [values.yaml](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common).
{{- end -}}
{{- define "custom.configuration.example.set" -}}
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
```console
helm install {{ template "chart.name" . }} \
--set env.TZ="America/New York" \
{{ template "custom.helm.path" . }}
```
{{- end -}}
{{- define "custom.configuration.example.file" -}}
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart.
```console
helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }} -f values.yaml
```
{{- end -}}
{{- define "custom.valuesSection" -}}
## Values
**Important**: When deploying an application Helm chart you can add more values from our common library chart [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common)
{{ template "chart.valuesTable" . }}
{{- end -}}
{{- define "custom.support" -}}
## Support
- See the [Docs](https://docs.k8s-at-home.com/our-helm-charts/getting-started/)
- Open an [issue](https://github.com/k8s-at-home/charts/issues/new/choose)
- Ask a [question](https://github.com/k8s-at-home/organization/discussions)
- Join our [Discord](https://discord.gg/sTMX7Vh) community
{{- end -}}
{{ template "chart.header" . }}
{{ template "chart.versionBadge" . }}{{ template "chart.typeBadge" . }}{{ template "chart.appVersionBadge" . }}
{{ template "chart.description" . }}
{{ template "custom.notes" . }}
{{ template "chart.sourcesSection" . }}
{{ template "custom.requirements" . }}
{{ template "custom.dependencies" . }}
{{ template "custom.install.tldr" . }}
{{ template "custom.install" . }}
{{ template "custom.uninstall" . }}
{{ template "custom.configuration.header" . }}
{{ template "custom.configuration.readValues" . }}
{{ template "custom.configuration.example.set" . }}
{{ template "custom.configuration.example.file" . }}
{{ template "custom.custom.configuration" . }}
{{ template "custom.valuesSection" . }}
{{ template "custom.changelog" . }}
{{ template "custom.support" . }}
{{ template "helm-docs.versionFooter" . }}

View File

@@ -0,0 +1,27 @@
{{- define "custom.changelog.header" -}}
## Changelog
{{- end -}}
{{- define "custom.changelog" -}}
{{ template "custom.changelog.header" . }}
All notable changes to this application Helm chart will be documented in this file but does not include changes from our common library. To read those click [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/commonREADME.md#Changelog).
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
### [1.0.0]
#### Added
- N/A
#### Changed
- N/A
#### Removed
- N/A
[1.0.0]: #1.0.0
{{- end -}}

View File

@@ -0,0 +1,17 @@
{{- define "custom.custom.configuration.header" -}}
## Custom configuration
{{- end -}}
{{- define "custom.custom.configuration" -}}
{{ template "custom.custom.configuration.header" . }}
This chart is a wrapper for the [Zalando postgres operator](https://github.com/zalando/postgres-operator) to create
a high available Postgres cluster using nodes local storage.
Features added by this wrapper:
- creates an storage class using local storage in the nodes specified in `persistentVolumes.replicaNodes`. These replicas survive
a tear-down and tear-up of the cluster.
- (optional) does sql dumps to an existing PVC with K8S cronjobs. The Operator only supports backups to cloud, not NFS PVC for example.
- Define the password for the DB so that it can be used accross tear-down and tear-up of the cluster.
{{- end -}}

View File

@@ -0,0 +1,56 @@
{{- if .Values.dumpBackup.existingClaim -}}
# ------------------- CronJob ------------------- #
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: {{ include "common.names.fullname" . }}-backup
labels:
{{- include "common.labels" . | nindent 4 }}
spec:
schedule: {{ .Values.dumpBackup.schedule | quote }}
concurrencyPolicy: Replace
jobTemplate:
spec:
template:
metadata:
name: {{ include "common.names.fullname" . }}-backup
labels:
{{- include "common.labels.selectorLabels" . | nindent 12 }}
spec:
containers:
- name: backup
image: "{{ .Values.dumpBackup.image.repository}}:{{ .Values.dumpBackup.image.tag}}"
imagePullPolicy: {{ .Values.dumpBackup.image.imagePullPolicy}}
command:
- /bin/sh
- -ce
- |
echo "$(date) - Start dump"
pg_dumpall > /backup/new && mv /backup/new /backup/backup
echo "$(date) - End dump"
ls -lh /backup
resources:
{{- .Values.dumpBackup.resources | toYaml | nindent 16 }}
env:
- name: PGHOST
value: {{ include "zalando-postgres-cluster.db" . }}
- name: PGUSER
valueFrom:
secretKeyRef:
name: {{ include "zalando-postgres-cluster.superuser_secret" . }}
key: username
- name: PGPASSWORD
valueFrom:
secretKeyRef:
name: {{ include "zalando-postgres-cluster.superuser_secret" . }}
key: password
volumeMounts:
- mountPath: /backup
name: backup-volume
subPath: {{ include "zalando-postgres-cluster.backupPVCSubpath" . }}
restartPolicy: OnFailure
volumes:
- name: backup-volume
persistentVolumeClaim:
claimName: {{ .Values.dumpBackup.existingClaim }}
{{- end -}}

View File

@@ -0,0 +1,37 @@
{{/* Make sure all variables are set properly */}}
{{- include "common.values.setup" . }}
{{- define "zalando-postgres-cluster.db" -}}
{{- include "common.names.fullname" .|lower -}}-postgres
{{- end -}}
{{- define "zalando-postgres-cluster.superuser" -}}
{{- default (keys .Values.postgresql.users | first ) .Values.superuser.user -}}
{{- end -}}
{{- define "zalando-postgres-cluster.superuser_secret" -}}
{{ default (printf "%s.%s.credentials.postgresql.acid.zalan.do" (include "zalando-postgres-cluster.superuser" .) (include "zalando-postgres-cluster.db" .)) .Values.superuser.secret }}
{{- end -}}
{{- define "zalando-postgres-cluster.superuser_password" -}}
{{- default (randAlphaNum 50) .Values.superuser.password -}}
{{- end -}}
{{- define "zalando-postgres-cluster.storageClass" -}}
{{- default (include "common.names.fullname" .|lower ) .Values.postgresql.volume.storageClass -}}
{{- end -}}
{{- define "zalando-postgres-cluster.pvName" -}}
{{- include "common.names.fullname" .|lower -}}
{{- end -}}
{{- define "zalando-postgres-cluster.localPath" -}}
{{- default (printf "%s/%s" .Values.persistentVolumes.hostPathPrefix (include "common.names.fullname" .)) .Values.persistentVolumes.hostPath -}}
{{- end -}}
{{- define "zalando-postgres-cluster.backupPVCSubpath" -}}
{{- default (printf "%s/%s" .Values.dumpBackup.subpathPrefix (include "common.names.fullname" .)) .Values.dumpBackup.subpath -}}
{{- end -}}
{{/* Render the templates */}}
{{ include "common.all" . }}

View File

@@ -0,0 +1,18 @@
{{- if not .Values.postgresql.volume.storageClass -}}
{{- $_ := set .Values.postgresql.volume "storageClass" (include "zalando-postgres-cluster.storageClass" .) }}
{{- end}}
{{- if not .Values.postgresql.teamId -}}
{{- $_ := set .Values.postgresql "teamId" (include "common.names.fullname" .) }}
{{- end}}
{{- $_ := set .Values.postgresql "numberOfInstances" (len $.Values.persistentVolumes.replicaNodes) }}
apiVersion: "acid.zalan.do/v1"
kind: postgresql
metadata:
name: {{ include "zalando-postgres-cluster.db" . }}
labels:
{{- include "common.labels" . | nindent 4 }}
spec:
{{- .Values.postgresql | toYaml | nindent 2 }}

View File

@@ -0,0 +1,40 @@
{{- range $i:= untilStep 0 (len $.Values.persistentVolumes.replicaNodes) 1 -}}
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: {{ include "zalando-postgres-cluster.pvName" $ }}-{{ $i }}
labels:
{{- include "common.labels" $ | nindent 4 }}
{{- if gt (len $.Values.persistentVolumes.labels) 0 }}
{{- $.Values.persistentVolumes.labels | toYaml | nindent 4 }}
{{- end }}
{{- if gt (len $.Values.persistentVolumes.annotations) 0 }}
annotations:
{{- $.Values.persistentVolumes.annotations | toYaml | nindent 4 }}
{{- end }}
finalizers:
- kubernetes.io/pv-protection
spec:
storageClassName: {{ include "zalando-postgres-cluster.storageClass" $ }}
volumeMode: Filesystem
capacity:
storage: "{{ $.Values.postgresql.volume.size }}"
accessModes:
{{- $.Values.persistentVolumes.accessModes | toYaml | nindent 4 }}
hostPath:
path: {{ include "zalando-postgres-cluster.localPath" $ }}
#Since it is created directly this does not delete it from cluster
persistentVolumeReclaimPolicy: "{{ $.Values.persistentVolumes.reclaimPolicy }}"
{{- $e := index $.Values.persistentVolumes.replicaNodes $i }}
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- {{ $e }}
{{ end }}

View File

@@ -0,0 +1,16 @@
apiVersion: v1
kind: Secret
metadata:
labels:
{{- include "common.labels" . | nindent 4 }}
application: spilo
team: {{ include "common.names.fullname" . }}
# xref: https://github.com/helm/helm/issues/3053
# xref: https://github.com/helm/helm/pull/5290
"helm.sh/hook": "pre-install"
"helm.sh/hook-delete-policy": "before-hook-creation"
name: {{ include "zalando-postgres-cluster.superuser_secret" . }}
stringData:
username: {{ include "zalando-postgres-cluster.superuser" . }}
password: {{ include "zalando-postgres-cluster.superuser_password" . }}
type: Opaque

View File

@@ -0,0 +1,10 @@
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: {{ include "zalando-postgres-cluster.storageClass" . }}
labels:
{{- include "common.labels" . | nindent 4 }}
annotations:
provisioner: kubernetes.io/no-provisioner
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer

View File

@@ -0,0 +1,42 @@
apiVersion: batch/v1
kind: Job
metadata:
name: "{{ include "common.names.fullname" .|lower }}-test-db"
labels:
{{ include "common.labels" . | nindent 4 }}
annotations:
"helm.sh/hook": test-success
spec:
template:
metadata:
name: "{{ include "common.names.fullname" .|lower }}-test-db"
labels:
{{ include "common.labels" . | nindent 8 }}
spec:
containers:
- name: psql
image: "{{ .Values.dumpBackup.image.repository}}:{{ .Values.dumpBackup.image.tag}}"
imagePullPolicy: {{ .Values.dumpBackup.image.imagePullPolicy}}
command: ['sh']
args:
- "-ecx"
- |
echo ";"|psql
env:
- name: PGHOST
value: {{ include "zalando-postgres-cluster.db" . | quote }}
- name: PGSSLMODE
value: require
- name: PGUSER
valueFrom:
secretKeyRef:
name: {{ include "zalando-postgres-cluster.superuser_secret" . }}
key: username
- name: PGPASSWORD
valueFrom:
secretKeyRef:
name: {{ include "zalando-postgres-cluster.superuser_secret" . }}
key: password
restartPolicy: Never

View File

@@ -0,0 +1,83 @@
# See all operator values at https://github.com/zalando/postgres-operator/blob/master/docs/reference/cluster_manifest.md
postgresql:
# -- team Id for the DB cluster
teamId:
volume:
# -- Size of the persistance volume to allocate
size: "1Gi"
# -- (string) Name of the storage class
# @default -- chart fullname
storageClass:
# -- Number of replicas
# It will be automatically set with the number of replicaNodes so any values set here are ignored.
numberOfInstances:
# -- DB users to create (see operator)
users:
postgres:
- superuser
- createdb
# -- databases to create and their user
databases:
postgres: postgres
postgresql:
# -- Postgres version to deploy - see which versions are supported by the operator
version: "13"
superuser:
# -- Superuser user used for cronjobs
# @default -- first user in postgresql.users
user:
# -- Superuser password
# @default -- randomly generated on first install of the chart
password:
# -- Superuser k8s secret name. It must match the patter used by the operator
# @default -- <user>.<db name>.credentials.postgresql.acid.zalan.do
secret:
persistentVolumes:
# -- Local prefix for persistent volumes
# NOTE: The default is in tempfs - you should change to a persistent place for production!!!
hostPathPrefix: "/run/db"
# -- Local path for the persistent volumes
# @default: <hostPathPrefix/<release-name>
hostPath:
# -- persistentVolumeReclaimPolicy for the persistent volumes
# Recicle will delete content once DB is deleted while Retain (default) will keep it.
reclaimPolicy: Retain
accessModes:
- ReadWriteOnce
# -- Replica nodes
# Must set with at least 2 nodes for the cluster to be highly available
replicaNodes:
- node1.example.com
- node2.example.com
labels: {}
# foo: a
annotations: {}
dumpBackup:
# Enable backups to a PVC
existingClaim:
# -- Backup schedule for postgres dumps
schedule: "@daily"
# -- Persistent volume claim subpath prefix for the backups
subpathPrefix: "backup/db"
# -- Persistent volume claim subpath for the backups
# @default: <subpathPrefix/<release-name>
subpath:
image:
repository: postgres
pullPolicy: IfNotPresent
tag: latest
resources:
requests:
memory: "10Mi"
cpu: "5m"
# Dissable Deployment and Service
controllerType: ""
service:
enabled: false