一个Kubebuilder的简单demo
安装kubebuilder
安装文档: https://book.kubebuilder.io/quick-start.html
快捷命令:
1# download kubebuilder and install locally.
2curl -L -o kubebuilder https://go.kubebuilder.io/dl/latest/$(go env GOOS)/$(go env GOARCH)
3chmod +x kubebuilder && mv kubebuilder /usr/local/bin/
4# 查看是否安装成功
5kubebuilder version
自动补全
在 ~/.bash_profile
或 ~/.bashrc
下增加以下内容
1# kubebuilder autocompletion
2echo 'source <(kubebuilder completion bash)' >>~/.bash_profile
3source ~/.bash_profile
4kubebuilder completion bash >/opt/homebrew/etc/bash_completion.d/kubebuilder
5
6# 增加kb简写自动补全
7vim ~/.bash_profile
8alias kb=kubebuilder
9complete -o default -F __start_kubebuilder kb
10source ~/.bash_profile
重启命令行即可生效
快速体验
1# 初始化项目
2kubebuilder init --domain github.com --repo github.com/kubebuilder-demo/simple
3
4# 创建api
5kubebuilder create api --group kubebuilder-demo --version v1 --kind Simple
6# 生成crd
7make manifests
8# 安装crd到k8s集群,这里用于kustomize,如果没有会自动下载到./bin/,这里下载kustomize可能被qiang自己想办法
9make install
10# 查看crd是否安装成功:simples.kubebuilder-demo.github.com
11kubectl get crd
12
13# 启动controller
14make run
15
16# 部署cr
17kubectl apply -f config/samples/kubebuilder-demo_v1_simple.yaml
18# 查看simple的cr是否部署成功
19kubectl get simple
20
21# 打包docker镜像
22# 这里发现 Dockerfile 里的 gcr.io/distroless/static:nonroot 镜像被qiang了,改为:devk8s/gcr-io_distroless_static:nonroot
23# Dockerfile golang builder 时要加 ENV GOPROXY="https://goproxy.cn,direct"
24# 用docker-build时,k8s机器上报standard_init_linux.go:228: exec user process caused: exec format error,平台不兼容导致所以用docker-buildx
25make docker-buildx IMG=kubebuilderdemo/simple:0.0.1
26
27# 部署到k8s集群
28# config/default/manager_auth_proxy_patch.yaml下的
29# gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1 改为 devk8s/gcr-io_kubebuilder_kube-rbac-proxy:v0.13.1
30make deploy IMG=kubebuilderdemo/simple:0.0.1
31# 查看资源是否就绪
32kubectl -nsimple-system get svc
33kubectl -nsimple-system get deploy
34kubectl -nsimple-system get pod
35
36# pod启动不了的几个调试命令
37 kubectl -nsimple-system describe pod pod名称
38 kubectl -nsimple-system logs pod名称 --all-containers
39 kubectl -nsimple-system logs pod名称 -c 容器名称
40 kubectl -nsimple-system get event
41 kubectl -nsimple-system get events --field-selector involvedObject.name=pod名称
42
43# 卸载crd
44make uninstall
45# 反部署
46make undeploy
注意点
- go和docker镜像有些可能被qiang这块要处理
- Dockerfile golang builder 时要加 ENV GOPROXY=“https://goproxy.cn,direct”
- Dockerfile 里的 gcr.io/distroless/static:nonroot 镜像被qiang了,改为:devk8s/gcr-io_distroless_static:nonroot
- config/default/manager_auth_proxy_patch.yaml下的 gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1 改为 devk8s/gcr-io_kubebuilder_kube-rbac-proxy:v0.13.1
- 如果在苹果芯片上build用make docker-buildx(多平台build)参考:Docker使用Buildx构建多平台镜像
项目地址
https://github.com/kubebuilder-demo/simple
发布日期:2023-06-06 20:03 字数:234 用时
tags:K8s Kubebuilder
相关文章
标签云
alpine(1) api网关(1) async(1) await(1) centos(4) cli(1) client-go(1) debug(1) docker(10) docker-compose(1) dockerfile(1) embed(1) es6(1) etcd(1) etcdctl(1) freemesh(2) git(6) go(5) go-zeus(5) goland(2) golang(7) grafana(2) grpc(5) grpcurl(1) homebrew(1) homedir(1) http(2) hugo(1) java(2) javascript(3) job(1) js(1) json(1) k8s(16) k8s部署指南(1) kubebuilder(1) kubectl(4) kubernetes(1) linux(2) localecompare(1) lombok(1) metrics(2) mock(1) mysql(1) npm(1) nsenter(1) nvm(1) pnpm(2) pprof(1) prettier(1) prometheus(2) protobuf3(1) protoc(1) qiankun(1) request(1) scss(1) servicemesh(1) spring(1) springcloud->freemesh(1) ssh(2) systemctl(1) tcpdump(1) typescript(2) vite(2) vscode(2) vue(8) vue-admin(2) vue3(1) webssh(1) xtermjs(1) xxl-job(1) yarn(1) zookeeper(1) 云原生(4) 云原生框架(1) 介绍(1) 单体架构->freemesh(1) 单元化(1) 博客(1) 压缩(1) 可观测(1) 后台管理系统(1) 命名规范(1) 多云多活(1) 如水网(1) 安全(1) 安装(1) 容器(2) 开发联调神器(1) 微前端(1) 微服务(2) 微服务架构->freemesh(1) 微服务框架(1) 快速开始(1) 控制面(1) 数据面(1) 文集(2) 服务发现(1) 服务网格(1) 流量泳道(1) 流量管理(1) 监控告警(1) 端口映射(1) 证书(1) 负载均衡(1) 配置(1)