_wgeasy.tpl 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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. PORT: {{ .Values.wgNetwork.webPort }}
  28. WG_HOST: {{ .Values.wgConfig.host | quote }}
  29. PASSWORD: {{ .Values.wgConfig.password | quote }}
  30. WG_PERSISTENT_KEEPALIVE: {{ .Values.wgConfig.keepAlive }}
  31. WG_MTU: {{ .Values.wgConfig.clientMTU }}
  32. WG_DEFAULT_ADDRESS: {{ .Values.wgConfig.clientAddressRange }}
  33. WG_DEFAULT_DNS: {{ .Values.wgConfig.clientDNSServer }}
  34. WG_ALLOWED_IPS: {{ join "," .Values.wgConfig.clientAllowedIPs | default "0.0.0.0/0,::/0" | quote }}
  35. fixedEnv:
  36. PUID: 0
  37. {{ with .Values.wgConfig.additionalEnvs }}
  38. envList:
  39. {{ range $env := . }}
  40. - name: {{ $env.name }}
  41. value: {{ $env.value }}
  42. {{ end }}
  43. {{ end }}
  44. probes:
  45. liveness:
  46. enabled: true
  47. type: http
  48. port: {{ .Values.wgNetwork.webPort }}
  49. path: /
  50. readiness:
  51. enabled: true
  52. type: http
  53. port: {{ .Values.wgNetwork.webPort }}
  54. path: /
  55. startup:
  56. enabled: true
  57. type: http
  58. port: {{ .Values.wgNetwork.webPort }}
  59. path: /
  60. {{ $ip := .Values.wgConfig.clientAddressRange | replace "x" "0" }}
  61. lifecycle:
  62. preStop:
  63. type: exec
  64. command:
  65. - /bin/bash
  66. - -c
  67. - |
  68. echo "Deleting routes created by the app..."
  69. netmask=$(ip route | grep {{ $ip }})
  70. netmask=$(echo $netmask | grep -o -E '/.\d*')
  71. netmask=${netmask#/}
  72. echo "Matched routes to delete... {{ $ip }}/$netmask"
  73. # Don't try to delete routes if steps above didn't grep-ed anything
  74. if [ ! "$netmask" == "" ]; then
  75. ip route del {{ $ip }}/$netmask || echo "Route deletion failed..."
  76. fi
  77. echo "Routes deleted..."
  78. interface=$(ip a | grep wg0)
  79. if [ ! "$interface" == "" ]; then
  80. echo "Removing wg0 interface..."
  81. ip link delete wg0
  82. echo "Removed wg0 interface..."
  83. fi
  84. {{- end -}}