mirror of
https://github.com/kubenetworks/kubevpn.git
synced 2025-12-24 11:51:13 +08:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
51515607dc | ||
|
|
a69ed17fe1 | ||
|
|
4f0da2803f | ||
|
|
cebd3f7623 | ||
|
|
a2f6c26101 | ||
|
|
a27f9d6779 | ||
|
|
cee42b2900 | ||
|
|
1c55e92e1a |
45
.github/workflows/release.yml
vendored
45
.github/workflows/release.yml
vendored
@@ -26,8 +26,8 @@ jobs:
|
||||
release_name: Release ${{ github.ref }}
|
||||
body: |
|
||||
Changes in this Release
|
||||
- First Change
|
||||
- Second Change
|
||||
- Fix known bugs
|
||||
- Optimize code
|
||||
draft: false
|
||||
prerelease: false
|
||||
|
||||
@@ -48,38 +48,15 @@ jobs:
|
||||
with:
|
||||
name: UPLOAD_URL
|
||||
path: UPLOAD_URL
|
||||
- name: Build kubevpn-linux
|
||||
run: make kubevpn-linux
|
||||
- name: Upload Release Asset
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: kubevpn-linux-amd64
|
||||
asset_name: kubevpn-linux-amd64
|
||||
asset_content_type: application/octet-stream
|
||||
|
||||
- name: Build kubevpn-macos
|
||||
run: make kubevpn-macos
|
||||
- name: Upload Release Asset
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: kubevpn-darwin-amd64
|
||||
asset_name: kubevpn-darwin-amd64
|
||||
asset_content_type: application/octet-stream
|
||||
- name: Push image to docker hub
|
||||
run: |
|
||||
echo ${{ secrets.DOCKER_PASSWORD }} | docker login -u ${{ secrets.DOCKER_USER }} --password-stdin
|
||||
make all-image
|
||||
|
||||
- name: Build kubevpn-windows
|
||||
run: make kubevpn-windows
|
||||
- name: Upload Release Asset
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Repository Dispatch
|
||||
uses: peter-evans/repository-dispatch@v1
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: kubevpn-windows-amd64.exe
|
||||
asset_name: kubevpn-windows-amd64.exe
|
||||
asset_content_type: application/octet-stream
|
||||
token: ${{ secrets.REPOSITORYDISPATCH }}
|
||||
event-type: release-event
|
||||
client-payload: '{"url": "${{ steps.create_release.outputs.upload_url }}", "tag": "${{ github.ref }}"}'
|
||||
|
||||
4
.github/workflows/test.yml
vendored
4
.github/workflows/test.yml
vendored
@@ -31,7 +31,7 @@ jobs:
|
||||
run: kubectl apply -f https://raw.githubusercontent.com/wencaiwulue/kubevpn/master/samples/bookinfo.yaml
|
||||
|
||||
- name: Build
|
||||
run: make kubevpn-linux
|
||||
run: make kubevpn-linux-amd64
|
||||
|
||||
- name: Wait for pods reviews to be ready
|
||||
run: |
|
||||
@@ -80,7 +80,7 @@ jobs:
|
||||
run: kubectl apply -f https://raw.githubusercontent.com/wencaiwulue/kubevpn/master/samples/bookinfo.yaml
|
||||
|
||||
- name: Build
|
||||
run: make kubevpn-macos
|
||||
run: make kubevpn-darwin-amd64
|
||||
|
||||
- name: Wait for pods reviews to be ready
|
||||
run: |
|
||||
|
||||
44
.github/workflows/upload_release.yml
vendored
Normal file
44
.github/workflows/upload_release.yml
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
name: Upload release
|
||||
|
||||
on:
|
||||
repository_dispatch:
|
||||
types: [ release-event ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Create Release
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
os-arch: [
|
||||
kubevpn-darwin-amd64,
|
||||
kubevpn-darwin-arm64,
|
||||
kubevpn-windows-amd64.exe,
|
||||
kubevpn-windows-arm64.exe,
|
||||
kubevpn-windows-386.exe,
|
||||
kubevpn-linux-amd64,
|
||||
kubevpn-linux-arm64,
|
||||
kubevpn-linux-386,
|
||||
]
|
||||
steps:
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v2
|
||||
with:
|
||||
go-version: 1.17
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Build kubevpn-all-arch
|
||||
run: |
|
||||
git tag ${{ github.event.client_payload.tag }} || true
|
||||
make all-kubevpn
|
||||
|
||||
- name: Upload Release Asset
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ github.event.client_payload.url }}
|
||||
asset_path: ${{ matrix.os-arch }}
|
||||
asset_name: ${{ matrix.os-arch }}
|
||||
asset_content_type: application/octet-stream
|
||||
86
Makefile
86
Makefile
@@ -9,50 +9,88 @@ GOARCH := $(shell go env GOHOSTARCH)
|
||||
TARGET := kubevpn-${GOOS}-${GOARCH}
|
||||
OS_ARCH := ${GOOS}/${GOARCH}
|
||||
|
||||
FOLDER := github.com/wencaiwulue/kubevpn/cmd/kubevpn
|
||||
CONTROL_PLANE_FOLDER := github.com/wencaiwulue/kubevpn/pkg/controlplane/cmd/server
|
||||
|
||||
# Setup the -ldflags option for go build here, interpolate the variable values
|
||||
LDFLAGS=--ldflags "-w -s \
|
||||
-X github.com/wencaiwulue/kubevpn/cmd/kubevpn/cmds.Version=${VERSION} \
|
||||
-X github.com/wencaiwulue/kubevpn/cmd/kubevpn/cmds.BuildTime=${BUILD_TIME} \
|
||||
-X github.com/wencaiwulue/kubevpn/cmd/kubevpn/cmds.GitCommit=${GIT_COMMIT} \
|
||||
-X github.com/wencaiwulue/kubevpn/cmd/kubevpn/cmds.Branch=${BRANCH} \
|
||||
-X github.com/wencaiwulue/kubevpn/cmd/kubevpn/cmds.OsArch=${OS_ARCH} \
|
||||
-X ${FOLDER}/cmds.Version=${VERSION} \
|
||||
-X ${FOLDER}/cmds.BuildTime=${BUILD_TIME} \
|
||||
-X ${FOLDER}/cmds.GitCommit=${GIT_COMMIT} \
|
||||
-X ${FOLDER}/cmds.Branch=${BRANCH} \
|
||||
-X ${FOLDER}/cmds.OsArch=${OS_ARCH} \
|
||||
"
|
||||
|
||||
.PHONY: kubevpn-macos
|
||||
kubevpn-macos:
|
||||
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build ${LDFLAGS} -o kubevpn-darwin-amd64 github.com/wencaiwulue/kubevpn/cmd/kubevpn
|
||||
.PHONY: all
|
||||
all: all-kubevpn all-image
|
||||
|
||||
.PHONY: all-kubevpn
|
||||
all-kubevpn: kubevpn-darwin-amd64 kubevpn-darwin-arm64 \
|
||||
kubevpn-windows-amd64 kubevpn-windows-386 kubevpn-windows-arm64 \
|
||||
kubevpn-linux-amd64 kubevpn-linux-386 kubevpn-linux-arm64
|
||||
|
||||
.PHONY: all-image
|
||||
all-image: image image-mesh image-control-plane
|
||||
|
||||
# ---------darwin-----------
|
||||
.PHONY: kubevpn-darwin-amd64
|
||||
kubevpn-darwin-amd64:
|
||||
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build ${LDFLAGS} -o kubevpn-darwin-amd64 ${FOLDER}
|
||||
chmod +x kubevpn-darwin-amd64
|
||||
cp kubevpn-darwin-amd64 /usr/local/bin/kubevpn
|
||||
.PHONY: kubevpn-darwin-arm64
|
||||
kubevpn-darwin-arm64:
|
||||
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build ${LDFLAGS} -o kubevpn-darwin-arm64 ${FOLDER}
|
||||
chmod +x kubevpn-darwin-arm64
|
||||
cp kubevpn-darwin-arm64 /usr/local/bin/kubevpn
|
||||
# ---------darwin-----------
|
||||
|
||||
.PHONY: kubevpn-windows
|
||||
kubevpn-windows:
|
||||
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build ${LDFLAGS} -o kubevpn-windows-amd64.exe github.com/wencaiwulue/kubevpn/cmd/kubevpn
|
||||
# ---------windows-----------
|
||||
.PHONY: kubevpn-windows-amd64
|
||||
kubevpn-windows-amd64:
|
||||
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build ${LDFLAGS} -o kubevpn-windows-amd64.exe ${FOLDER}
|
||||
.PHONY: kubevpn-windows-arm64
|
||||
kubevpn-windows-arm64:
|
||||
CGO_ENABLED=0 GOOS=windows GOARCH=arm64 go build ${LDFLAGS} -o kubevpn-windows-arm64.exe ${FOLDER}
|
||||
.PHONY: kubevpn-windows-386
|
||||
kubevpn-windows-386:
|
||||
CGO_ENABLED=0 GOOS=windows GOARCH=386 go build ${LDFLAGS} -o kubevpn-windows-386.exe ${FOLDER}
|
||||
# ---------windows-----------
|
||||
|
||||
.PHONY: kubevpn-linux
|
||||
kubevpn-linux:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ${LDFLAGS} -o kubevpn-linux-amd64 github.com/wencaiwulue/kubevpn/cmd/kubevpn
|
||||
# ---------linux-----------
|
||||
.PHONY: kubevpn-linux-amd64
|
||||
kubevpn-linux-amd64:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ${LDFLAGS} -o kubevpn-linux-amd64 ${FOLDER}
|
||||
chmod +x kubevpn-linux-amd64
|
||||
cp kubevpn-linux-amd64 /usr/local/bin/kubevpn
|
||||
|
||||
.PHONY: control-plane-linux
|
||||
control-plane-linux:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o envoy-xds-server github.com/wencaiwulue/kubevpn/pkg/controlplane/cmd/server
|
||||
chmod +x envoy-xds-server
|
||||
.PHONY: kubevpn-linux-arm64
|
||||
kubevpn-linux-arm64:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build ${LDFLAGS} -o kubevpn-linux-arm64 ${FOLDER}
|
||||
chmod +x kubevpn-linux-arm64
|
||||
cp kubevpn-linux-arm64 /usr/local/bin/kubevpn
|
||||
.PHONY: kubevpn-linux-386
|
||||
kubevpn-linux-386:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=386 go build ${LDFLAGS} -o kubevpn-linux-386 ${FOLDER}
|
||||
chmod +x kubevpn-linux-386
|
||||
cp kubevpn-linux-386 /usr/local/bin/kubevpn
|
||||
# ---------linux-----------
|
||||
|
||||
.PHONY: image
|
||||
image: kubevpn-linux
|
||||
image: kubevpn-linux-amd64
|
||||
mv kubevpn-linux-amd64 kubevpn
|
||||
docker build -t naison/kubevpn:v2 -f ./dockerfile/server/Dockerfile .
|
||||
rm -fr kubevpn
|
||||
docker push naison/kubevpn:v2
|
||||
|
||||
.PHONY: image_mesh
|
||||
image_mesh:
|
||||
.PHONY: image-mesh
|
||||
image-mesh:
|
||||
docker build -t naison/kubevpnmesh:v2 -f ./dockerfile/mesh/Dockerfile .
|
||||
docker push naison/kubevpnmesh:v2
|
||||
|
||||
.PHONY: image_control_plane
|
||||
image_control_plane: control-plane-linux
|
||||
.PHONY: image-control-plane
|
||||
image-control-plane:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o envoy-xds-server ${CONTROL_PLANE_FOLDER}
|
||||
chmod +x envoy-xds-server
|
||||
docker build -t naison/envoy-xds-server:latest -f ./dockerfile/controlplane/Dockerfile .
|
||||
rm -fr envoy-xds-server
|
||||
docker push naison/envoy-xds-server:latest
|
||||
|
||||
@@ -10,9 +10,9 @@ kubernetes cluster service can also access your local service
|
||||
```shell
|
||||
git clone https://github.com/wencaiwulue/kubevpn.git
|
||||
cd kubevpn
|
||||
make kubevpn-linux
|
||||
make kubevpn-macos
|
||||
make kubevpn-windows
|
||||
make kubevpn-linux-amd64
|
||||
make kubevpn-darwin-amd64
|
||||
make kubevpn-windows-amd64
|
||||
```
|
||||
|
||||
if you are using windows, you can build by this command:
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
```shell
|
||||
git clone https://github.com/wencaiwulue/kubevpn.git
|
||||
cd kubevpn
|
||||
make kubevpn-linux
|
||||
make kubevpn-macos
|
||||
make kubevpn-windows
|
||||
make kubevpn-linux-amd64
|
||||
make kubevpn-darwin-amd64
|
||||
make kubevpn-windows-amd64
|
||||
```
|
||||
|
||||
如果你在使用 Windows 系统,可以使用下面这条命令构建:
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
//go:build windows && x86
|
||||
// +build windows,x86
|
||||
//go:build windows && (x86 || 386)
|
||||
// +build windows
|
||||
// +build x86 386
|
||||
|
||||
package wintun
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//go:build !amd64 && !arm64
|
||||
// +build !amd64,!arm64
|
||||
//go:build !amd64 && !arm64 && !x86 && !386
|
||||
// +build !amd64,!arm64,!x86,!386
|
||||
|
||||
package pkg
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//go:build !windows || ignore || !darwin
|
||||
// +build !windows ignore !darwin
|
||||
//go:build !windows && !darwin
|
||||
// +build !windows,!darwin
|
||||
|
||||
package pkg
|
||||
|
||||
|
||||
@@ -8,10 +8,12 @@ import (
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/fields"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
"k8s.io/cli-runtime/pkg/genericclioptions"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
"k8s.io/client-go/rest"
|
||||
"k8s.io/client-go/tools/clientcmd"
|
||||
"k8s.io/client-go/util/retry"
|
||||
cmdutil "k8s.io/kubectl/pkg/cmd/util"
|
||||
"net"
|
||||
"net/http"
|
||||
@@ -33,6 +35,7 @@ var (
|
||||
)
|
||||
|
||||
func TestFunctions(t *testing.T) {
|
||||
kubevpnConnect()
|
||||
t.Cleanup(cancelFunc)
|
||||
t.Parallel()
|
||||
t.Run(runtime.FuncForPC(reflect.ValueOf(pingPodIP).Pointer()).Name(), pingPodIP)
|
||||
@@ -182,10 +185,14 @@ func dialUDP(t *testing.T) {
|
||||
if len(ip) == 0 {
|
||||
t.Errorf("can not found pods for service reviews")
|
||||
}
|
||||
time.Sleep(time.Second * 5)
|
||||
log.Infof("dail udp to ip: %s", ip)
|
||||
err = client(ip, port)
|
||||
if err != nil {
|
||||
log.Printf("dail udp to ip: %s", ip)
|
||||
if err = retry.OnError(
|
||||
wait.Backoff{Duration: time.Second, Factor: 2, Jitter: 0.2, Steps: 5},
|
||||
func(err error) bool {
|
||||
return err != nil
|
||||
}, func() error {
|
||||
return client(ip, port)
|
||||
}); err != nil {
|
||||
t.Errorf("can not access pod ip: %s, port: %v", ip, port)
|
||||
}
|
||||
}
|
||||
@@ -201,6 +208,11 @@ func client(ip string, port int) error {
|
||||
}
|
||||
defer udpConn.Close()
|
||||
|
||||
err = udpConn.SetDeadline(time.Now().Add(time.Second * 30))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 发送数据
|
||||
sendData := []byte("hello server!")
|
||||
_, err = udpConn.Write(sendData)
|
||||
@@ -251,8 +263,7 @@ func server(port int) {
|
||||
}
|
||||
}
|
||||
|
||||
func init() {
|
||||
initClient()
|
||||
func kubevpnConnect() {
|
||||
var ctx context.Context
|
||||
ctx, cancelFunc = context.WithCancel(context.TODO())
|
||||
childCtx, timeoutFunc := context.WithTimeout(ctx, time.Minute*10)
|
||||
@@ -268,7 +279,7 @@ func init() {
|
||||
<-childCtx.Done()
|
||||
}
|
||||
|
||||
func initClient() {
|
||||
func init() {
|
||||
var err error
|
||||
|
||||
configFlags := genericclioptions.NewConfigFlags(true)
|
||||
|
||||
Reference in New Issue
Block a user