webhook是一种回调机制,相关概念请另行了解或者学习
webhook的流程如下图所示:
下载kubernetes webhook example并编译
git clone https://github.com/slackhq/simple-kubernetes-webhook.git
cd simple-kubernetes-webhook
go build -o simple-kubernetes-webhook
打镜像
cd simple-kubernetes-webhook;make docker-build
生成证书
simple-kubernetes-webhook/dev
sh gen-certs.sh
修改manifests/cluster-config/mutating.config.yaml 和 manifests/cluster-config/validating.config.yaml
这两个文件中的证书,证书内容在执行sh gen-certs.sh
会在终端生成,替换掉就可以
部署mutating和validating配置
cd dev
kubectl apply -f manifests/cluster-config/mutating.config.yaml
kubectl apply -f manifests/cluster-config/validating.config.yaml
部署webhook服务
cd simple-kubernetes-webhook/dev/manifests/webhook
kubectl apply -f ./
部署完成后,正常的话 如下图
验证
cd simple-kubernetes-webhook/dev/manifests/pods;
kubectl apply -f bad-name.pod.yaml
webhook 容器日志如下图
kubectl logs -f simple-kubernetes-webhook-b74d95655-jhvqt
响应如下图
参考:
https://slack.engineering/simple-kubernetes-webhook/