问题标签 [kubebuilder]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - Kubernetes:是否可以在突变准入 webhook 中对状态子资源进行突变?
我正在为 CRD 编写 mutate 和 validate admission webhook。我正在使用 kubebuilder 来设置 CRD。规范和状态子资源的行为正确。
作为突变的一部分,我需要更新状态子资源。
例如,Exam 是我的 CR,status.status 是考试状态。我想在突变中将状态设置为“NotDone”。
我尝试了以下方法
- 此处解释了 Json 修补方法https://banzaicloud.com/blog/k8s-admission-webhooks/这给出了未找到自定义资源的错误。即,它需要我们正在为其更新状态的自定义资源。
- 使用 go 客户端获取和更新状态https://book-v1.book.kubebuilder.io/basics/status_subresource.html
但没有一种方法对我有用。
我想知道是否甚至可以更新 admission webhook 中的状态子资源?
kubernetes - 为什么 admission webhook 在 kubebuilder 书中的 CronJob 示例中不起作用
我正在关注 KubeBuilder 书中的 CronJob 示例:https ://book.kubebuilder.io/cronjob-tutorial/cronjob-tutorial.html
运行后make run
,显示如下日志:
从日志中不难看出,controller 和 admission webhook 都已经按预期成功启动了。
为了测试 admissionWebhook 是否正常工作,我使 CronJob 计划无效,如下所示
-*- * * * *
:
应用配置后:kubectl apply -f config/samples/batch_v1_cronjob.yaml
,
没有显示来自 webhook 的日志,唯一显示 cronjob 计划无效的日志来自控制器的代码:
那么为什么 webhook 不起作用?
kubernetes - 如何在我自己的 CRD 控制器中重用 k8s 验证
我创建了一个CRD
这样的:
请注意,我PodSpec
在 CRD 中重用了核心 apigroup
为了避免用户应用无效的 yaml 文件,我决定在我的 CRD 控制器中添加验证逻辑,对于像这样的简单字段Name
,使用正则表达式很容易检查它的正确性,而对于像这样的复杂和原生类型PodSpec
,因为 k8s 已经有验证逻辑,我觉得正确的方法是在我的控制器中重用它,但我该怎么做呢?
go - 如何为枚举类型分配默认值
从这个 Go 代码,我正在生成 CRD yaml。我在 Go 中使用以下结构。我想从枚举选项之一为参数“大小”和“大小写”分配默认值。赋值 // +kubebuilder:validation:default:=512 在生成的 yaml 文件中不生效。kubebuilder有什么办法,我们可以为枚举分配默认值吗?
kubernetes - 通过在 Kubernetes 中创建命名空间自动创建资源/对象
我在想办法吗?如果我创建一个新的命名空间,那么我希望它自动为该服务帐户创建一个 RBAC 规则。
我知道一种方法是创建一个操作员,这样就有一个由协调器/api服务器跟踪的事件,它根据 CRD 创建资源。还有其他方法吗?
kubernetes - 减少kubernetes operator的权限
我是 Kubernetes 世界的新手,但前段时间我使用 OperatorSDK 和 Golang 开发了一个 Kubernetes 运算符。我使用集群管理员角色来运行操作员 pod,但现在我想减少操作员可以使用的资源。
是否有一些工具可以扫描操作员的代码并生成适当的集群角色?或者有什么聪明的方法可以找到运营商使用了哪些资源?
kubernetes-custom-resources - 在 k8s 运算符中,如何将 CRD 规范中的唯一 metadata.name 链接到我的服务器生成的唯一对象 ID
我正在开发一个新的 Operator 来管理我的业务逻辑对象的 CRD。我的业务对象存储在 Mongo 中,因此,我们需要此 BSON ID(12 个字母长度的 GUID)来对此对象进行后续更改。
问题是,如何将运营商需要创建的 CR 链接到这个上游对象?我在哪里可以存储这种独特BSON ID
的 K8S 方式,以便我可以使用它进行进一步查找。
例如,这是我的上游对象之一的 CRD:
当我kubectl apply -f
对此 CRD 执行操作时,它会被创建。
然后我的操作员在协调循环中选择它,然后在我的服务器中创建这个对象。服务器生成一个 BSON ID。我需要使用此 BSON ID 进行进一步查找。
如何存储特定于服务器的BSON ID
,以便开发人员只需要metadata
在规范中使用唯一名称,而在后台我的操作员负责将两者联系起来?
kubernetes - 控制器在与其自定义资源不同的命名空间中创建/监视资源
我有一个控制器,它在“foo”命名空间中协调 MyKind 自定义资源。在协调循环中,它在“bar”命名空间中创建部署 MyDeployment。我想知道如何在“bar”命名空间中创建的 MyDeployment 上设置监视,该命名空间不同于自定义资源所在的命名空间(“foo”)。
我尝试使用以下设置我的管理器,但它似乎不起作用,因为我试图观察的部署位于不同的命名空间中,因此控制器无法接收部署上的 CRUD 操作的任何事件。
是否有任何自定义手表可以配置我的控制器,以便在不同的命名空间中接收部署事件。
注意:我尝试了 handler.EnqueueRequestsFromMapFunc,IIUC 它还协调了同一命名空间中的 Kinds。
amazon-web-services - 如何在 alb-ingress-controller AWS 启动的 ALB 上使用 AWS 控制台添加 SSL 证书?
我有一个要求,我需要维护多个公共域以指向我们的服务器,因此我使用 alb-ingress-controller 来启动 ALB 并允许我在 certificateArns 注释中传递 25 证书 ARNS,但是如果我添加任何alb-ingress-controller 通过 AWS 控制台为 ALB 提供了新的 SSL 证书,K8s 控制器协调器删除了我手动添加的证书。
对我来说一个理想的方法是让 ALB 由 alb-ingress-controller 启动,但对我来说仍然能够通过 AWS 控制台/API 将 SSL 证书添加到此 ALB。
有谁知道如何使这项工作?
我尝试从事 alb-ingress-controller 项目,但它是一个大项目,而且我有一个时间表 :-) 希望能从社区中获得帮助。
kubernetes - 如何使用分数格式(即 X/Y)为自定义资源显示 kubectl 列
在 Kubernetes 中,是否可以使用 CRD 的“additionalPrinterColumns”字段以分数格式(即 X/Y)显示列?
更准确地说,我想kubectl
使用与下面的 READY 字段相同的格式来显示 CR 字段的描述:
您能否提供“additionalPrinterColumns”部分的内容?