-----持续kubebuilder- 含 阿里kubebuilder实践- 含 自定义Welcome示例 - 断点Kubebuilder ------

推荐好文 介绍 kubuilder源码和原理的文章

https://www.cnblogs.com/alisystemsoftware/p/11580202.html
在这里插入图片描述

来自另一篇文章推荐 :
https://blog.csdn.net/dustzhu/article/details/112029190

近期推荐实战- 20230424

https://www.cnblogs.com/bolingcavalry/archive/2021/08/25/15183342.html

推荐阅读1

https://developer.aliyun.com/article/798703
我们将 CRD, Controller, Webhook 三者合起来叫 Operator。一个 Operator 工程一般必须包含 CRD 和 Controller,Admission 是可选的。如果说 Kubernetes 是 “操作系统” 的话,Operator 是 Kubernetes 的第一层应用,它部署在 Kubernetes 里,使用 Kubernetes “扩展资源” 接口的方式向更上层用户提供服务。

在这里插入图片描述

推荐2:通过创建一个 Welcome 类型的资源,后台自动创建 Deployment 和 Service

https://www.cnblogs.com/zuoyang/p/16477192.html

实践kubebuild

https://blog.csdn.net/weixin_45413603/article/details/108170720
官网https://book.kubebuilder.io/
中文文档https://cloudnative.to/kubebuilder/
学习链接operator实战
一 简介
在这里插入图片描述

原理

用户向 Kubernetes API 服务注册一个带特定 schema 的资源,并定义相关 API

将扩展资源的数据存储到 Kubernetes 的 etcd 集群借助 Kubernetes 提供的 controller 模式开发框架,实现新的 controller,并借助 APIServer 监听 etcd 集群关于该资源的状态并定义状态变化的处理逻辑

具体流程如下图:
在这里插入图片描述

知乎链接:https://zhuanlan.zhihu.com/p/114659529

官网链接:

https://kubernetes.io/zh/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/

创建 CustomResourceDefinition

当你创建新的 CustomResourceDefinition(CRD)时,Kubernetes API 服务器会为你所 指定的每一个版本生成一个 RESTful 的 资源路径。CRD 可以是名字空间作用域的,也可以 是集群作用域的,取决于 CRD 的 scope 字段设置。和其他现有的内置对象一样,删除 一个名字空间时,该名字空间下的所有定制对象也会被删除。CustomResourceDefinition 本身是不受名字空间限制的,对所有名字空间可用。

例如,如果你将下面的 CustomResourceDefinition 保存到 resourcedefinition.yaml 文件:

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  # 名字必需与下面的 spec 字段匹配,并且格式为 '<名称的复数形式>.<组名>'
  name: crontabs.stable.example.com
spec:
  # 组名称,用于 REST API: /apis/<组>/<版本>
  group: stable.example.com
  # 列举此 CustomResourceDefinition 所支持的版本
  versions:
    - name: v1
      # 每个版本都可以通过 served 标志来独立启用或禁止
      served: true
      # 其中一个且只有一个版本必需被标记为存储版本
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                cronSpec:
                  type: string
                image:
                  type: string
                replicas:
                  type: integer
  # 可以是 Namespaced 或 Cluster
  scope: Namespaced
  names:
    # 名称的复数形式,用于 URL:/apis/<组>/<版本>/<名称的复数形式>
    plural: crontabs
    # 名称的单数形式,作为命令行使用时和显示时的别名
    singular: crontab
    # kind 通常是单数形式的帕斯卡编码(PascalCased)形式。你的资源清单会使用这一形式。
    kind: CronTab
    # shortNames 允许你在命令行使用较短的字符串来匹配资源
    shortNames:
    - ct

参考文章1 自定义资源:
https://blog.csdn.net/Jacson__/article/details/125305201

参考文章2 自定义controller:
https://www.jianshu.com/p/0b7f914f5060

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值