From e5ca94354263f84e3d525eea2bb42102b6003214 Mon Sep 17 00:00:00 2001 From: afeiszli Date: Thu, 14 Oct 2021 22:03:05 -0400 Subject: [PATCH] userspace logic --- docker/Dockerfile-userspace | 12 +++++++++- docker/Dockerfile-wg-quick | 23 ------------------- .../templates/netmaker-statefulset.yaml | 8 +++++-- kube/helm/netmaker/templates/services.yaml | 4 ++-- logic/wireguard.go | 2 +- scripts/userspace-entrypoint.sh | 6 +++++ 6 files changed, 26 insertions(+), 29 deletions(-) delete mode 100644 docker/Dockerfile-wg-quick create mode 100644 scripts/userspace-entrypoint.sh diff --git a/docker/Dockerfile-userspace b/docker/Dockerfile-userspace index 578f78ba..9307caba 100644 --- a/docker/Dockerfile-userspace +++ b/docker/Dockerfile-userspace @@ -10,7 +10,17 @@ RUN git clone https://git.zx2c4.com/wireguard-go && \ make && \ make install +ENV WITH_WGQUICK=yes +RUN git clone https://git.zx2c4.com/wireguard-tools && \ + cd wireguard-tools && \ + cd src && \ + make && \ + make install + FROM gravitl/netmaker:${NM_VERSION} -RUN apk add --no-cache --update libmnl iptables openresolv iproute2 +RUN apk add --no-cache --update bash libmnl iptables openresolv iproute2 COPY --from=builder /usr/bin/wireguard-go /usr/bin/wg* /usr/bin/ +COPY scripts/userspace-entrypoint.sh ./entrypoint.sh + +ENTRYPOINT ["/bin/sh", "./entrypoint.sh"] diff --git a/docker/Dockerfile-wg-quick b/docker/Dockerfile-wg-quick deleted file mode 100644 index 07871ea8..00000000 --- a/docker/Dockerfile-wg-quick +++ /dev/null @@ -1,23 +0,0 @@ -ARG NM_VERSION= - -FROM gravitl/builder as builder - -RUN apk add --update git build-base libmnl-dev iptables - -WORKDIR /root/ -RUN git clone https://git.zx2c4.com/wireguard-go && \ - cd wireguard-go && \ - make && \ - make install - -ENV WITH_WGQUICK=yes -RUN git clone https://git.zx2c4.com/wireguard-tools && \ - cd wireguard-tools && \ - cd src && \ - make && \ - make install - -FROM gravitl/netmaker:${NM_VERSION} - -RUN apk add --no-cache --update bash libmnl iptables openresolv iproute2 -COPY --from=builder /usr/bin/wireguard-go /usr/bin/wg* /usr/bin/ diff --git a/kube/helm/netmaker/templates/netmaker-statefulset.yaml b/kube/helm/netmaker/templates/netmaker-statefulset.yaml index e5efdba5..64c3a1c2 100644 --- a/kube/helm/netmaker/templates/netmaker-statefulset.yaml +++ b/kube/helm/netmaker/templates/netmaker-statefulset.yaml @@ -77,7 +77,7 @@ spec: apiVersion: v1 fieldPath: metadata.name - name: SQL_HOST - value: '{{ .Release.Name }}-postgresql-ha-postgresql.{{ .Release.Namespace }}.svc.cluster.local' + value: '{{ .Release.Name }}-postgresql-ha-pgpool.{{ .Release.Namespace }}.svc.cluster.local' - name: SQL_PORT value: "5432" - name: SQL_DB @@ -88,7 +88,11 @@ spec: value: {{ index .Values "postgresql-ha" "postgresql" "password" }} - name: DATABASE value: postgres - image: gravitl/netmaker:userspace5 + {{- if or (not .Values.wireguard.enabled) (.Values.wireguard.kernel) }} + image: gravitl/netmaker:v0.8.4 + {{- else }} + image: gravitl/netmaker:v0.8.4-userspace + {{- end }} imagePullPolicy: Always name: {{ include "netmaker.fullname" . }} ports: diff --git a/kube/helm/netmaker/templates/services.yaml b/kube/helm/netmaker/templates/services.yaml index 6d5dbfe1..1be803d7 100644 --- a/kube/helm/netmaker/templates/services.yaml +++ b/kube/helm/netmaker/templates/services.yaml @@ -27,7 +27,7 @@ spec: protocol: TCP targetPort: {{ .Values.service.restPort }} selector: - {{- include "netmaker.selectorLabels" . | nindent 4 }} + app: '{{ include "netmaker.fullname" . }}' sessionAffinity: None type: {{ .Values.service.type }} --- @@ -44,6 +44,6 @@ spec: protocol: TCP targetPort: {{ .Values.service.grpcPort }} selector: - {{- include "netmaker.selectorLabels" . | nindent 4 }} + app: '{{ include "netmaker.fullname" . }}' sessionAffinity: None type: {{ .Values.service.type }} \ No newline at end of file diff --git a/logic/wireguard.go b/logic/wireguard.go index 03c55105..576529ef 100644 --- a/logic/wireguard.go +++ b/logic/wireguard.go @@ -108,7 +108,7 @@ func initWireguard(node *models.Node, privkey string, peers []wgtypes.PeerConfig if !ncutils.IsKernel() { var newConf string - if node.UDPHolePunch != "yes" { + if node.UDPHolePunch != "yes" || node.IsServer == "yes" { newConf, _ = ncutils.CreateUserSpaceConf(node.Address, key.String(), strconv.FormatInt(int64(node.ListenPort), 10), node.MTU, node.PersistentKeepalive, peers) } else { newConf, _ = ncutils.CreateUserSpaceConf(node.Address, key.String(), "", node.MTU, node.PersistentKeepalive, peers) diff --git a/scripts/userspace-entrypoint.sh b/scripts/userspace-entrypoint.sh new file mode 100644 index 00000000..1cfe316f --- /dev/null +++ b/scripts/userspace-entrypoint.sh @@ -0,0 +1,6 @@ +# If running userspace wireguard in Docker, create missing tun device. +if [ ! -d /dev/net ]; then mkdir /dev/net; fi +if [ ! -e /dev/net/tun ]; then mknod /dev/net/tun c 10 200; fi + +# Wait and then run netmaker. +/bin/sh -c "sleep 3; ./netmaker" \ No newline at end of file