安装 kustomize
kustomize 在 1.14+ 的 kubectl 中被集成,但是 kubebuilder 生成的项目 Makefile 用的还是 kustomize 命令
下载二进制文件安装
https://github.com/kubernetes-sigs/kustomize/releases/tag/kustomize%2Fv3.3.0
mac 可以直接
brew install kustomize
二进制安装 kubebuilder
os=$(go env GOOS) arch=$(go env GOARCH) # download kubebuilder and extract it to tmp curl -sL https://go.kubebuilder.io/dl/2.0.1/${os}/${arch} | tar -xz -C /tmp/ # move to a long-term location and put it on your path # (you'll need to set the KUBEBUILDER_ASSETS env var if you put it somewhere else) sudo mv /tmp/kubebuilder_2.0.1_${os}_${arch} /usr/local/kubebuilder export PATH=$PATH:/usr/local/kubebuilder/bin
创建项目
mkdir $GOPATH/src/example cd $GOPATH/src/example kubebuilder init --domain my.com
创建 api
kubebuilder create api --group webapp --version v1 --kind Guestbook
安装 CRDs 到集群
make install
本地前台运行 controller
make run
部署自定义资源的实例
kubectl apply -f config/samples/
修改 Dockefile
cp -a ~/.kube kube
vi Dockerfile
FROM golang:1.12.5 as builder WORKDIR /example COPY go.mod go.mod COPY go.sum go.sum RUN rm -rf $GOPATH/go.mod && export GOPROXY=https://goproxy.cn && go mod download COPY main.go main.go COPY api/ api/ COPY controllers/ controllers/ RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go build -a -o manager main.go FROM gcr.azk8s.cn/distroless/static:nonroot WORKDIR / COPY kube /root/.kube COPY --from=builder /example/manager . #USER nonroot:nonroot ENTRYPOINT ["/manager"]
构建/推送镜像
make docker-build docker-push IMG=<some-registry>/<project-name>:tag
部署到集群
make deploy IMG=<some-registry>/<project-name>:tag
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于