TL;DR

  • NS 생성 (선택)
kubectl create ns system-wg
  • Helm values:
wg.yaml
environmentVariables:
  WG_HOST: {{ WireGuard 엔드포인트 }}
  PASSWORD: {{ WireGuard UI 비밀번호 }}
  WG_DEFAULT_ADDRESS: 10.1.0.x
  WG_ALLOWED_IPS: 10.0.0.0/16
  UI_CHART_TYPE: 1
  UI_TRAFFIC_STATS: true
 
service:
  type: NodePort
 
ingress:
  enabled: true
  className: "nginx"
  hosts:
    - host: {{ WireGuard 엔드포인트 }}
      paths:
        - path: /
          pathType: ImplementationSpecific
  • 여기서 externalTrafficPolicy: "Local" 은 성능을 위한 것이다.
  • Helm repo add:
helm repo add wg-easy https://raw.githubusercontent.com/haeramkeem/wg-easy-helm/main/helm/charts
helm repo update
  • Helm install:
helm -n system-wg upgrade --install wg-easy wg-easy/wg-easy -f wg.yaml

삽질기

  • 원래는 이 차트 를 사용하려 했는데, NodePort 지원이 구려서 여기서 좀 바꿔서 사용했다.
    • 바꾼 차트
    • 변경1) NodePort 옵션 추가
    • 변경2) ContainerPort, ServicePort, NodePort 설정 가능하게 함
    • 변경3) Helm chart 의 app version 업그레이드, ingress host 로 env 설정되게 함, values typo 수정
  • 원래는 NodePort 로 31820 port 를 열고, HAProxy 로 원래의 WireGuard port 인 51820 으로 되돌려주려 했으나, HAProxy 에서 UDP 를 지원하지 않아 (참고) 어쩔 수 없이 31820 을 사용함.
    • 근데 WG-Easy 에서는 51820 으로 인지하고 있기 때문에, tunnel config 을 생성할 때 51820 으로 생성해 준다.
    • 이것을 해결하기 위해 environment variable 과 ContainerPort 를 31820 으로 바꿔서 사용하려 했으나 잘 안됐었다.
    • 근데 이건 chart 의 WG-Easy 버전이 너무 낮아서였음; 변경3 에서 고쳤다.