pihole.yaml 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: pihole
  5. labels:
  6. app: pihole
  7. spec:
  8. selector:
  9. matchLabels:
  10. octopusexport: OctopusExport
  11. revisionHistoryLimit: 10
  12. replicas: 1
  13. strategy:
  14. type: RollingUpdate
  15. template:
  16. metadata:
  17. labels:
  18. app: pihole
  19. octopusexport: OctopusExport
  20. spec:
  21. dnsPolicy: ClusterFirstWithHostNet
  22. dnsConfig:
  23. nameservers:
  24. - 192.168.1.9
  25. - 8.8.8.8
  26. searches:
  27. - dezendorf.net
  28. - dezendorf.com
  29. volumes:
  30. - name: piholeetc
  31. persistentVolumeClaim:
  32. claimName: piholeetc
  33. - name: piholednsmasq
  34. persistentVolumeClaim:
  35. claimName: piholednsmasq
  36. containers:
  37. - name: pihole
  38. image: 'pihole/pihole:latest'
  39. ports:
  40. - name: dns-udp
  41. containerPort: 53
  42. protocol: UDP
  43. - name: dns-tcp
  44. containerPort: 53
  45. protocol: TCP
  46. - name: web
  47. containerPort: 80
  48. protocol: TCP
  49. volumeMounts:
  50. - name: piholeetc
  51. mountPath: /etc/pihole
  52. subPath: ''
  53. - name: piholednsmasq
  54. mountPath: /etc/dnsmasq.d
  55. subPath: ''
  56. affinity:
  57. podAntiAffinity:
  58. preferredDuringSchedulingIgnoredDuringExecution:
  59. - weight: 100
  60. podAffinityTerm:
  61. labelSelector:
  62. matchExpressions:
  63. - key: app
  64. operator: In
  65. values:
  66. - web
  67. topologyKey: kubernetes.io/hostname
  68. ---
  69. apiVersion: v1
  70. kind: PersistentVolumeClaim
  71. metadata:
  72. name: piholednsmasq
  73. namespace: default
  74. spec:
  75. accessModes:
  76. - ReadWriteOnce
  77. resources:
  78. requests:
  79. storage: 500M
  80. storageClassName: longhorn
  81. ---
  82. apiVersion: v1
  83. kind: PersistentVolumeClaim
  84. metadata:
  85. name: piholeetc
  86. namespace: default
  87. spec:
  88. accessModes:
  89. - ReadWriteOnce
  90. resources:
  91. requests:
  92. storage: 500M
  93. storageClassName: longhorn
  94. ---
  95. apiVersion: traefik.containo.us/v1alpha1
  96. kind: IngressRoute
  97. metadata:
  98. name: pihole-websecure-route
  99. namespace: default
  100. spec:
  101. entryPoints:
  102. - websecure
  103. routes:
  104. - match: Host(`pihole.dezendorf.net`)
  105. kind: Rule
  106. services:
  107. - name: pihole-web-svc
  108. port: 80
  109. tls:
  110. certResolver: myresolver
  111. ---
  112. apiVersion: v1
  113. kind: Service
  114. metadata:
  115. name: pihole-web-svc
  116. spec:
  117. type: ClusterIP
  118. ports:
  119. - name: websecure
  120. port: 80
  121. targetPort: 80
  122. selector:
  123. app: pihole
  124. ---
  125. apiVersion: v1
  126. kind: Service
  127. metadata:
  128. name: pihole-dns-tcp-svc
  129. spec:
  130. type: ClusterIP
  131. selector:
  132. app: pihole
  133. ports:
  134. - name: dns-tcp
  135. port: 53
  136. targetPort: 53
  137. protocol: TCP
  138. ---
  139. apiVersion: v1
  140. kind: Service
  141. metadata:
  142. name: pihole-dns-udp-svc
  143. spec:
  144. type: ClusterIP
  145. selector:
  146. app: pihole
  147. ports:
  148. - name: dns-udp
  149. port: 53
  150. targetPort: 53
  151. protocol: UDP
  152. ---
  153. apiVersion: traefik.containo.us/v1alpha1
  154. kind: IngressRoute
  155. metadata:
  156. name: pihole-web-route
  157. namespace: default
  158. spec:
  159. entryPoints:
  160. - web
  161. routes:
  162. - match: Host(`pihole.dezendorf.net`)
  163. kind: Rule
  164. middlewares:
  165. - name: redirecthttps
  166. services:
  167. - name: pihole-web-svc
  168. port: 80
  169. ---
  170. apiVersion: traefik.containo.us/v1alpha1
  171. kind: IngressRouteTCP
  172. metadata:
  173. name: pihole-tcp-route
  174. spec:
  175. entryPoints:
  176. - dns-tcp
  177. routes:
  178. - match: HostSNI(`*`)
  179. priority: 10
  180. services:
  181. - name: pihole-dns-tcp-svc
  182. port: 53
  183. ---
  184. apiVersion: traefik.containo.us/v1alpha1
  185. kind: IngressRouteUDP
  186. metadata:
  187. name: pihole-udp-route
  188. spec:
  189. entryPoints:
  190. - dns-udp
  191. routes:
  192. - services:
  193. - name: pihole-dns-udp-svc
  194. port: 53