pihole.yaml 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. # Notes:
  2. # To reset web password:
  3. # docker exec -it pihole_container_name pihole -a -p
  4. # Other utils:
  5. # docker exec pihole_container_name pihole updateGravity
  6. # docker exec pihole_container_name pihole -w spclient.wg.spotify.com
  7. # docker exec pihole_container_name pihole -w spclient.wg.spotify.com
  8. apiVersion: v1
  9. kind: Service
  10. metadata:
  11. name: pihole-tcp
  12. labels:
  13. run: pihole
  14. annotations:
  15. metallb.universe.tf/allow-shared-ip: "pihole"
  16. spec:
  17. ports:
  18. - name: dns
  19. protocol: TCP
  20. port: 53
  21. targetPort: 53
  22. - name: http
  23. protocol: TCP
  24. port: 80
  25. targetPort: 80
  26. selector:
  27. run: pihole
  28. type: LoadBalancer
  29. loadBalancerIP: 10.42.42.239
  30. externalTrafficPolicy: Local
  31. ---
  32. apiVersion: v1
  33. kind: Service
  34. metadata:
  35. name: pihole-udp
  36. labels:
  37. run: pihole
  38. annotations:
  39. metallb.universe.tf/allow-shared-ip: "pihole"
  40. spec:
  41. ports:
  42. - name: dns
  43. protocol: UDP
  44. port: 53
  45. targetPort: 53
  46. selector:
  47. run: pihole
  48. type: LoadBalancer
  49. loadBalancerIP: 10.42.42.239
  50. externalTrafficPolicy: Local
  51. ---
  52. apiVersion: v1
  53. kind: PersistentVolume
  54. metadata:
  55. name: pihole
  56. spec:
  57. capacity:
  58. storage: 5Mi
  59. volumeMode: Filesystem
  60. accessModes:
  61. - ReadWriteMany
  62. persistentVolumeReclaimPolicy: Retain # Keep 4eva
  63. storageClassName: default
  64. mountOptions:
  65. - hard
  66. - nfsvers=3
  67. nfs:
  68. path: /mnt/DroboFS/Shares/Kubernetes/volumes/static/pihole
  69. server: 10.42.42.10
  70. claimRef:
  71. name: pihole
  72. namespace: default
  73. ---
  74. apiVersion: v1
  75. kind: PersistentVolumeClaim
  76. metadata:
  77. name: pihole
  78. annotations:
  79. nfs.io/storage-path: "pihole"
  80. spec:
  81. storageClassName: default
  82. accessModes:
  83. - ReadWriteMany
  84. resources:
  85. requests:
  86. storage: 5Mi
  87. status: {}
  88. ---
  89. apiVersion: v1
  90. kind: PersistentVolume
  91. metadata:
  92. name: pihole-dnsmasq
  93. spec:
  94. capacity:
  95. storage: 5Mi
  96. volumeMode: Filesystem
  97. accessModes:
  98. - ReadWriteMany
  99. persistentVolumeReclaimPolicy: Retain # Keep 4eva
  100. storageClassName: default
  101. mountOptions:
  102. - hard
  103. - nfsvers=3
  104. nfs:
  105. path: /mnt/DroboFS/Shares/Kubernetes/volumes/static/pihole-dnsmasq
  106. server: 10.42.42.10
  107. claimRef:
  108. name: pihole-dnsmasq
  109. namespace: default
  110. ---
  111. apiVersion: v1
  112. kind: PersistentVolumeClaim
  113. metadata:
  114. name: pihole-dnsmasq
  115. annotations:
  116. nfs.io/storage-path: "pihole-dnsmasq"
  117. spec:
  118. storageClassName: default
  119. accessModes:
  120. - ReadWriteMany
  121. resources:
  122. requests:
  123. storage: 5Mi
  124. status: {}
  125. ---
  126. apiVersion: apps/v1
  127. kind: Deployment
  128. metadata:
  129. name: pihole
  130. spec:
  131. replicas: 1
  132. selector:
  133. matchLabels:
  134. run: pihole
  135. strategy:
  136. type: Recreate
  137. template:
  138. metadata:
  139. labels:
  140. run: pihole
  141. spec:
  142. terminationGracePeriodSeconds: 30
  143. containers:
  144. - image: pihole/pihole
  145. imagePullPolicy: "Always"
  146. name: pihole
  147. env:
  148. - name: TZ
  149. value: US/Michigan
  150. ports:
  151. - containerPort: 53
  152. protocol: UDP
  153. - containerPort: 53
  154. protocol: TCP
  155. - containerPort: 80
  156. protocol: TCP
  157. resources: {}
  158. volumeMounts:
  159. - mountPath: /etc/pihole/
  160. name: pihole
  161. - mountPath: /etc/dnsmasq.d/
  162. name: pihole-dnsmasq
  163. livenessProbe:
  164. exec:
  165. command:
  166. - host
  167. - google.com.
  168. - 127.0.0.1
  169. initialDelaySeconds: 300
  170. periodSeconds: 60
  171. restartPolicy: Always
  172. volumes:
  173. - name: pihole
  174. persistentVolumeClaim:
  175. claimName: pihole
  176. - name: pihole-dnsmasq
  177. persistentVolumeClaim:
  178. claimName: pihole-dnsmasq
  179. status: {}
  180. ---
  181. # Hosting
  182. apiVersion: networking.k8s.io/v1
  183. kind: Ingress
  184. metadata:
  185. name: pihole-management
  186. annotations:
  187. #nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
  188. #nginx.ingress.kubernetes.io/proxy-ssl-verify: "off"
  189. cert-manager.io/cluster-issuer: "letsencrypt-prod"
  190. spec:
  191. tls:
  192. - hosts:
  193. - pihole.monkeybox.org
  194. secretName: pihole-tls
  195. rules:
  196. - host: pihole.monkeybox.org
  197. http:
  198. paths:
  199. - path: /
  200. pathType: Prefix
  201. backend:
  202. service:
  203. name: pihole-tcp
  204. port:
  205. number: 80