sigs.k8s.io controller-runtime总览

controller-runtime总览可参考

  • examples 官方给出的例子
  • hack 官方给出的可执行文件,代码检查,ci等
  • pkg controller-runtime 的具体代码实现

examples

builtins

本示例为已存在的ReplicaSet资源实现自定义控制器和webhooks

  • main.go 例子的入口函数

    1. 创建一个manager(pkg/manager)
      在这里插入图片描述

    2. 通过上面创建的manager创建controller来监视ReplicaSets和Pods,并reconciles对应的kind
      在这里插入图片描述

    3. 注册变更和验证控制器
      在这里插入图片描述

    4. 启动manager
      在这里插入图片描述

  • controller.go 基于pkg/reconcile实现的controller-reconcile,注册到controller中

  • mutatingwebhook.go 准入控制器一种(变更钩子),基于pkg/webhook实现,为每个传入的pod添加特定注释

  • validatingwebhook.go 准入控制器的一种(验证钩子),基于pkg/webhook实现,验证是否存在特定注释

crd

实现了一个自定义的Kubernetes资源ChaosPod,并创建了一个监视它的自定义控制器以及变异和验证的Webhooks

  • pkg
    • resource.go: 定义ChaosPod API的schem,并实现验证和突变webhooks
    • groupversion_info.go: 定义ChaosPod API的GVK
    • zz_generated.deepcopy.go: 由kubebuilder生成的深度复制功能
  • main.go 类似上面基于已有类型的main.go
    1. 创建一个manager(pkg/manager)
    2. 注册ChaosPod到mgr的schema
    3. 实现reconcile以执行ChaosPod API的所需操作
    4. 通过上面创建的manager创建controller来监视ChaosPod,并reconciles对应的kind
    5. 注册ChaosPod webhooks到mgr
    6. 启动manager

pkg

  • builder builder包提供包装其他controller-runtime库,暴漏简单模式用于构建通用Controllers。
  • cache cache包提供对象缓存,充当client的Reader实例并帮助驱动基于Kubernetes对象的事件处理程序。
  • client client包用于与Kubernetes API服务器进行交互的功能
  • controller controller包用于构建自定以的controller
  • conversion 为API类型转换提供实现的接口定义 (基准类型v1 其他版本v2 v2–v1)
  • envtest 用于集成测试crd
  • event 包事件包含由source.Sources生成并由handler.EventHandler转换为reconcile.Requests的Event类型的定义。
    一般不需要自己程序处理,而是再调用Controller.Watch的时候自动处理了。
  • handler EventHandlers.Requests响应从Watching Kubernetes API中观察到的Create,Update,Deletion事件来enqueue reconcile.Requests
  • healthz 和apiserver的健康检查类似,但是做了一些调整,使其符合controller-runtime的风格
  • leaderelection 用于领导者选举资源锁的构造函数。可以使用一个controller manager来运行controllers。
  • log 提供日志
  • manager 创建controller所必须的,包括client cache scheme等
  • metrics 暴漏普罗米修斯的采集指标
  • predicate 使用在controller.watch,用于过滤事件,然后再将其提供给EventHandlers
  • reconcile 定义了实现reconcile的接口,提供给controller调用
  • recorder 定义用于Kubernetes事件记录器的接口
  • runtime 一般我们用户不需要调用,是在内部controller-runtime调用的,包含inject/log/scheme/signals
  • scheme 用于构建Go类型(Kubernetes 组,版本和种类)相关联的信息
  • source 使用Controller.Watch挂载到Controllers,watch对应source,reconcile对应的资源
  • webhook 提供构建和引导Webhook服务器的方法(目前只支持准入webhook,以后会支持version conversion webhook)
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值