pihole update 2.27.0 --> 2.31.0

This commit is contained in:
Ibrahim Mkusa 2025-05-27 22:15:28 -04:00
parent 3ec8286476
commit aa0a454665
16 changed files with 249 additions and 55 deletions

View File

@ -1,6 +1,7 @@
[defaults] [defaults]
inventory=./inventory inventory=./inventory
remote_user="ansible" remote_user="ansible"
ansible_user="ansible"
roles_path=./roles roles_path=./roles
collections_path=./collections collections_path=./collections
host_key_checking = False host_key_checking = False

View File

@ -30,4 +30,4 @@ node3
node4 node4
node5 node5
node6 node6
docker0 rhel0

View File

@ -68,7 +68,8 @@ spec:
# the policy to upsert-only so they do not get deleted. # the policy to upsert-only so they do not get deleted.
- --policy=upsert-only - --policy=upsert-only
- --provider=pihole - --provider=pihole
- --pihole-tls-skip-verify
# Change this to the actual address of your Pi-hole web server # Change this to the actual address of your Pi-hole web server
- --pihole-server=http://192.168.0.239 - --pihole-server=http://pihole-web.default.svc.cluster.local
securityContext: securityContext:
fsGroup: 65534 # For ExternalDNS to be able to read Kubernetes token files fsGroup: 65534 # For ExternalDNS to be able to read Kubernetes token files

View File

@ -1,5 +1,45 @@
# Changelog # Changelog
## [2.31.0](https://github.com/MoJo2600/pihole-kubernetes/compare/pihole-2.30.0...pihole-2.31.0) (2025-05-16)
### Features
* Allow specifying loadBalancerClass for LoadBalancer services ([#370](https://github.com/MoJo2600/pihole-kubernetes/issues/370)) ([d0c9f95](https://github.com/MoJo2600/pihole-kubernetes/commit/d0c9f9534d83020d5b4541f6c402912279db38d5))
## [2.30.0](https://github.com/MoJo2600/pihole-kubernetes/compare/pihole-2.29.1...pihole-2.30.0) (2025-04-30)
### Features
* bump pihole version to 2025.04.0 ([#364](https://github.com/MoJo2600/pihole-kubernetes/issues/364)) ([b41ff7f](https://github.com/MoJo2600/pihole-kubernetes/commit/b41ff7f264ea4472a2556ed34c8d8a79eb616af0))
## [2.29.1](https://github.com/MoJo2600/pihole-kubernetes/compare/pihole-2.29.0...pihole-2.29.1) (2025-03-08)
### Bug Fixes
* revert liveness and readiness probe back to http ([#357](https://github.com/MoJo2600/pihole-kubernetes/issues/357)) ([bbb557b](https://github.com/MoJo2600/pihole-kubernetes/commit/bbb557b1730c31cec5401d99c9962613e376358a)), closes [#356](https://github.com/MoJo2600/pihole-kubernetes/issues/356)
* updated pihole exporter to v1.0.0 ([#351](https://github.com/MoJo2600/pihole-kubernetes/issues/351)) ([04d4e90](https://github.com/MoJo2600/pihole-kubernetes/commit/04d4e9047e3cbe6d1d0dade813367beb6291777c))
## [2.29.0](https://github.com/MoJo2600/pihole-kubernetes/compare/pihole-2.28.0...pihole-2.29.0) (2025-03-07)
### Features
* allow for env map values ([#339](https://github.com/MoJo2600/pihole-kubernetes/issues/339)) ([f6fcb06](https://github.com/MoJo2600/pihole-kubernetes/commit/f6fcb06d4c5d3a5fd41e08d8dbcc7e3fbba68a85))
* bump pihole version to 2025.03.0 ([#352](https://github.com/MoJo2600/pihole-kubernetes/issues/352)) ([83dd678](https://github.com/MoJo2600/pihole-kubernetes/commit/83dd67801fe07f872a12301a96f087b8e9d0f2f1))
## [2.28.0](https://github.com/MoJo2600/pihole-kubernetes/compare/pihole-2.27.0...pihole-2.28.0) (2025-03-02)
### Features
* add custom deployment annotation option ([#332](https://github.com/MoJo2600/pihole-kubernetes/issues/332)) ([bc8f720](https://github.com/MoJo2600/pihole-kubernetes/commit/bc8f720a9343e8b61fea68b67a2aa4f9ca56c0f4))
* allow to override the command of the cloudflared container. ([#331](https://github.com/MoJo2600/pihole-kubernetes/issues/331)) ([02cff49](https://github.com/MoJo2600/pihole-kubernetes/commit/02cff4992313488524f0883946bb6e425be8be77))
* PiHole v6 Support ([#343](https://github.com/MoJo2600/pihole-kubernetes/issues/343)) ([8112b80](https://github.com/MoJo2600/pihole-kubernetes/commit/8112b800b98eb6ff23aa19d074b56acd72e1066b))
* support doh readiness and podmonitor ([#335](https://github.com/MoJo2600/pihole-kubernetes/issues/335)) ([2c5aaf5](https://github.com/MoJo2600/pihole-kubernetes/commit/2c5aaf592b10d69ce674e87833edb82ad4954110))
## [2.27.0](https://github.com/MoJo2600/pihole-kubernetes/compare/pihole-2.26.2...pihole-2.27.0) (2024-11-28) ## [2.27.0](https://github.com/MoJo2600/pihole-kubernetes/compare/pihole-2.26.2...pihole-2.27.0) (2024-11-28)

View File

@ -1,8 +1,8 @@
apiVersion: v1 apiVersion: v1
appVersion: 2024.07.0 appVersion: 2025.04.0
description: Installs pihole in kubernetes description: Installs pihole in kubernetes
home: https://github.com/MoJo2600/pihole-kubernetes/tree/main/charts/pihole home: https://github.com/MoJo2600/pihole-kubernetes/tree/main/charts/pihole
icon: https://i2.wp.com/pi-hole.net/wp-content/uploads/2016/12/Vortex-R.png icon: https://wp-cdn.pi-hole.net/wp-content/uploads/2016/12/Vortex-R.png
maintainers: maintainers:
- email: christian.erhardt@mojo2k.de - email: christian.erhardt@mojo2k.de
name: MoJo2600 name: MoJo2600
@ -12,4 +12,4 @@ sources:
- https://pi-hole.net/ - https://pi-hole.net/
- https://github.com/pi-hole - https://github.com/pi-hole
- https://github.com/pi-hole/docker-pi-hole - https://github.com/pi-hole/docker-pi-hole
version: 2.27.0 version: 2.31.0

View File

@ -2,7 +2,9 @@
Installs pihole in kubernetes Installs pihole in kubernetes
![Version: 2.27.0](https://img.shields.io/badge/Version-2.27.0-informational?style=flat-square) ![AppVersion: 2024.07.0](https://img.shields.io/badge/AppVersion-2024.07.0-informational?style=flat-square) <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->[![All Contributors](https://img.shields.io/badge/all_contributors-27-blue.svg?style=flat-square)](#contributors-)<!-- ALL-CONTRIBUTORS-BADGE:END --> ![Version: 2.31.0](https://img.shields.io/badge/Version-2.31.0-informational?style=flat-square) ![AppVersion: 2025.04.0](https://img.shields.io/badge/AppVersion-2025.04.0-informational?style=flat-square) <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/all_contributors-27-blue.svg?style=flat-square)](#contributors-)
<!-- ALL-CONTRIBUTORS-BADGE:END -->
## Source Code ## Source Code
@ -179,37 +181,46 @@ The following table lists the configurable parameters of the pihole chart and th
| capabilities | object | `{}` | | | capabilities | object | `{}` | |
| customVolumes.config | object | `{}` | any volume type can be used here | | customVolumes.config | object | `{}` | any volume type can be used here |
| customVolumes.enabled | bool | `false` | set this to true to enable custom volumes | | customVolumes.enabled | bool | `false` | set this to true to enable custom volumes |
| deploymentAnnotations | object | `{}` | Additional annotations for the deployment |
| dnsHostPort.enabled | bool | `false` | set this to true to enable dnsHostPort | | dnsHostPort.enabled | bool | `false` | set this to true to enable dnsHostPort |
| dnsHostPort.port | int | `53` | default port for this pod | | dnsHostPort.port | int | `53` | default port for this pod |
| dnsmasq | object | `{"additionalHostsEntries":[],"customCnameEntries":[],"customDnsEntries":[],"customSettings":null,"staticDhcpEntries":[],"upstreamServers":[]}` | DNS MASQ settings | | dnsmasq | object | `{"additionalHostsEntries":[],"customCnameEntries":[],"customDnsEntries":[],"customSettings":null,"enableCustomDnsMasq":true,"staticDhcpEntries":[],"upstreamServers":[]}` | DNS MASQ settings |
| dnsmasq.additionalHostsEntries | list | `[]` | Dnsmasq reads the /etc/hosts file to resolve ips. You can add additional entries if you like | | dnsmasq.additionalHostsEntries | list | `[]` | Dnsmasq reads the /etc/hosts file to resolve ips. You can add additional entries if you like |
| dnsmasq.customCnameEntries | list | `[]` | Here we specify custom cname entries that should point to `A` records or elements in customDnsEntries array. The format should be: - cname=cname.foo.bar,foo.bar - cname=cname.bar.foo,bar.foo - cname=cname record,dns record | | dnsmasq.customCnameEntries | list | `[]` | Here we specify custom cname entries that should point to `A` records or elements in customDnsEntries array. The format should be: - cname=cname.foo.bar,foo.bar - cname=cname.bar.foo,bar.foo - cname=cname record,dns record |
| dnsmasq.customDnsEntries | list | `[]` | Add custom dns entries to override the dns resolution. All lines will be added to the pihole dnsmasq configuration. | | dnsmasq.customDnsEntries | list | `[]` | Add custom dns entries to override the dns resolution. All lines will be added to the pihole dnsmasq configuration. |
| dnsmasq.customSettings | string | `nil` | Other options | | dnsmasq.customSettings | string | `nil` | Other options |
| dnsmasq.enableCustomDnsMasq | bool | `true` | Load custom user configuration files from /etc/dnsmasq.d |
| dnsmasq.staticDhcpEntries | list | `[]` | Static DHCP config | | dnsmasq.staticDhcpEntries | list | `[]` | Static DHCP config |
| dnsmasq.upstreamServers | list | `[]` | Add upstream dns servers. All lines will be added to the pihole dnsmasq configuration | | dnsmasq.upstreamServers | list | `[]` | Add upstream dns servers. All lines will be added to the pihole dnsmasq configuration |
| doh.command | list | `[]` | Custom command to the DoH container |
| doh.enabled | bool | `false` | set to true to enabled DNS over HTTPs via cloudflared | | doh.enabled | bool | `false` | set to true to enabled DNS over HTTPs via cloudflared |
| doh.envVars | object | `{}` | Here you can pass environment variables to the DoH container, for example: | | doh.envVars | object | `{}` | Here you can pass environment variables to the DoH container, for example: |
| doh.monitoring.podMonitor.enabled | bool | `false` | |
| doh.name | string | `"cloudflared"` | name | | doh.name | string | `"cloudflared"` | name |
| doh.probes | object | `{"liveness":{"enabled":true,"failureThreshold":10,"initialDelaySeconds":60,"probe":{"exec":{"command":["nslookup","-po=5053","cloudflare.com","127.0.0.1"]}},"timeoutSeconds":5}}` | Probes configuration | | doh.probes | object | `{"liveness":{"enabled":true,"failureThreshold":10,"initialDelaySeconds":60,"probe":{"exec":{"command":["nslookup","-po=5053","cloudflare.com","127.0.0.1"]}},"timeoutSeconds":5},"readiness":{"enabled":true,"failureThreshold":10,"initialDelaySeconds":60,"probe":{"exec":{"command":["nslookup","-po=5053","cloudflare.com","127.0.0.1"]}},"timeoutSeconds":5}}` | Probes configuration |
| doh.probes.liveness | object | `{"enabled":true,"failureThreshold":10,"initialDelaySeconds":60,"probe":{"exec":{"command":["nslookup","-po=5053","cloudflare.com","127.0.0.1"]}},"timeoutSeconds":5}` | Configure the healthcheck for the doh container | | doh.probes.liveness | object | `{"enabled":true,"failureThreshold":10,"initialDelaySeconds":60,"probe":{"exec":{"command":["nslookup","-po=5053","cloudflare.com","127.0.0.1"]}},"timeoutSeconds":5}` | Configure the healthcheck for the doh container |
| doh.probes.liveness.enabled | bool | `true` | set to true to enable liveness probe | | doh.probes.liveness.enabled | bool | `true` | set to true to enable liveness probe |
| doh.probes.liveness.failureThreshold | int | `10` | defines the failure threshold for the liveness probe | | doh.probes.liveness.failureThreshold | int | `10` | defines the failure threshold for the liveness probe |
| doh.probes.liveness.initialDelaySeconds | int | `60` | defines the initial delay for the liveness probe | | doh.probes.liveness.initialDelaySeconds | int | `60` | defines the initial delay for the liveness probe |
| doh.probes.liveness.probe | object | `{"exec":{"command":["nslookup","-po=5053","cloudflare.com","127.0.0.1"]}}` | customize the liveness probe | | doh.probes.liveness.probe | object | `{"exec":{"command":["nslookup","-po=5053","cloudflare.com","127.0.0.1"]}}` | customize the liveness probe |
| doh.probes.liveness.timeoutSeconds | int | `5` | defines the timeout in secondes for the liveness probe | | doh.probes.liveness.timeoutSeconds | int | `5` | defines the timeout in secondes for the liveness probe |
| doh.probes.readiness.enabled | bool | `true` | set to true to enable readiness probe |
| doh.probes.readiness.failureThreshold | int | `10` | defines the failure threshold for the readiness probe |
| doh.probes.readiness.initialDelaySeconds | int | `60` | defines the initial delay for the readiness probe |
| doh.probes.readiness.probe | object | `{"exec":{"command":["nslookup","-po=5053","cloudflare.com","127.0.0.1"]}}` | customize the readiness probe |
| doh.probes.readiness.timeoutSeconds | int | `5` | defines the timeout in secondes for the readiness probe |
| doh.pullPolicy | string | `"IfNotPresent"` | Pull policy | | doh.pullPolicy | string | `"IfNotPresent"` | Pull policy |
| doh.repository | string | `"crazymax/cloudflared"` | repository | | doh.repository | string | `"crazymax/cloudflared"` | repository |
| doh.tag | string | `"latest"` | | | doh.tag | string | `"latest"` | |
| dualStack.enabled | bool | `false` | set this to true to enable creation of DualStack services or creation of separate IPv6 services if `serviceDns.type` is set to `"LoadBalancer"` | | dualStack.enabled | bool | `false` | set this to true to enable creation of DualStack services or creation of separate IPv6 services if `serviceDns.type` is set to `"LoadBalancer"` |
| extraContainers | list | `[]` | | | extraContainers | list | `[]` | |
| extraEnvVars | object | `{}` | extraEnvironmentVars is a list of extra enviroment variables to set for pihole to use | | extraEnvVars | object | `{}` | extraEnvironmentVars is a list of extra enviroment variables to set for pihole to use. You can use either scalars or project cm, secrets or pod fields via valueFrom |
| extraEnvVarsSecret | object | `{}` | extraEnvVarsSecret is a list of secrets to load in as environment variables. | | extraEnvVarsSecret | object | `{}` | extraEnvVarsSecret is a list of secrets to load in as environment variables. |
| extraInitContainers | list | `[]` | any initContainers you might want to run before starting pihole | | extraInitContainers | list | `[]` | any initContainers you might want to run before starting pihole |
| extraObjects | list | `[]` | any extra kubernetes manifests you might want | | extraObjects | list | `[]` | any extra kubernetes manifests you might want |
| extraVolumeMounts | object | `{}` | any extra volume mounts you might want | | extraVolumeMounts | object | `{}` | any extra volume mounts you might want |
| extraVolumes | object | `{}` | any extra volumes you might want | | extraVolumes | object | `{}` | any extra volumes you might want |
| ftl | object | `{}` | values that should be added to pihole-FTL.conf | | ftl | object | `{}` | values that should be added to pihole-FTL.conf. You can use either scalars or project cm, secrets or pod fields via valueFrom |
| hostNetwork | string | `"false"` | should the container use host network | | hostNetwork | string | `"false"` | should the container use host network |
| hostname | string | `""` | hostname of pod | | hostname | string | `""` | hostname of pod |
| image.pullPolicy | string | `"IfNotPresent"` | the pull policy | | image.pullPolicy | string | `"IfNotPresent"` | the pull policy |
@ -222,7 +233,7 @@ The following table lists the configurable parameters of the pihole chart and th
| maxUnavailable | int | `1` | The maximum number of Pods that can be unavailable during updating | | maxUnavailable | int | `1` | The maximum number of Pods that can be unavailable during updating |
| monitoring.podMonitor | object | `{"enabled":false}` | Preferably adding prometheus scrape annotations rather than enabling podMonitor. | | monitoring.podMonitor | object | `{"enabled":false}` | Preferably adding prometheus scrape annotations rather than enabling podMonitor. |
| monitoring.podMonitor.enabled | bool | `false` | set this to true to enable podMonitor | | monitoring.podMonitor.enabled | bool | `false` | set this to true to enable podMonitor |
| monitoring.sidecar | object | `{"enabled":false,"image":{"pullPolicy":"IfNotPresent","repository":"ekofr/pihole-exporter","tag":"v0.3.0"},"port":9617,"resources":{"limits":{"memory":"128Mi"}}}` | Sidecar configuration | | monitoring.sidecar | object | `{"enabled":false,"image":{"pullPolicy":"IfNotPresent","repository":"ekofr/pihole-exporter","tag":"v1.0.0"},"port":9617,"resources":{"limits":{"memory":"128Mi"}}}` | Sidecar configuration |
| monitoring.sidecar.enabled | bool | `false` | set this to true to enable podMonitor as sidecar | | monitoring.sidecar.enabled | bool | `false` | set this to true to enable podMonitor as sidecar |
| monitoring.sidecar.image.repository | string | `"ekofr/pihole-exporter"` | the repository to use | | monitoring.sidecar.image.repository | string | `"ekofr/pihole-exporter"` | the repository to use |
| nodeSelector | object | `{}` | Node selector values | | nodeSelector | object | `{}` | Node selector values |
@ -251,27 +262,29 @@ The following table lists the configurable parameters of the pihole chart and th
| regex | object | `{}` | list of blacklisted regex expressions to import during initial start of the container | | regex | object | `{}` | list of blacklisted regex expressions to import during initial start of the container |
| replicaCount | int | `1` | The number of replicas | | replicaCount | int | `1` | The number of replicas |
| resources | object | `{}` | lines, adjust them as necessary, and remove the curly braces after 'resources:'. | | resources | object | `{}` | lines, adjust them as necessary, and remove the curly braces after 'resources:'. |
| serviceDhcp | object | `{"annotations":{},"enabled":true,"externalTrafficPolicy":"Local","extraLabels":{},"loadBalancerIP":"","loadBalancerIPv6":"","nodePort":"","port":67,"type":"NodePort"}` | Configuration for the DHCP service on port 67 | | serviceDhcp | object | `{"annotations":{},"enabled":true,"externalTrafficPolicy":"Local","extraLabels":{},"loadBalancerClass":"","loadBalancerIP":"","loadBalancerIPv6":"","nodePort":"","port":67,"type":"NodePort"}` | Configuration for the DHCP service on port 67 |
| serviceDhcp.annotations | object | `{}` | Annotations for the DHCP service | | serviceDhcp.annotations | object | `{}` | Annotations for the DHCP service |
| serviceDhcp.enabled | bool | `true` | Generate a Service resource for DHCP traffic | | serviceDhcp.enabled | bool | `true` | Generate a Service resource for DHCP traffic |
| serviceDhcp.externalTrafficPolicy | string | `"Local"` | `spec.externalTrafficPolicy` for the DHCP Service | | serviceDhcp.externalTrafficPolicy | string | `"Local"` | `spec.externalTrafficPolicy` for the DHCP Service |
| serviceDhcp.extraLabels | object | `{}` | Labels for the DHCP service | | serviceDhcp.extraLabels | object | `{}` | Labels for the DHCP service |
| serviceDhcp.loadBalancerClass | string | `""` | `spec.loadBalancerClass` for the DHCP Service. Only used if type is LoadBalancer. |
| serviceDhcp.loadBalancerIP | string | `""` | A fixed `spec.loadBalancerIP` for the DHCP Service | | serviceDhcp.loadBalancerIP | string | `""` | A fixed `spec.loadBalancerIP` for the DHCP Service |
| serviceDhcp.loadBalancerIPv6 | string | `""` | A fixed `spec.loadBalancerIP` for the IPv6 DHCP Service | | serviceDhcp.loadBalancerIPv6 | string | `""` | A fixed `spec.loadBalancerIP` for the IPv6 DHCP Service |
| serviceDhcp.nodePort | string | `""` | Optional node port for the DHCP service | | serviceDhcp.nodePort | string | `""` | Optional node port for the DHCP service |
| serviceDhcp.port | int | `67` | The port of the DHCP service | | serviceDhcp.port | int | `67` | The port of the DHCP service |
| serviceDhcp.type | string | `"NodePort"` | `spec.type` for the DHCP Service | | serviceDhcp.type | string | `"NodePort"` | `spec.type` for the DHCP Service |
| serviceDns | object | `{"annotations":{},"externalTrafficPolicy":"Local","extraLabels":{},"loadBalancerIP":"","loadBalancerIPv6":"","mixedService":false,"nodePort":"","port":53,"type":"NodePort"}` | Configuration for the DNS service on port 53 | | serviceDns | object | `{"annotations":{},"externalTrafficPolicy":"Local","extraLabels":{},"loadBalancerClass":"","loadBalancerIP":"","loadBalancerIPv6":"","mixedService":false,"nodePort":"","port":53,"type":"NodePort"}` | Configuration for the DNS service on port 53 |
| serviceDns.annotations | object | `{}` | Annotations for the DNS service | | serviceDns.annotations | object | `{}` | Annotations for the DNS service |
| serviceDns.externalTrafficPolicy | string | `"Local"` | `spec.externalTrafficPolicy` for the DHCP Service | | serviceDns.externalTrafficPolicy | string | `"Local"` | `spec.externalTrafficPolicy` for the DHCP Service |
| serviceDns.extraLabels | object | `{}` | Labels for the DNS service | | serviceDns.extraLabels | object | `{}` | Labels for the DNS service |
| serviceDns.loadBalancerClass | string | `""` | `spec.loadBalancerClass` for the DNS Service. Only used if type is LoadBalancer. |
| serviceDns.loadBalancerIP | string | `""` | A fixed `spec.loadBalancerIP` for the DNS Service | | serviceDns.loadBalancerIP | string | `""` | A fixed `spec.loadBalancerIP` for the DNS Service |
| serviceDns.loadBalancerIPv6 | string | `""` | A fixed `spec.loadBalancerIP` for the IPv6 DNS Service | | serviceDns.loadBalancerIPv6 | string | `""` | A fixed `spec.loadBalancerIP` for the IPv6 DNS Service |
| serviceDns.mixedService | bool | `false` | deploys a mixed (TCP + UDP) Service instead of separate ones | | serviceDns.mixedService | bool | `false` | deploys a mixed (TCP + UDP) Service instead of separate ones |
| serviceDns.nodePort | string | `""` | Optional node port for the DNS service | | serviceDns.nodePort | string | `""` | Optional node port for the DNS service |
| serviceDns.port | int | `53` | The port of the DNS service | | serviceDns.port | int | `53` | The port of the DNS service |
| serviceDns.type | string | `"NodePort"` | `spec.type` for the DNS Service | | serviceDns.type | string | `"NodePort"` | `spec.type` for the DNS Service |
| serviceWeb | object | `{"annotations":{},"externalTrafficPolicy":"Local","extraLabels":{},"http":{"enabled":true,"nodePort":"","port":80},"https":{"enabled":true,"nodePort":"","port":443},"loadBalancerIP":"","loadBalancerIPv6":"","type":"ClusterIP"}` | Configuration for the web interface service | | serviceWeb | object | `{"annotations":{},"externalTrafficPolicy":"Local","extraLabels":{},"http":{"enabled":true,"nodePort":"","port":80},"https":{"enabled":true,"nodePort":"","port":443},"loadBalancerClass":"","loadBalancerIP":"","loadBalancerIPv6":"","type":"ClusterIP"}` | Configuration for the web interface service |
| serviceWeb.annotations | object | `{}` | Annotations for the DHCP service | | serviceWeb.annotations | object | `{}` | Annotations for the DHCP service |
| serviceWeb.externalTrafficPolicy | string | `"Local"` | `spec.externalTrafficPolicy` for the web interface Service | | serviceWeb.externalTrafficPolicy | string | `"Local"` | `spec.externalTrafficPolicy` for the web interface Service |
| serviceWeb.extraLabels | object | `{}` | Labels for the web interface service | | serviceWeb.extraLabels | object | `{}` | Labels for the web interface service |
@ -283,6 +296,7 @@ The following table lists the configurable parameters of the pihole chart and th
| serviceWeb.https.enabled | bool | `true` | Generate a service for HTTPS traffic | | serviceWeb.https.enabled | bool | `true` | Generate a service for HTTPS traffic |
| serviceWeb.https.nodePort | string | `""` | Optional node port for the web HTTPS service | | serviceWeb.https.nodePort | string | `""` | Optional node port for the web HTTPS service |
| serviceWeb.https.port | int | `443` | The port of the web HTTPS service | | serviceWeb.https.port | int | `443` | The port of the web HTTPS service |
| serviceWeb.loadBalancerClass | string | `""` | `spec.loadBalancerClass` for the web interface Service. Only used if type is LoadBalancer. |
| serviceWeb.loadBalancerIP | string | `""` | A fixed `spec.loadBalancerIP` for the web interface Service | | serviceWeb.loadBalancerIP | string | `""` | A fixed `spec.loadBalancerIP` for the web interface Service |
| serviceWeb.loadBalancerIPv6 | string | `""` | A fixed `spec.loadBalancerIP` for the IPv6 web interface Service | | serviceWeb.loadBalancerIPv6 | string | `""` | A fixed `spec.loadBalancerIP` for the IPv6 web interface Service |
| serviceWeb.type | string | `"ClusterIP"` | `spec.type` for the web interface Service | | serviceWeb.type | string | `"ClusterIP"` | `spec.type` for the web interface Service |
@ -397,25 +411,41 @@ Thanks goes to these wonderful people:
<td align="center" valign="top" width="14.28%"><a href="https://www.reyth.dev/"><img src="https://avatars.githubusercontent.com/u/23526880?v=4" width="100px;" alt=""/><br /><sub><b>Theo REY</b></sub></a></td> <td align="center" valign="top" width="14.28%"><a href="https://www.reyth.dev/"><img src="https://avatars.githubusercontent.com/u/23526880?v=4" width="100px;" alt=""/><br /><sub><b>Theo REY</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/piwi3910"><img src="https://avatars.githubusercontent.com/u/12539757?v=4" width="100px;" alt=""/><br /><sub><b>Watteel Pascal</b></sub></a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/piwi3910"><img src="https://avatars.githubusercontent.com/u/12539757?v=4" width="100px;" alt=""/><br /><sub><b>Watteel Pascal</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/frittenlab"><img src="https://avatars.githubusercontent.com/u/29921946?v=4" width="100px;" alt=""/><br /><sub><b>simon</b></sub></a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/frittenlab"><img src="https://avatars.githubusercontent.com/u/29921946?v=4" width="100px;" alt=""/><br /><sub><b>simon</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FernFerret"><img src="https://avatars.githubusercontent.com/u/72811?v=4" width="100px;" alt=""/><br /><sub><b>Eric</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/vince-vibin"><img src="https://avatars.githubusercontent.com/u/99386370?v=4" width="100px;" alt=""/><br /><sub><b>Vincent</b></sub></a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/vince-vibin"><img src="https://avatars.githubusercontent.com/u/99386370?v=4" width="100px;" alt=""/><br /><sub><b>Vincent</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Keydrain"><img src="https://avatars.githubusercontent.com/u/5723055?v=4" width="100px;" alt=""/><br /><sub><b>Clint</b></sub></a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/Keydrain"><img src="https://avatars.githubusercontent.com/u/5723055?v=4" width="100px;" alt=""/><br /><sub><b>Clint</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/tamcore"><img src="https://avatars.githubusercontent.com/u/319917?v=4" width="100px;" alt=""/><br /><sub><b>Philipp B.</b></sub></a></td>
</tr> </tr>
<tr> <tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/tamcore"><img src="https://avatars.githubusercontent.com/u/319917?v=4" width="100px;" alt=""/><br /><sub><b>Philipp B.</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ebCrypto"><img src="https://avatars.githubusercontent.com/u/44279886?v=4" width="100px;" alt=""/><br /><sub><b>ebCrypto</b></sub></a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/ebCrypto"><img src="https://avatars.githubusercontent.com/u/44279886?v=4" width="100px;" alt=""/><br /><sub><b>ebCrypto</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://ucdialplans.com/"><img src="https://avatars.githubusercontent.com/u/44060527?v=4" width="100px;" alt=""/><br /><sub><b>Ken Lasko</b></sub></a></td> <td align="center" valign="top" width="14.28%"><a href="https://ucdialplans.com/"><img src="https://avatars.githubusercontent.com/u/44060527?v=4" width="100px;" alt=""/><br /><sub><b>Ken Lasko</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mbund"><img src="https://avatars.githubusercontent.com/u/25110595?v=4" width="100px;" alt=""/><br /><sub><b>Mark Bundschuh</b></sub></a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/mbund"><img src="https://avatars.githubusercontent.com/u/25110595?v=4" width="100px;" alt=""/><br /><sub><b>Mark Bundschuh</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://fotoallerlei.com/"><img src="https://avatars.githubusercontent.com/u/3430656?v=4" width="100px;" alt=""/><br /><sub><b>Max Rosin</b></sub></a></td> <td align="center" valign="top" width="14.28%"><a href="https://fotoallerlei.com/"><img src="https://avatars.githubusercontent.com/u/3430656?v=4" width="100px;" alt=""/><br /><sub><b>Max Rosin</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/yzeng1314"><img src="https://avatars.githubusercontent.com/u/6365365?v=4" width="100px;" alt=""/><br /><sub><b>Yang</b></sub></a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/yzeng1314"><img src="https://avatars.githubusercontent.com/u/6365365?v=4" width="100px;" alt=""/><br /><sub><b>Yang</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dwarf-king-hreidmar"><img src="https://avatars.githubusercontent.com/u/45319558?v=4" width="100px;" alt=""/><br /><sub><b>dwarf-king-hreidmar</b></sub></a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/dwarf-king-hreidmar"><img src="https://avatars.githubusercontent.com/u/45319558?v=4" width="100px;" alt=""/><br /><sub><b>dwarf-king-hreidmar</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/s94santos"><img src="https://avatars.githubusercontent.com/u/10950164?v=4" width="100px;" alt=""/><br /><sub><b>s94santos</b></sub></a></td>
</tr> </tr>
<tr> <tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/s94santos"><img src="https://avatars.githubusercontent.com/u/10950164?v=4" width="100px;" alt=""/><br /><sub><b>s94santos</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/adamrdavid"><img src="https://avatars.githubusercontent.com/u/1854876?v=4" width="100px;" alt=""/><br /><sub><b>Adam David</b></sub></a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/adamrdavid"><img src="https://avatars.githubusercontent.com/u/1854876?v=4" width="100px;" alt=""/><br /><sub><b>Adam David</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/bkonicek"><img src="https://avatars.githubusercontent.com/u/7397530?v=4" width="100px;" alt=""/><br /><sub><b>Ben Konicek</b></sub></a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/bkonicek"><img src="https://avatars.githubusercontent.com/u/7397530?v=4" width="100px;" alt=""/><br /><sub><b>Ben Konicek</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Gabisonfire"><img src="https://avatars.githubusercontent.com/u/6416239?v=4" width="100px;" alt=""/><br /><sub><b>Gabisonfire</b></sub></a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/Gabisonfire"><img src="https://avatars.githubusercontent.com/u/6416239?v=4" width="100px;" alt=""/><br /><sub><b>Gabisonfire</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/giolekva"><img src="https://avatars.githubusercontent.com/u/124899?v=4" width="100px;" alt=""/><br /><sub><b>Giorgi Lekveishvili</b></sub></a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/giolekva"><img src="https://avatars.githubusercontent.com/u/124899?v=4" width="100px;" alt=""/><br /><sub><b>Giorgi Lekveishvili</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/paimonsoror"><img src="https://avatars.githubusercontent.com/u/935046?v=4" width="100px;" alt=""/><br /><sub><b>Paimon Sorornejad</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mivek"><img src="https://avatars.githubusercontent.com/u/9912558?v=4" width="100px;" alt=""/><br /><sub><b>Jean-Kevin KPADEY</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/aogier"><img src="https://avatars.githubusercontent.com/u/321364?v=4" width="100px;" alt=""/><br /><sub><b>Alessandro Ogier</b></sub></a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Luukvdm"><img src="https://avatars.githubusercontent.com/u/25098818?v=4" width="100px;" alt=""/><br /><sub><b>Luuk v/d Maagdenberg</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sunsided"><img src="https://avatars.githubusercontent.com/u/495335?v=4" width="100px;" alt=""/><br /><sub><b>Markus Mayer</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/prfj"><img src="https://avatars.githubusercontent.com/u/37109548?v=4" width="100px;" alt=""/><br /><sub><b>Paulo Jesus</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://blog.bergpb.dev/"><img src="https://avatars.githubusercontent.com/u/11005963?v=4" width="100px;" alt=""/><br /><sub><b>Lindemberg Barbosa</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://ricardobaltazar.com/"><img src="https://avatars.githubusercontent.com/u/1923140?v=4" width="100px;" alt=""/><br /><sub><b>Ricardo Baltazar Chaves</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wolviecb"><img src="https://avatars.githubusercontent.com/u/13783824?v=4" width="100px;" alt=""/><br /><sub><b>Thomas Andrade</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/alexinthesky"><img src="https://avatars.githubusercontent.com/u/14876221?v=4" width="100px;" alt=""/><br /><sub><b>Alexandre Chappaz</b></sub></a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/cristiklein"><img src="https://avatars.githubusercontent.com/u/1660833?v=4" width="100px;" alt=""/><br /><sub><b>Cristian Klein</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="http://flouret.com/"><img src="https://avatars.githubusercontent.com/u/9397098?v=4" width="100px;" alt=""/><br /><sub><b>JP Flouret</b></sub></a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/fernferret"><img src="https://avatars.githubusercontent.com/u/72811?v=4" width="100px;" alt=""/><br /><sub><b>Eric</b></sub></a></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@ -8,6 +8,10 @@ metadata:
chart: {{ template "pihole.chart" . }} chart: {{ template "pihole.chart" . }}
release: {{ .Release.Name }} release: {{ .Release.Name }}
heritage: {{ .Release.Service }} heritage: {{ .Release.Service }}
{{- with .Values.deploymentAnnotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec: spec:
replicas: {{ .Values.replicaCount }} replicas: {{ .Values.replicaCount }}
strategy: strategy:
@ -112,6 +116,12 @@ spec:
imagePullPolicy: {{ .Values.doh.pullPolicy }} imagePullPolicy: {{ .Values.doh.pullPolicy }}
terminationMessagePath: /dev/termination-log terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File terminationMessagePolicy: File
{{- if .Values.doh.command }}
command:
{{- range $key, $value := .Values.doh.command }}
- {{ $value }}
{{- end }}
{{- end }}
resources: resources:
limits: limits:
memory: 128Mi memory: 128Mi
@ -136,14 +146,23 @@ spec:
failureThreshold: {{ .Values.doh.probes.liveness.failureThreshold }} failureThreshold: {{ .Values.doh.probes.liveness.failureThreshold }}
timeoutSeconds: {{ .Values.doh.probes.liveness.timeoutSeconds }} timeoutSeconds: {{ .Values.doh.probes.liveness.timeoutSeconds }}
{{- end }} {{- end }}
{{- if .Values.doh.probes.readiness.enabled }}
readinessProbe:
{{ toYaml .Values.doh.probes.readiness.probe | indent 12 }}
initialDelaySeconds: {{ .Values.doh.probes.readiness.initialDelaySeconds }}
failureThreshold: {{ .Values.doh.probes.readiness.failureThreshold }}
timeoutSeconds: {{ .Values.doh.probes.readiness.timeoutSeconds }}
{{- end }}
{{- end }} {{- end }}
- name: {{ .Chart.Name }} - name: {{ .Chart.Name }}
env: env:
- name: 'WEB_PORT' - name: 'FTLCONF_webserver_port'
value: "{{ .Values.webHttp }}" value: "{{ .Values.webHttp }}"
- name: VIRTUAL_HOST - name: VIRTUAL_HOST
value: {{ .Values.virtualHost }} value: {{ .Values.virtualHost }}
- name: WEBPASSWORD - name: FTLCONF_misc_etc_dnsmasq_d
value: {{ ne .Values.dnsmasq.enableCustomDnsMasq false | quote }}
- name: FTLCONF_webserver_api_password
{{- if .Values.admin.enabled }} {{- if .Values.admin.enabled }}
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
@ -154,8 +173,12 @@ spec:
{{- end }} {{- end }}
{{- range $key, $value := .Values.extraEnvVars }} {{- range $key, $value := .Values.extraEnvVars }}
- name: {{ $key | quote }} - name: {{ $key | quote }}
{{- if kindIs "map" $value }}
{{- toYaml $value | nindent 12 }}
{{- else }}
value: {{ $value | quote }} value: {{ $value | quote }}
{{- end }} {{- end }}
{{- end }}
{{- range $key, $value := .Values.extraEnvVarsSecret }} {{- range $key, $value := .Values.extraEnvVarsSecret }}
- name: {{ $key | quote }} - name: {{ $key | quote }}
valueFrom: valueFrom:
@ -164,20 +187,22 @@ spec:
name: {{ $value.name | quote }} name: {{ $value.name | quote }}
{{- end }} {{- end }}
{{- if .Values.doh.enabled }} {{- if .Values.doh.enabled }}
- name: 'DNS1' - name: 'FTLCONF_dns_upstreams'
value: "127.0.0.1#5053"
- name: DNS2
value: "127.0.0.1#5053" value: "127.0.0.1#5053"
{{- else }} {{- else }}
{{- if .Values.DNS1 }} {{- if .Values.DNS1 }}
- name: 'PIHOLE_DNS_' - name: 'FTLCONF_dns_upstreams'
value: {{ if .Values.DNS2 }}{{ ( printf "%v;%v" .Values.DNS1 .Values.DNS2 ) | squote }}{{ else }}{{ .Values.DNS1 | squote }}{{ end }} value: {{ if .Values.DNS2 }}{{ ( printf "%v;%v" .Values.DNS1 .Values.DNS2 ) }}{{ else }}{{ .Values.DNS1 }}{{ end }}
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- range $key, $value := .Values.ftl }} {{- range $key, $value := .Values.ftl }}
- name: 'FTLCONF_{{ $key }}' - name: 'FTLCONF_{{ $key }}'
{{- if kindIs "map" $value }}
{{- toYaml $value | nindent 12 }}
{{- else }}
value: {{ $value | quote }} value: {{ $value | quote }}
{{- end }} {{- end }}
{{- end }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }} imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext: securityContext:
@ -215,7 +240,7 @@ spec:
command: {{ .Values.probes.liveness.command | required "An array of command(s) is required if 'type' is set to 'command'." | toYaml | nindent 16 }} command: {{ .Values.probes.liveness.command | required "An array of command(s) is required if 'type' is set to 'command'." | toYaml | nindent 16 }}
{{- else }} {{- else }}
httpGet: httpGet:
path: /admin/index.php path: /admin
port: {{ .Values.probes.liveness.port }} port: {{ .Values.probes.liveness.port }}
scheme: {{ .Values.probes.liveness.scheme }} scheme: {{ .Values.probes.liveness.scheme }}
{{- end }} {{- end }}
@ -231,7 +256,7 @@ spec:
command: {{ .Values.probes.readiness.command | required "An array of command(s) is required if 'type' is set to 'command'." | toYaml | nindent 16 }} command: {{ .Values.probes.readiness.command | required "An array of command(s) is required if 'type' is set to 'command'." | toYaml | nindent 16 }}
{{- else }} {{- else }}
httpGet: httpGet:
path: /admin/index.php path: /admin
port: {{ .Values.probes.readiness.port }} port: {{ .Values.probes.readiness.port }}
scheme: {{ .Values.probes.readiness.scheme }} scheme: {{ .Values.probes.readiness.scheme }}
{{- end }} {{- end }}

View File

@ -1,4 +1,4 @@
{{- if .Values.monitoring.podMonitor.enabled }} {{- if or .Values.monitoring.podMonitor.enabled .Values.doh.monitoring.podMonitor.enabled }}
apiVersion: monitoring.coreos.com/v1 apiVersion: monitoring.coreos.com/v1
kind: PodMonitor kind: PodMonitor
metadata: metadata:
@ -16,6 +16,7 @@ metadata:
{{- end }} {{- end }}
spec: spec:
podMetricsEndpoints: podMetricsEndpoints:
{{- if .Values.monitoring.podMonitor.enabled }}
- port: prometheus - port: prometheus
path: /metrics path: /metrics
{{- if .Values.monitoring.podMonitor.interval }} {{- if .Values.monitoring.podMonitor.interval }}
@ -31,6 +32,11 @@ spec:
{{- if .Values.monitoring.podMonitor.bearerTokenSecret.optional }} {{- if .Values.monitoring.podMonitor.bearerTokenSecret.optional }}
optional: {{ .Values.monitoring.podMonitor.bearerTokenSecret.optional }} optional: {{ .Values.monitoring.podMonitor.bearerTokenSecret.optional }}
{{- end }} {{- end }}
{{- end }}
{{- end }}
{{- if .Values.doh.monitoring.podMonitor.enabled }}
- port: cloudflared-met
path: /metrics
{{- end }} {{- end }}
jobLabel: {{ template "pihole.fullname" . }}-prometheus-exporter jobLabel: {{ template "pihole.fullname" . }}-prometheus-exporter
namespaceSelector: namespaceSelector:

View File

@ -27,6 +27,9 @@ spec:
{{- if .Values.serviceDhcp.loadBalancerIP }} {{- if .Values.serviceDhcp.loadBalancerIP }}
loadBalancerIP: {{ .Values.serviceDhcp.loadBalancerIP }} loadBalancerIP: {{ .Values.serviceDhcp.loadBalancerIP }}
{{- end }} {{- end }}
{{- if and (eq .Values.serviceDhcp.type "LoadBalancer") .Values.serviceDhcp.loadBalancerClass }}
loadBalancerClass: {{ .Values.serviceDhcp.loadBalancerClass }}
{{- end }}
{{- if or (eq .Values.serviceDhcp.type "NodePort") (eq .Values.serviceDhcp.type "LoadBalancer") }} {{- if or (eq .Values.serviceDhcp.type "NodePort") (eq .Values.serviceDhcp.type "LoadBalancer") }}
externalTrafficPolicy: {{ .Values.serviceDhcp.externalTrafficPolicy }} externalTrafficPolicy: {{ .Values.serviceDhcp.externalTrafficPolicy }}
{{- end }} {{- end }}
@ -65,6 +68,9 @@ spec:
{{- if .Values.serviceDhcp.loadBalancerIPv6 }} {{- if .Values.serviceDhcp.loadBalancerIPv6 }}
loadBalancerIP: {{ .Values.serviceDhcp.loadBalancerIPv6 }} loadBalancerIP: {{ .Values.serviceDhcp.loadBalancerIPv6 }}
{{- end }} {{- end }}
{{- if and (eq .Values.serviceDhcp.type "LoadBalancer") .Values.serviceDhcp.loadBalancerClass }}
loadBalancerClass: {{ .Values.serviceDhcp.loadBalancerClass }}
{{- end }}
{{- if or (eq .Values.serviceDhcp.type "NodePort") (eq .Values.serviceDhcp.type "LoadBalancer") }} {{- if or (eq .Values.serviceDhcp.type "NodePort") (eq .Values.serviceDhcp.type "LoadBalancer") }}
externalTrafficPolicy: {{ .Values.serviceDhcp.externalTrafficPolicy }} externalTrafficPolicy: {{ .Values.serviceDhcp.externalTrafficPolicy }}
{{- end }} {{- end }}

View File

@ -27,6 +27,9 @@ spec:
{{- if .Values.serviceDns.loadBalancerIP }} {{- if .Values.serviceDns.loadBalancerIP }}
loadBalancerIP: {{ .Values.serviceDns.loadBalancerIP }} loadBalancerIP: {{ .Values.serviceDns.loadBalancerIP }}
{{- end }} {{- end }}
{{- if and (eq .Values.serviceDns.type "LoadBalancer") .Values.serviceDns.loadBalancerClass }}
loadBalancerClass: {{ .Values.serviceDns.loadBalancerClass }}
{{- end }}
{{- if or (eq .Values.serviceDns.type "NodePort") (eq .Values.serviceDns.type "LoadBalancer") }} {{- if or (eq .Values.serviceDns.type "NodePort") (eq .Values.serviceDns.type "LoadBalancer") }}
externalTrafficPolicy: {{ .Values.serviceDns.externalTrafficPolicy }} externalTrafficPolicy: {{ .Values.serviceDns.externalTrafficPolicy }}
{{- end }} {{- end }}
@ -71,6 +74,9 @@ spec:
{{- if .Values.serviceDns.loadBalancerIPv6 }} {{- if .Values.serviceDns.loadBalancerIPv6 }}
loadBalancerIP: {{ .Values.serviceDns.loadBalancerIPv6 }} loadBalancerIP: {{ .Values.serviceDns.loadBalancerIPv6 }}
{{- end }} {{- end }}
{{- if and (eq .Values.serviceDns.type "LoadBalancer") .Values.serviceDns.loadBalancerClass }}
loadBalancerClass: {{ .Values.serviceDns.loadBalancerClass }}
{{- end }}
{{- if or (eq .Values.serviceDns.type "NodePort") (eq .Values.serviceDns.type "LoadBalancer") }} {{- if or (eq .Values.serviceDns.type "NodePort") (eq .Values.serviceDns.type "LoadBalancer") }}
externalTrafficPolicy: {{ .Values.serviceDns.externalTrafficPolicy }} externalTrafficPolicy: {{ .Values.serviceDns.externalTrafficPolicy }}
{{- end }} {{- end }}

View File

@ -27,6 +27,9 @@ spec:
{{- if .Values.serviceDns.loadBalancerIP }} {{- if .Values.serviceDns.loadBalancerIP }}
loadBalancerIP: {{ .Values.serviceDns.loadBalancerIP }} loadBalancerIP: {{ .Values.serviceDns.loadBalancerIP }}
{{- end }} {{- end }}
{{- if and (eq .Values.serviceDns.type "LoadBalancer") .Values.serviceDns.loadBalancerClass }}
loadBalancerClass: {{ .Values.serviceDns.loadBalancerClass }}
{{- end }}
{{- if or (eq .Values.serviceDns.type "NodePort") (eq .Values.serviceDns.type "LoadBalancer") }} {{- if or (eq .Values.serviceDns.type "NodePort") (eq .Values.serviceDns.type "LoadBalancer") }}
externalTrafficPolicy: {{ .Values.serviceDns.externalTrafficPolicy }} externalTrafficPolicy: {{ .Values.serviceDns.externalTrafficPolicy }}
{{- end }} {{- end }}
@ -65,6 +68,9 @@ spec:
{{- if .Values.serviceDns.loadBalancerIPv6 }} {{- if .Values.serviceDns.loadBalancerIPv6 }}
loadBalancerIP: {{ .Values.serviceDns.loadBalancerIPv6 }} loadBalancerIP: {{ .Values.serviceDns.loadBalancerIPv6 }}
{{- end }} {{- end }}
{{- if and (eq .Values.serviceDns.type "LoadBalancer") .Values.serviceDns.loadBalancerClass }}
loadBalancerClass: {{ .Values.serviceDns.loadBalancerClass }}
{{- end }}
{{- if or (eq .Values.serviceDns.type "NodePort") (eq .Values.serviceDns.type "LoadBalancer") }} {{- if or (eq .Values.serviceDns.type "NodePort") (eq .Values.serviceDns.type "LoadBalancer") }}
externalTrafficPolicy: {{ .Values.serviceDns.externalTrafficPolicy }} externalTrafficPolicy: {{ .Values.serviceDns.externalTrafficPolicy }}
{{- end }} {{- end }}

View File

@ -21,6 +21,9 @@ spec:
{{- if .Values.serviceDns.loadBalancerIP }} {{- if .Values.serviceDns.loadBalancerIP }}
loadBalancerIP: {{ .Values.serviceDns.loadBalancerIP }} loadBalancerIP: {{ .Values.serviceDns.loadBalancerIP }}
{{- end }} {{- end }}
{{- if and (eq .Values.serviceDns.type "LoadBalancer") .Values.serviceDns.loadBalancerClass }}
loadBalancerClass: {{ .Values.serviceDns.loadBalancerClass }}
{{- end }}
{{- if or (eq .Values.serviceDns.type "NodePort") (eq .Values.serviceDns.type "LoadBalancer") }} {{- if or (eq .Values.serviceDns.type "NodePort") (eq .Values.serviceDns.type "LoadBalancer") }}
externalTrafficPolicy: {{ .Values.serviceDns.externalTrafficPolicy }} externalTrafficPolicy: {{ .Values.serviceDns.externalTrafficPolicy }}
{{- end }} {{- end }}
@ -72,6 +75,9 @@ spec:
{{- if .Values.serviceDns.loadBalancerIPv6 }} {{- if .Values.serviceDns.loadBalancerIPv6 }}
loadBalancerIP: {{ .Values.serviceDns.loadBalancerIPv6 }} loadBalancerIP: {{ .Values.serviceDns.loadBalancerIPv6 }}
{{- end }} {{- end }}
{{- if and (eq .Values.serviceDns.type "LoadBalancer") .Values.serviceDns.loadBalancerClass }}
loadBalancerClass: {{ .Values.serviceDns.loadBalancerClass }}
{{- end }}
{{- if or (eq .Values.serviceDns.type "NodePort") (eq .Values.serviceDns.type "LoadBalancer") }} {{- if or (eq .Values.serviceDns.type "NodePort") (eq .Values.serviceDns.type "LoadBalancer") }}
externalTrafficPolicy: {{ .Values.serviceDns.externalTrafficPolicy }} externalTrafficPolicy: {{ .Values.serviceDns.externalTrafficPolicy }}
{{- end }} {{- end }}

View File

@ -27,6 +27,9 @@ spec:
{{- if .Values.serviceWeb.loadBalancerIP }} {{- if .Values.serviceWeb.loadBalancerIP }}
loadBalancerIP: {{ .Values.serviceWeb.loadBalancerIP }} loadBalancerIP: {{ .Values.serviceWeb.loadBalancerIP }}
{{- end }} {{- end }}
{{- if and (eq .Values.serviceWeb.type "LoadBalancer") .Values.serviceWeb.loadBalancerClass }}
loadBalancerClass: {{ .Values.serviceWeb.loadBalancerClass }}
{{- end }}
{{- if or (eq .Values.serviceWeb.type "NodePort") (eq .Values.serviceWeb.type "LoadBalancer") }} {{- if or (eq .Values.serviceWeb.type "NodePort") (eq .Values.serviceWeb.type "LoadBalancer") }}
externalTrafficPolicy: {{ .Values.serviceWeb.externalTrafficPolicy }} externalTrafficPolicy: {{ .Values.serviceWeb.externalTrafficPolicy }}
{{- end }} {{- end }}
@ -81,6 +84,9 @@ spec:
{{- if .Values.serviceWeb.loadBalancerIPv6 }} {{- if .Values.serviceWeb.loadBalancerIPv6 }}
loadBalancerIP: {{ .Values.serviceWeb.loadBalancerIPv6 }} loadBalancerIP: {{ .Values.serviceWeb.loadBalancerIPv6 }}
{{- end }} {{- end }}
{{- if and (eq .Values.serviceWeb.type "LoadBalancer") .Values.serviceWeb.loadBalancerClass }}
loadBalancerClass: {{ .Values.serviceWeb.loadBalancerClass }}
{{- end }}
{{- if or (eq .Values.serviceWeb.type "NodePort") (eq .Values.serviceWeb.type "LoadBalancer") }} {{- if or (eq .Values.serviceWeb.type "NodePort") (eq .Values.serviceWeb.type "LoadBalancer") }}
externalTrafficPolicy: {{ .Values.serviceWeb.externalTrafficPolicy }} externalTrafficPolicy: {{ .Values.serviceWeb.externalTrafficPolicy }}
{{- end }} {{- end }}

View File

@ -35,7 +35,7 @@ dnsHostPort:
# -- Configuration for the DNS service on port 53 # -- Configuration for the DNS service on port 53
serviceDns: serviceDns:
# -- deploys a mixed (TCP + UDP) Service instead of separate ones # -- deploys a mixed (TCP + UDP) Service instead of separate ones
mixedService: true mixedService: false
# -- `spec.type` for the DNS Service # -- `spec.type` for the DNS Service
type: LoadBalancer type: LoadBalancer
@ -53,6 +53,8 @@ serviceDns:
loadBalancerIP: "192.168.0.234" loadBalancerIP: "192.168.0.234"
# -- A fixed `spec.loadBalancerIP` for the IPv6 DNS Service # -- A fixed `spec.loadBalancerIP` for the IPv6 DNS Service
loadBalancerIPv6: "" loadBalancerIPv6: ""
# -- `spec.loadBalancerClass` for the DNS Service. Only used if type is LoadBalancer.
loadBalancerClass: ""
# -- Annotations for the DNS service # -- Annotations for the DNS service
annotations: {} annotations: {}
@ -84,6 +86,8 @@ serviceDhcp:
loadBalancerIP: "" loadBalancerIP: ""
# -- A fixed `spec.loadBalancerIP` for the IPv6 DHCP Service # -- A fixed `spec.loadBalancerIP` for the IPv6 DHCP Service
loadBalancerIPv6: "" loadBalancerIPv6: ""
# -- `spec.loadBalancerClass` for the DHCP Service. Only used if type is LoadBalancer.
loadBalancerClass: ""
# -- Annotations for the DHCP service # -- Annotations for the DHCP service
annotations: {} annotations: {}
@ -127,6 +131,8 @@ serviceWeb:
loadBalancerIP: "192.168.0.239" loadBalancerIP: "192.168.0.239"
# -- A fixed `spec.loadBalancerIP` for the IPv6 web interface Service # -- A fixed `spec.loadBalancerIP` for the IPv6 web interface Service
loadBalancerIPv6: "" loadBalancerIPv6: ""
# -- `spec.loadBalancerClass` for the web interface Service. Only used if type is LoadBalancer.
loadBalancerClass: ""
# -- Annotations for the DHCP service # -- Annotations for the DHCP service
annotations: annotations:
@ -153,6 +159,7 @@ ingress:
# kubernetes.io/ingress.class: nginx # kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true" # kubernetes.io/tls-acme: "true"
path: / path: /
pathType: ImplementationSpecific
hosts: hosts:
# virtualHost (default value is pi.hole) will be appended to the hosts # virtualHost (default value is pi.hole) will be appended to the hosts
- chart-example.local - chart-example.local
@ -184,14 +191,19 @@ probes:
scheme: HTTP scheme: HTTP
readiness: readiness:
# -- Generate a readiness probe # -- Generate a readiness probe
# 'type' defaults to httpGet, can be set to 'command' to use a command type readiness probe.
type: httpGet
# command:
# - /bin/bash
# - -c
# - /bin/true
enabled: true enabled: true
# -- Initial delay to wait for readiness check # -- wait time before trying the readiness probe
initialDelaySeconds: 60 initialDelaySeconds: 60
# -- The failure threshold # -- threshold until the probe is considered failing
failureThreshold: 3 failureThreshold: 10
# -- The timeout in seconds # -- timeout in seconds
timeoutSeconds: 5 timeoutSeconds: 5
# -- The port
port: http port: http
scheme: HTTP scheme: HTTP
@ -256,7 +268,6 @@ topologySpreadConstraints: []
affinity: {} affinity: {}
# -- Administrator password when not using an existing secret (see below) # -- Administrator password when not using an existing secret (see below)
# -- Change the admin password prior to installing
adminPassword: "admin" adminPassword: "admin"
# -- Use an existing secret for the admin password. # -- Use an existing secret for the admin password.
@ -266,15 +277,21 @@ admin:
# -- Specify an existing secret to use as admin password # -- Specify an existing secret to use as admin password
existingSecret: "" existingSecret: ""
# -- Specify the key inside the secret to use # -- Specify the key inside the secret to use
passwordKey: "" passwordKey: "password"
# -- Specify [annotations](docs/Values.md#admin.annotations) to be added to the secret # -- Specify [annotations](docs/Values.md#admin.annotations) to be added to the secret
annotations: annotations:
# reflector.v1.k8s.emberstack.com/reflection-allowed: "true" # reflector.v1.k8s.emberstack.com/reflection-allowed: "true"
# reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces: "external-dns" # reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces: "external-dns"
# -- extraEnvironmentVars is a list of extra enviroment variables to set for pihole to use # -- extraEnvironmentVars is a list of extra enviroment variables to set for pihole to use. You can use either scalars or project cm, secrets or pod fields via valueFrom
extraEnvVars: {} extraEnvVars: {}
# TZ: UTC # TZ: UTC
# Project a variable
# SOME_VAR:
# valueFrom:
# configMapKeyRef:
# key: some-var
# name: my-config-map
# -- extraEnvVarsSecret is a list of secrets to load in as environment variables. # -- extraEnvVarsSecret is a list of secrets to load in as environment variables.
extraEnvVarsSecret: {} extraEnvVarsSecret: {}
@ -283,9 +300,9 @@ extraEnvVarsSecret: {}
# key: secret-key # key: secret-key
# -- default upstream DNS 1 server to use # -- default upstream DNS 1 server to use
DNS1: "8.8.8.8" DNS1: "1.1.1.1"
# -- default upstream DNS 2 server to use # -- default upstream DNS 2 server to use
DNS2: "8.8.4.4" DNS2: "8.8.8.8"
antiaff: antiaff:
# -- set to true to enable antiaffinity (example: 2 pihole DNS in the same cluster) # -- set to true to enable antiaffinity (example: 2 pihole DNS in the same cluster)
@ -311,7 +328,8 @@ doh:
# -- Here you can pass environment variables to the DoH container, for example: # -- Here you can pass environment variables to the DoH container, for example:
envVars: {} envVars: {}
# TUNNEL_DNS_UPSTREAM: "https://1.1.1.2/dns-query,https://1.0.0.2/dns-query" # TUNNEL_DNS_UPSTREAM: "https://1.1.1.2/dns-query,https://1.0.0.2/dns-query"
# -- Custom command to the DoH container
command: []
# -- Probes configuration # -- Probes configuration
probes: probes:
# -- Configure the healthcheck for the doh container # -- Configure the healthcheck for the doh container
@ -332,9 +350,31 @@ doh:
failureThreshold: 10 failureThreshold: 10
# -- defines the timeout in secondes for the liveness probe # -- defines the timeout in secondes for the liveness probe
timeoutSeconds: 5 timeoutSeconds: 5
readiness:
# -- set to true to enable readiness probe
enabled: true
# -- customize the readiness probe
probe:
exec:
command:
- nslookup
- -po=5053
- cloudflare.com
- "127.0.0.1"
# -- defines the initial delay for the readiness probe
initialDelaySeconds: 60
# -- defines the failure threshold for the readiness probe
failureThreshold: 10
# -- defines the timeout in secondes for the readiness probe
timeoutSeconds: 5
monitoring:
podMonitor:
enabled: false
# -- DNS MASQ settings # -- DNS MASQ settings
dnsmasq: dnsmasq:
# -- Load custom user configuration files from /etc/dnsmasq.d
enableCustomDnsMasq: true
# -- Add upstream dns servers. All lines will be added to the pihole dnsmasq configuration # -- Add upstream dns servers. All lines will be added to the pihole dnsmasq configuration
upstreamServers: [] upstreamServers: []
# - server=/foo.bar/192.168.178.10 # - server=/foo.bar/192.168.178.10
@ -347,16 +387,20 @@ dnsmasq:
# -- Dnsmasq reads the /etc/hosts file to resolve ips. You can add additional entries if you like # -- Dnsmasq reads the /etc/hosts file to resolve ips. You can add additional entries if you like
additionalHostsEntries: additionalHostsEntries:
- 192.168.0.117 baxter2 - 192.168.0.102 baxter
- 192.168.0.106 baxter - 192.168.0.104 docker0
- 192.168.0.109 docker0 omada - 192.168.0.101 node0
- 192.168.0.102 node1 - 192.168.0.103 node1
- 192.168.0.111 node2 - 192.168.0.105 node2
- 192.168.0.110 node3 - 192.168.0.106 node3
- 192.168.0.113 node4 - 192.168.0.107 node4
- 192.168.0.114 node5 - 192.168.0.108 node5
- 192.168.0.115 node6 - 192.168.0.109 rhel0
- 192.168.0.103 rhel0 - 192.168.0.110 omada
- 192.168.0.100 pve
# - 192.168.0.3 host4
# - 192.168.0.4 host5
# -- Static DHCP config # -- Static DHCP config
staticDhcpEntries: [] staticDhcpEntries: []
@ -403,11 +447,15 @@ regex: {}
# Add regular expression blacklist items # Add regular expression blacklist items
# - (^|\.)facebook\.com$ # - (^|\.)facebook\.com$
# -- values that should be added to pihole-FTL.conf # -- values that should be added to pihole-FTL.conf. You can use either scalars or project cm, secrets or pod fields via valueFrom
ftl: {} ftl: {}
# Add values for pihole-FTL.conf # Add values for pihole-FTL.conf
# MAXDBDAYS: 14 # MAXDBDAYS: 14
#StartLimitBurst: 25 # Project a variable
# LOCAL_IPV4:
# valueFrom:
# fieldRef:
# fieldPath: status.podIP
# -- port the container should use to expose HTTP traffic # -- port the container should use to expose HTTP traffic
webHttp: "80" webHttp: "80"
@ -497,6 +545,10 @@ extraObjects: []
# } # }
# } # }
# -- Additional annotations for the deployment
deploymentAnnotations: {}
# reloader.stakater.com/auto: "true"
# -- Additional annotations for pods # -- Additional annotations for pods
podAnnotations: {} podAnnotations: {}
# Example below allows Prometheus to scape on metric port (requires pihole-exporter sidecar enabled) # Example below allows Prometheus to scape on metric port (requires pihole-exporter sidecar enabled)
@ -532,7 +584,7 @@ monitoring:
image: image:
# -- the repository to use # -- the repository to use
repository: ekofr/pihole-exporter repository: ekofr/pihole-exporter
tag: v0.3.0 tag: v1.0.0
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
resources: resources:
limits: limits:

View File

@ -46,3 +46,12 @@
ansible.builtin.command: ansible.builtin.command:
cmd: terraform -help cmd: terraform -help
# - name: Install aws-cli (A terraform prerequisite)
#ansible.builtin.shell: |
#curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
#unzip awscliv2.zip
#./aws/install
#args:
#chdir: /tmp

View File

@ -1,6 +1,6 @@
--- ---
- name: adds the kubernetes repo and installs kubectl - name: adds the kubernetes repo and installs kubectl
hosts: localhost hosts: docker
become: true become: true
tasks: tasks:
########## KUBECTL INSTALL ########## ########## KUBECTL INSTALL ##########