目录
前提环境
修改demo,实现自己想要的功能
1 修改代码文件中的ip地址
2 讲整个代码项目copy到k8s master节点
3 执行 make setup-kube-for-outcluster
配置webhook server端
kubectl调用尝试并解决bug
重新测试
创建无环境变量的pod,创建成功
前提环境当前k8s版本情况 kubectl version
检测apiserver是否开启相关支持
apiserver_pod_name=`kubectl get --no-headers=true po -n kube-system | grep kube-apiserver | awk '{ print }'` kubectl get po $apiserver_pod_name -n kube-system -o yaml | grep plugin - --enable-admission-plugins=NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook
如果没这几个plugins,则需要加入修改/etc/kubernetes/manifests/kube-apiserver.yaml,加入这几个参数 ,保存之后系统会重启api-server的pod
代码环境
直接git clone https://github.com/phosae/denyenv-validating-admission-webhook.git
修改demo,实现自己想要的功能原作者在文章中讲到,这个denyenv主要实现的功能是:拒绝创建含环境变量的 Pod
主要部署方式:集群内部署----打成一个pod;集群外部署-----在非集群内请求外部webhook的server
这里我选择setup-kube-for-outcluster,也就是集群外部署,既然部署webhook,证书之类的认证必不可少,这里有两种签名方式作者已经讲述过,一种为 Kubernetes CertificateSigningRequest 签发证书,另一种为cert-manager管理证书,运行make setup-kube-for-outcluster脚本里面调用的签名方式为 Kubernetes CertificateSigningRequest
主要几个地方
1 修改代码文件中的ip地址我物理机的ip为192.168.0.100,修改以下几处
2 讲整个代码项目copy到k8s master节点省略
3 执行 make setup-kube-for-outcluster注意,这里在遇到了报错,原因是在调用set-kube-ca-v1.20+.sh的时候,获取kube-root-ca.crt遇到了报错,所以脚本的patch部分也是错的,patch了个空值应该是,这里先继续,接下来会讲怎么跳出这个坑
配置webhook server端在物理机新建个文件夹
然后讲生成的证书文件拉到物理机
结合代码文件,配置物理机环境变量CERT_DIR,也就是证书目录,服务是htpps起来的
export CERT_DIR=
起webhook服务端
kubectl调用尝试并解决bug结合之前作者的文章,我们进行测试,发现遇到了证书问题,这也就上文最开始的地方 执行 make setup-kube-for-outcluster遇到的那个bug,注册webhook的时候少了caBundle值
caBundle的获取需要先获取之前脚本创建的secret
kubectl get secret denyenv-tls-secret
获取证书编码
kubectl get secret denyenv-tls-secret -o yaml
or
kubectl get secret denyenv-tls-secret -o jsonpath='{.data.tls.crt}'
删除原有的注册的ValidatingWebhookConfiguration
手工加上
重新注册一遍
注册成功
重新测试 创建有环境变量的pod,创建失败kubectl run nginx --image nginx --env='FOO=BAR'
同时看到了日志
创建无环境变量的pod,创建成功kubectl run nginx --image nginx
断点调试
参考:Kubernetes admission webhook server 开发教程 - ZengXu's BLOG
参考:https://github.com/phosae/denyenv-validating-admission-webhook
参考:k8s admission webhook初探_u012803274的博客-CSDN博客_k8s自定义webhook
参考:从0到1开发K8S_Webhook最佳实践 - 知乎
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)