apiVersion: apps/v1
kind: Deployment
metadata:
  name: wireguard-relay
  namespace: vpn
  labels:
    platform.edge.ncr.com/component: wireguard-relay
spec:
  replicas: 1
  selector:
    matchLabels:
      platform.edge.ncr.com/component: wireguard-relay
  template:
    metadata:
      labels:
        platform.edge.ncr.com/component: wireguard-relay
    spec:
      containers:
      - name: prometheus-exporter
        image: bzl://hack/deps:wireguardprometheus_container_push
        args:
        - -n/etc/wireguard/wg0.conf
        - -atrue # run wg with sudo
        - -vfalse # verbose
        - -dtrue # enable wireguard_latest_handshake_delay_seconds metric
        ports:
        - name: wg-metrics
          protocol: TCP
          containerPort: 9586
        resources:
          limits:
            cpu: "15m"
            memory: 100Mi
          requests:
            cpu: 5m
            memory: 50Mi
        volumeMounts:
        - name: wireguard-config
          mountPath: /etc/wireguard
        imagePullPolicy: IfNotPresent
        securityContext:
          capabilities:
            add:
            - NET_ADMIN
            - SETGID
            - SETUID
            drop:
            - all
          runAsUser: 1000 # run as prometheus-wireguard-exporter
      - name: wireguard
        image: bzl://cmd/sds/remoteaccess/wireguard:container_push
        command:
        - /bin/bash
        args:
        - -c
        - /entrypoint/wg-sync.sh
        ports:
        - protocol: TCP
          containerPort: 51820
        resources:
          limits:
            cpu: "15m"
            memory: 100Mi
          requests:
            cpu: 5m
            memory: 50Mi
        volumeMounts:
        - name: wireguard-config
          readOnly: true
          mountPath: /etc/wireguard/secret/
        imagePullPolicy: IfNotPresent
        securityContext:
          capabilities:
            add:
            - NET_ADMIN
            - NET_RAW
            - SYS_MODULE
            drop:
            - all
      volumes:
      - name: wireguard-config
        secret:
          optional: true
          secretName: wireguard-relay
      imagePullSecrets:
      - name: edge-docker-pull-secret