_wgeasy.tpl 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. {{- define "wgeasy.workload" -}}
  2. workload:
  3. wgeasy:
  4. enabled: true
  5. primary: true
  6. type: Deployment
  7. podSpec:
  8. hostNetwork: {{ .Values.wgNetwork.hostNetwork }}
  9. containers:
  10. wgeasy:
  11. enabled: true
  12. primary: true
  13. imageSelector: image
  14. {{/* https://github.com/WeeJeWel/wg-easy/pull/394 */}}
  15. securityContext:
  16. runAsUser: 0
  17. runAsGroup: 0
  18. runAsNonRoot: false
  19. readOnlyRootFilesystem: false
  20. capabilities:
  21. add:
  22. - NET_ADMIN
  23. - NET_RAW
  24. - SYS_MODULE
  25. env:
  26. WG_PORT: {{ .Values.wgNetwork.udpPort }}
  27. WG_PATH: /etc/wireguard
  28. PORT: {{ .Values.wgNetwork.webPort }}
  29. WG_HOST: {{ .Values.wgConfig.host | quote }}
  30. PASSWORD: {{ .Values.wgConfig.password | quote }}
  31. WG_PERSISTENT_KEEPALIVE: {{ .Values.wgConfig.keepAlive }}
  32. WG_MTU: {{ .Values.wgConfig.clientMTU }}
  33. WG_DEFAULT_ADDRESS: {{ .Values.wgConfig.clientAddressRange }}
  34. WG_DEFAULT_DNS: {{ .Values.wgConfig.clientDNSServer }}
  35. WG_DEVICE: {{ .Values.wgConfig.deviceName | default "eth0" }}
  36. WG_ALLOWED_IPS: {{ join "," .Values.wgConfig.allowedIPs | default "0.0.0.0/0,::/0" | quote }}
  37. fixedEnv:
  38. PUID: 0
  39. {{ with .Values.wgConfig.additionalEnvs }}
  40. envList:
  41. {{ range $env := . }}
  42. - name: {{ $env.name }}
  43. value: {{ $env.value }}
  44. {{ end }}
  45. {{ end }}
  46. probes:
  47. liveness:
  48. enabled: true
  49. type: http
  50. port: {{ .Values.wgNetwork.webPort }}
  51. path: /
  52. readiness:
  53. enabled: true
  54. type: http
  55. port: {{ .Values.wgNetwork.webPort }}
  56. path: /
  57. startup:
  58. enabled: true
  59. type: http
  60. port: {{ .Values.wgNetwork.webPort }}
  61. path: /
  62. {{ $ip := .Values.wgConfig.clientAddressRange | replace "x" "0" }}
  63. lifecycle:
  64. preStop:
  65. type: exec
  66. command:
  67. - /bin/bash
  68. - -c
  69. - |
  70. echo "Deleting routes created by the app..."
  71. netmask=$(ip route | grep {{ $ip }})
  72. netmask=$(echo $netmask | grep -o -E '/.\d*')
  73. netmask=${netmask#/}
  74. echo "Matched routes to delete... {{ $ip }}/$netmask"
  75. # Don't try to delete routes if steps above didn't grep-ed anything
  76. if [ ! "$netmask" == "" ]; then
  77. ip route del {{ $ip }}/$netmask || echo "Route deletion failed..."
  78. fi
  79. echo "Routes deleted..."
  80. interface=$(ip a | grep wg0)
  81. if [ ! "$interface" == "" ]; then
  82. echo "Removing wg0 interface..."
  83. ip link delete wg0
  84. echo "Removed wg0 interface..."
  85. fi
  86. {{- end -}}