使用 kubebuilder 自定义 CRD 资源和 Controller

本贴最后更新于 967 天前,其中的信息可能已经时移俗易

安装 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
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    31 引用 • 24 回帖 • 3 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    479 引用 • 1383 回帖 • 558 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...