diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 16d8cab8..c6c86aeb 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,9 +18,7 @@ jobs: check-latest: true - name: Push image to docker hub run: | - echo ${{ secrets.DOCKER_PASSWORD }} | docker login -u ${{ secrets.DOCKER_USER }} --password-stdin echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin - docker buildx create --use export VERSION=${{github.event.pull_request.head.sha}} if [[ -z "$VERSION" ]]; then export VERSION=${{ github.sha }} diff --git a/Makefile b/Makefile index 7cae656d..a90c3d97 100644 --- a/Makefile +++ b/Makefile @@ -96,7 +96,7 @@ container-local: kubevpn-linux-amd64 .PHONY: container-test container-test: kubevpn-linux-amd64 - docker buildx build --platform linux/amd64,linux/arm64 -t ${IMAGE} -t ${IMAGE_GH} -f $(BUILD_DIR)/test.Dockerfile --push . + docker build -t ${IMAGE_GH} -f $(BUILD_DIR)/test.Dockerfile --push . .PHONY: version version: diff --git a/build/Dockerfile b/build/Dockerfile index 34450490..7e27a96d 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -6,40 +6,29 @@ COPY . /go/src/$BASE WORKDIR /go/src/$BASE -RUN go env -w GO111MODULE=on && go env -w GOPROXY=https://goproxy.cn,direct RUN make kubevpn -RUN go install github.com/go-delve/delve/cmd/dlv@latest -FROM ubuntu:latest +FROM debian:bookworm-slim ARG BASE=github.com/wencaiwulue/kubevpn -RUN sed -i s@/security.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list \ - && sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list -RUN apt-get clean && apt-get update && apt-get install -y wget dnsutils vim curl \ - net-tools iptables iputils-ping lsof iproute2 tcpdump binutils traceroute conntrack socat iperf3 \ - apt-transport-https ca-certificates curl - -RUN if [ $(uname -m) = "x86_64" ]; then \ - echo "The architecture is AMD64"; \ - curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" && chmod +x kubectl && mv kubectl /usr/local/bin; \ - elif [ $(uname -m) = "aarch64" ]; then \ - echo "The architecture is ARM64"; \ - curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl" && chmod +x kubectl && mv kubectl /usr/local/bin; \ - else \ - echo "Unsupported architecture."; \ - fi - -ENV TZ=Asia/Shanghai \ - DEBIAN_FRONTEND=noninteractive -RUN apt update \ - && apt install -y tzdata \ - && ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime \ - && echo ${TZ} > /etc/timezone \ - && dpkg-reconfigure --frontend noninteractive tzdata \ +RUN apt-get update && apt-get install -y openssl iptables curl \ + && if [ $(uname -m) = "x86_64" ]; then \ + echo "The architecture is AMD64"; \ + curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"; \ + elif [ $(uname -m) = "aarch64" ]; then \ + echo "The architecture is ARM64"; \ + curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl"; \ + else \ + echo "Unsupported architecture."; \ + exit 1; \ + fi \ + && chmod +x kubectl && mv kubectl /usr/local/bin \ + && apt-get remove -y curl \ + && apt-get autoremove -y \ + && apt-get clean -y \ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY --from=builder /go/src/$BASE/bin/kubevpn /usr/local/bin/kubevpn -COPY --from=builder /go/bin/dlv /usr/local/bin/dlv COPY --from=envoy /usr/local/bin/envoy /usr/local/bin/envoy diff --git a/build/test.Dockerfile b/build/test.Dockerfile index c14cba83..7e27a96d 100644 --- a/build/test.Dockerfile +++ b/build/test.Dockerfile @@ -1,5 +1,34 @@ -FROM ghcr.io/kubenetworks/kubevpn:latest +FROM envoyproxy/envoy:v1.25.0 AS envoy +FROM golang:1.23 AS builder +ARG BASE=github.com/wencaiwulue/kubevpn + +COPY . /go/src/$BASE + +WORKDIR /go/src/$BASE + +RUN make kubevpn + +FROM debian:bookworm-slim +ARG BASE=github.com/wencaiwulue/kubevpn + +RUN apt-get update && apt-get install -y openssl iptables curl \ + && if [ $(uname -m) = "x86_64" ]; then \ + echo "The architecture is AMD64"; \ + curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"; \ + elif [ $(uname -m) = "aarch64" ]; then \ + echo "The architecture is ARM64"; \ + curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl"; \ + else \ + echo "Unsupported architecture."; \ + exit 1; \ + fi \ + && chmod +x kubectl && mv kubectl /usr/local/bin \ + && apt-get remove -y curl \ + && apt-get autoremove -y \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* WORKDIR /app -COPY bin/kubevpn /usr/local/bin/kubevpn \ No newline at end of file +COPY --from=builder /go/src/$BASE/bin/kubevpn /usr/local/bin/kubevpn +COPY --from=envoy /usr/local/bin/envoy /usr/local/bin/envoy diff --git a/pkg/handler/function_test.go b/pkg/handler/function_test.go index 48a7ed3d..b65c70a2 100644 --- a/pkg/handler/function_test.go +++ b/pkg/handler/function_test.go @@ -20,7 +20,6 @@ import ( "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" @@ -465,7 +464,6 @@ func Init() { var err error configFlags := genericclioptions.NewConfigFlags(true) - configFlags.KubeConfig = &clientcmd.RecommendedHomeFile f := cmdutil.NewFactory(cmdutil.NewMatchVersionFlags(configFlags)) if restconfig, err = f.ToRESTConfig(); err != nil {