Client-go是kubernetes官方开源的访问Api Server的客户端,通过Client-go我们可以对kubernetes的资源进行增删改查等操作。
Client-go的github地址:https://github.com/kubernetes/client-go/
下面我们就使用Client-go客户端创建Namespace、Deployment和Service。
构建容器镜像
编写Dockerfile文件:
Dockerfile.user
FROM golang:alpine AS builder
RUN go env -w GO111MODULE=on
RUN go env -w GOPROXY=https://goproxy.cn,direct
RUN mkdir /app
COPY . /app
WORKDIR /app
RUN CGO_ENABLED=0 GOOS=linux go build -o srv-user -a -tags netgo -ldflags '-s -w' ./srv-user
FROM busybox
LABEL justin justin@
COPY --from=builder /app/srv-user .
EXPOSE 8888
ENTRYPOINT ["/srv-user"]
Dockerfile.article
FROM golang:alpine AS builder
RUN go env -w GO111MODULE=on
RUN go env -w GOPROXY=https://goproxy.cn,direct
RUN mkdir /app
COPY . /app
WORKDIR /app
RUN CGO_ENABLED=0 GOOS=linux go build -o srv-article -a -tags netgo -ldflags '-s -w' ./srv-article
FROM busybox
LABEL justin justin@
COPY --from=builder /app/srv-article .
EXPOSE 8899
ENTRYPOINT ["/srv-article"]
执行docker build命令生成镜像
docker build -t srv-user -f deploy/docker/Dockerfile.user .
docker build -t srv-article -f deploy/docker/Dockerfile.article .
查看镜像
创建Namespace、Deployment、Service
k8sapi包结构:
添加client-go依赖包及kubernetes api依赖包
go get k8s.io/client-go@v0.21.0
go get k8s.io/api@v0.21.0
go get k8s.io/apimachinery@v0.21.0
读取kubeconfig配置文件
kube config配置文件一般位于~/.kube/config,包含使用的kubernetes context及访问Api Server的认证信息。如果需要访问远程kubernetes cluster,则将配置文件copy到本地。
var kubeconfig *string
if home := homedir.