首页 > 其他分享 >k8s operator添加webhook

k8s operator添加webhook

时间:2023-02-25 23:11:41浏览次数:42  
标签:25 Feb webhook ------ operator k8s root

k8s operator添加webhook

  Operator中的webhook,其作用与过滤器类似,外部对CRD资源的变更,在Controller处理之前都会交给webhook提前处理,kubernetes官方博客明确指出webhook可以做两件事:修改(mutating)和验证(validating)。

 

   kubebuilder为我们提供了生成webhook的基础文件和代码的工具,与制作API的工具类似,极大地简化了工作量,咱们只需聚焦业务实现即可;
  基于kubebuilder制作的webhook和controller,如果是同一个资源,那么它们在同一个进程中;

一、使用kubebuiler创建webhook

[root@k8s-node4 demo-operator]# kubebuilder create webhook --group apps --version v1beta1 --kind MyDaemonset --defaulting --programmatic-validation 
Writing kustomize manifests for you to edit...
Writing scaffold for you to edit...
api/v1beta1/mydaemonset_webhook.go
Update dependencies:
$ go mod tidy
Running make:
$ make generate
test -s /data/demo-operator/bin/controller-gen && /data/demo-operator/bin/controller-gen --version | grep -q v0.11.1 || \
GOBIN=/data/demo-operator/bin go install sigs.k8s.io/controller-tools/cmd/[email protected]
/data/demo-operator/bin/controller-gen object:headerFile="hack/boilerplate.go.txt" paths="./..."
Next: implement your new Webhook and generate the manifests with:
$ make manifests

[root@k8s-node4 demo-operator]# ll config/
total 32
drwx------ 2 root root 4096 Feb 25 22:26 certmanager    #新生成
drwx------ 4 root root 4096 Feb 25 20:47 crd
drwx------ 2 root root 4096 Feb 25 22:26 default
drwx------ 2 root root 4096 Feb 25 20:23 manager
drwx------ 2 root root 4096 Feb 25 20:23 prometheus
drwx------ 2 root root 4096 Feb 25 20:47 rbac
drwx------ 2 root root 4096 Feb 25 21:21 samples
drwx------ 2 root root 4096 Feb 25 22:26 webhook        #新生成

二、添加image字段校验逻辑

  修改api/v1beta1/mydaemonset_webhook.go文件,添加逻辑,若image字段为空,则报错

 

 三、配置webhook及certmanager

  修改config/default/kustomization.yaml,取消webhook和certmanager相关注释,启动webhook相关功能;

 

   打开vars下所有注释

 

 四、运行webhook

  webhook必须部署在k8s中,此时local run的方法已经不生效,此时我们需要构建镜像,将其部署在k8s中;

  kubebuilder提供了相关的指令make docker-build(将kubebuilder的controller编译成二进制文件,然后放到容器镜像中) 和make docker-push(将镜像推到dockerhub上)

标签:25,Feb,webhook,------,operator,k8s,root
From: https://www.cnblogs.com/wushaoyu/p/17155686.html

相关文章

  • k8s部署daemonset filebeat
    实现:收集容器控制台日志部署daemonsetfilebeat,如上图红框位置找一台机器打镜像FROMdocker.elastic.co/beats/filebeat:7.9.0COPYfilebeat.yml/usr/share/filebeat/fileb......
  • k8s-操作系统初始化
    本文章是 k8s二进制高可用集群部署 的分支。详细步骤请参考目录。1.关闭防火墙systemctlstopfirewalld#临时systemctldisablefirewalld#永久2.关闭SeL......
  • k8s operator开发与使用
    k8soperator开发与使用本篇文章用于记录k8soperator的开发,此处以一个简单的demo来记录operator的开发过程及相关要点;本文中使用kubebuilder工具来生成相关代码一、......
  • k8s workloads 练习
    练习主题练习deployment创建扩容所容练习pods自动扩所容和metric安装配置练习升级和回滚练习configmap创建和使用一命令创建创建depolymentnginx,副本为2kubectl......
  • K8S集群+负载均衡层+防火墙 实例
    实验拓扑图:实验要求:(1)Kubernetes区域可采用Kubeadm方式进行安装。(2)要求在Kubernetes环境中,通过yaml文件的方式,创建2个NginxPod分别放置在两个不同的节点上,Pod使用......
  • K8S污点容忍案例
    [root@lecode-pre74~]#setenforce0setenforce:SELinuxisdisabled[root@lecode-pre74~]#sed-i's/SELINUX=enforcing/SELINUX=disabled/'/etc/selinux/config[......
  • 收集日志方式1:k8s集群通过ELK收集容器控制台输出日志(logstash方式)
    集群架构:控制台日志,相当于容器的1号进程。或者容器内的日志正确和错误日志重定向到了如下/var/log/nginx/access.log->/dev/stdout /var/log/nginx/error.log->/dev/st......
  • 本地部署一套k8s集群
    我这里准备三台本地vmware虚拟机,版本号centos7.9,一台master节点,一台node1,一台node2kubeadm方式部署。Kubeadm是一个K8s部署工具,提供kubeadminit和kubeadmjoin,用于......
  • k8s的滚动更新
    一、什么是滚动更新当某个服务需要升级时,传统的做法是,先将要更新的服务下线,业务停止后再更新版本和配置,然后重新启动服务。如果业务集群规模较大时,这个工作就变成了一个......
  • k8s-部署Nginx+Keepalived高可用负载均衡器
    本文章是 k8s二进制高可用集群部署 的分支。详细步骤请参考目录。Kubernetes集群高可用性包含以下两个层面的考虑:Etcd数据库的高可用性KubernetesMaster组件......