cm-router.yaml 1.5 KB

123456789101112131415161718192021222324252627282930
  1. apiVersion: v1
  2. kind: ConfigMap
  3. metadata:
  4. name: {{ include "openvpn.fullname" . }}-routecheck
  5. data:
  6. route-check: |
  7. set -x
  8. while true
  9. do
  10. date
  11. _cdr=$(mask2cdr {{ .Values.mask }})
  12. ip link list {{ .Values.dev_name }} > /dev/null 2>&1
  13. if [ $? -ne 0 ]; then
  14. __server_pod_ip=$(kubectl get po -o json | jq -r '.items[] | select(.metadata.labels.component=="application" and .metadata.labels["app.kubernetes.io/instance"]=="{{ .Release.Name }}" and .metadata.labels["app.kubernetes.io/name"]=="{{ include "openvpn.name" . }}" and .metadata.deletionTimestamp==null and .status.phase=="Running").status.podIP')
  15. if [ -z "$__server_pod_ip"]; then
  16. ip route delete {{ .Values.net }}/$_cdr > /dev/null 2>&1
  17. continue
  18. fi
  19. __route_ip=$(ip route get {{ .Values.net }}/$_cdr | awk '{print $3}')
  20. if [[ $__server_pod_ip != $__route_ip ]]; then
  21. ip route delete {{ .Values.net }}/$_cdr > /dev/null 2>&1
  22. ip route add {{ .Values.net }}/$_cdr via $__server_pod_ip
  23. fi
  24. elif [ ! -z "$(ip route show to match {{ .Values.net }}/$_cdr | grep -E -v 'default|{{ .Values.dev_name }}')" ]; then
  25. ip route delete $(ip route show to match {{ .Values.net }}/$_cdr | grep -E -v 'default|{{ .Values.dev_name }}')
  26. fi
  27. sleep 60
  28. done
  29. route-delete: |
  30. ip route delete $(ip route show to match {{ .Values.net }}/$(mask2cdr {{ .Values.mask }}) | grep -E -v 'default|{{ .Values.dev_name }}')) > /dev/null 2>&1