当前位置: 首页 > news >正文

安徽富通建设有限公司网站百度账号管家

安徽富通建设有限公司网站,百度账号管家,wordpress主题 king,厦门方易网站制作有限公司目录 基本结构 注入CRD 基本结构 首先下载相应的go pkg go get -u sigs.k8s.io/controller-runtime 接下来需要创建控制器和Manager Operator的本质是一个可重入的队列编程模式#xff0c;而Manager可以用来管理Controller、Admission Webhook#xff0c;包括访问资源对…目录 基本结构 注入CRD 基本结构 首先下载相应的go pkg go get -u sigs.k8s.io/controller-runtime 接下来需要创建控制器和Manager Operator的本质是一个可重入的队列编程模式而Manager可以用来管理Controller、Admission Webhook包括访问资源对象的client、cache、scheme、提供了一个简单的依赖注入机制、优雅关闭的信号处理机制等。 参见官方文档中的示例代码 opsController.go package kubeimport (contextsigs.k8s.io/controller-runtime/pkg/clientsigs.k8s.io/controller-runtime/pkg/reconcile )type OpsController struct {client.Client }func NewOpsController() *OpsController {return OpsController{} }func (a *OpsController) Reconcile(ctx context.Context, req reconcile.Request) (reconcile.Result, error) {return reconcile.Result{}, nil }func (a *OpsController) InjectClient(c client.Client) error {a.Client creturn nil } 先监听官方资源比如Ingress后续需要在Manager中指定因此将调谐函数补全为 func (a *OpsController) Reconcile(ctx context.Context, req reconcile.Request) (reconcile.Result, error) {resource : v1.Ingress{}a.Client.Get(ctx, req.NamespacedName, resource)fmt.Println(resource)return reconcile.Result{}, nil } 当有一个新的Ingress对象被提交到Apiserver都会将整个结构打印在控制台上。 package kubeimport (v1 k8s.io/api/networking/v1ossigs.k8s.io/controller-runtime/pkg/buildersigs.k8s.io/controller-runtime/pkg/client/configlogf sigs.k8s.io/controller-runtime/pkg/logsigs.k8s.io/controller-runtime/pkg/log/zapsigs.k8s.io/controller-runtime/pkg/managersigs.k8s.io/controller-runtime/pkg/manager/signals )func InitManager() {logf.SetLogger(zap.New())var log logf.Log.WithName(builder-examples)mgr, err : manager.New(config.GetConfigOrDie(), manager.Options{})if err ! nil {log.Error(err, could not create manager)os.Exit(1)}err builder.ControllerManagedBy(mgr). // Create the ControllerManagedByFor(v1.Ingress{}). // ReplicaSet is the Application APIComplete(NewOpsController())if err ! nil {log.Error(err, could not create controller)os.Exit(1)}if err : mgr.Start(signals.SetupSignalHandler()); err ! nil {log.Error(err, could not start manager)os.Exit(1)} }在这段代码中将Ingress的指挥权分配给了刚才创建的Controller可以同时被多个Controller管理并且启动Manager这里其实也是operator的入口函数。 随便提交一个Ingress对象控制台输出打印结束。 至此我们完成了一个Operator最基本的调用过程。 注入CRD OperatorCRDControllerWebhook 在实际的环境中往往需要高度定制的资源来完成复杂的流程控制和预期导向。 所以这一小节就来生成CRD以及完成对CR的监听和控制。 同样是在源码中可以发现一段示例代码就是上述实现的一个demo。 其中完成了对CRD的申明深拷贝和对外暴露的注册函数。 Kubernetes官方发布的代码生成脚手架code-generator中也有对此的一段实现代码。 根据这段demo需要填入CRD的一些预设字段用来创建Manager监听对象以及Controller在调用client-go时的反序列化操作。 在启动Manager之前需要将CRD注册到Scheme中去并且加入对CRD的控制与分配控制器。 err v1.AddToScheme(mgr.GetScheme())if err ! nil {log.Error(err, could not register scheme)}err builder.ControllerManagedBy(mgr). // Create the ControllerManagedByFor(v1.Operation{}). // ReplicaSet is the Application APIComplete(NewOpsController())if err ! nil {log.Error(err, could not create controller)os.Exit(1)} 修改调谐函数对触发的对象打印到控制台。 func (a *OpsController) Reconcile(ctx context.Context, req reconcile.Request) (reconcile.Result, error) {resource : v1.Operation{}err : a.Client.Get(ctx, req.NamespacedName, resource)if err ! nil {return reconcile.Result{}, err}fmt.Println(resource)return reconcile.Result{}, nil }参考官方文档 需要编辑一个yaml并应用这里同样是进行字段的申明主要是将对象提交到Apiserver中去。 apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata:# 名字必需与下面的 spec 字段匹配并且格式为 名称的复数形式.组名name: operations.extensions.octoboy.com spec:# 组名称用于 REST API: /apis/组/版本group: extensions.octoboy.com# 列举此 CustomResourceDefinition 所支持的版本versions:- name: v1# 每个版本都可以通过 served 标志来独立启用或禁止served: true# 其中一个且只有一个版本必需被标记为存储版本storage: trueschema:openAPIV3Schema:type: objectproperties:spec:type: objectproperties:action:type: string# 可以是 Namespaced 或 Clusterscope: Namespacednames:# 名称的复数形式用于 URL/apis/组/版本/名称的复数形式plural: operations# 名称的单数形式作为命令行使用时和显示时的别名singular: operation# kind 通常是单数形式的驼峰命名CamelCased形式。你的资源清单会使用这一形式。kind: Operation# shortNames 允许你在命令行使用较短的字符串来匹配资源shortNames:- ops 然后启动我们的Operator并简单编写一个对象yaml。 apiVersion: extensions.octoboy.com/v1 kind: Operation metadata:name: myopsnamespace: default spec:action: restart 同时应用观察到控制台输出 {{Operation extensions.octoboy.com/v1} {myops  default  1344e481-4db4-461d-8d8d-b07713a76236 3927679 1 2023-03-07 14:21:09 0800 CST nil nil map[] map[kubectl.kubernetes.io/last-applied-configuration:{apiVersion:extensions.octoboy.com/v1,kind:Operation,metadata:{annotations:{},name:myops,namespace:default},spec:{action:restart}} ] [] [] [{kubectl-client-side-apply Update extensions.octoboy.com/v1 2023-03-07 14:21:09 0800 CST FieldsV1 {f:metadata:{f:annotations:{.:{},f:kubectl.kubernetes.io/last-applied-configuration:{}}},f:spec:{.:{},f:action:{}}} }]} {} {0001-01-01 00:00:00 0000 UTC}} 至此通过controller-runtime搭建起了一个简易的Operator控制器。
http://www.tj-hxxt.cn/news/229732.html

相关文章:

  • 农产品网站建设主要工作学做网站用谁的书
  • 广州站在哪个区aliyun oss wordpress
  • 搭建视频网站WordPress占资源多
  • 常宁网站app开发 网站建设
  • 优秀网站下载wordpress更换主题出错
  • 移动app做的好的网站wordpress php 模板修改
  • 怎么制作购物网站建设合同施工合同示范文本
  • 网站开发技术应用领域2024的新闻有哪些
  • 怎样用word做网站扫图片识别图片原图
  • 哈尔滨网站建站模板中国建行个人登录入口
  • 我要看一集片做网站外贸商城网站系统
  • 珠宝网站建商台北wordpress 协议
  • asp网站后台产品管理中增加一个功能怎样修改连云港建设网站公司
  • wordpress 怎么添加网站备案信息购物app开发
  • 泰安诚信的企业建站公司在什么网站做调查问卷
  • 做网站找谷谷网络比较好wordpress首页添加图片不显示
  • 六安网站自然排名优化价格市场调研方案怎么写
  • 开发网站如何选需要建设银行平潭招聘网站
  • 做美食网站的图片青海建设厅质检站网站
  • 找人做网站大概多少钱网站防止攻击
  • 网站建设销售前景修改wordpress 字体
  • 拟定一个物流网站的建设方案北京vi设计公司有哪些
  • 网站开发的过程资讯网站 整体ui
  • 做网站专业佛山网站建设收费标准
  • 做进化树的网站python基础教程编程题
  • 宿迁高端网站建设中文域名注册机构
  • 东莞快速网站制作哪家强网站建设 三乐
  • 盘锦做网站选哪家深圳做自适应网站制作
  • 服装网站网站建设需要干什么
  • 有网站怎么做seo推广北京网站建设主页