问题标签 [operator-sdk]
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 - 如何使用 Operator SDK 正确垃圾收集对象?
Kubernetes Operators 的 Operator-SDK 有一个ctrl.SetControllerReference()
功能,声称当管理的自定义资源被删除时,它会自动启用垃圾收集对象。
有时它似乎没有删除任何东西。我做错了什么?
go - 如何为 api 中的嵌套字段添加 `// +kubebuilder:default=` 标记
我想使用嵌套字段的标记以自动方式为自定义资源定义创建默认值。由于我使用的是开源库中的 struct 类型,因此无法直接在那里创建标记。所以我必须只使用嵌套标记。我想以这样一种方式使用标记,它只会为该类型而不是整个类型为一个字段创建一个默认值。截至目前,它默认整个类型。
kubernetes - jinja2 模板文件中的递归 Ansible 过滤器
我有一个这样的剧本:
我想在一个看起来像这样的 jinja2 模板中编写:
mapping
这是在做它的事情,但它看起来非常难看,如果 a 中有一个内部也会破坏mapping
。理想情况下,我想做这样的事情:
这适用于role
,但由于它不是递归的dog
,所以cat
会中断。opts
由于我使用 operator-sdk 和lookup
过滤器部署此配置映射,因此我无法使用 jinjaenv
编写自定义过滤器。
因此,我的问题是:有什么方法可以内联一些 python 代码,或者是否有类似递归to_yaml
过滤器的东西?
kubernetes - Kubernetes 操作员可以监视 PVC 中的文件吗
kubernetes 操作员是否可以在 Persistent Volume Claim (PVC) 中监视文件?我正在创建一个 k8s Golang 运算符来部署和管理我的应用程序。应用程序 pod 将具有已安装的卷。如果 PVC 上的配置文件发生更改,我需要能够停止和启动 pod。这可能吗?我可以在文档中看到我可以为 PVC 添加一个观察者,但不确定这是否也可以观察文件更新或更改。
go - 在 Operator SDK 中混合实现语言 - Helm、Go、Ansible
我需要将多个容器部署到 Kubernetes 集群。目标是自动化 Kafka、Kafka Connect、PostgreSQL 等的部署。其中一些已经提供了我们可以使用的 Helm 操作符。所以我的问题是,我们能否以某种方式在操作员内部使用这些 helm 操作员?如果是这样,最好的方法是什么?
到目前为止,我能想到的唯一方法是从部署应用程序中调用 helm setup 控制台命令。另一种方法,不使用这些 helm 文件,将在我自己的 operator 中实现每个 operator 的功能,这似乎没有多大意义,因为我需要的东西已经开发并且是公开的。
我对运营商开发很陌生,所以如果这是一个愚蠢的问题,请原谅。
编辑:运营商的主要目的是部署 X 数据库。除此之外,我们还希望有一个可以立即部署整个系统的操作员/捆绑包。即使我们对某些容器有额外的任务,使用操作符进行捆绑是否有意义?这样,用户将在 yaml 文件中指定:
并且将创建 2 个 PostgreSQL 数据库。然后可以在其他 yaml 文件中或在同一个 yaml 文件中进一步提及这些数据库。手头案例:数据库中的信息将由 Debezium(另一个容器)提取,因此 Debezium 需要知道它们的地址。所以运营商应该创建一个服务并将服务地址与数据库名称相关联。
这是 ETL 系统的一部分。这个想法是操作员可以通过处理大部分配置来轻松部署整个系统。考虑到这一点,我们在考虑是否不可能选择现有的 Helm 操作员(或其他类型的操作员)并通过对配置进行少量修改(例如不同数据库的不同端口)来部署它们。
但是在阅读了F1ko的回复后,我获得了新的视角。也许这对于最初预期的操作员来说是不可能的?
Edit2:对edit1的澄清。
kubernetes - 更改 operator-sdk (Kubernetes) 生成项目的目录结构
默认情况下,operator-sdk 生成的文件夹结构如下
根文件夹
为简洁起见,省略了一些文件夹。
我正在寻找的是如何修改此文件夹结构并配置 operator sdk 以尊重该文件夹结构。
所以说我想重命名config
为,使用operator-sdkcmd
时如何实现
go - Kubernetes 操作员使用 yaml 模板创建 Deployment
我正在尝试通过以下链接创建自己的 kubernetes 运算符。在 Reconcile 函数中,我需要创建多个部署,每个部署的某些属性(例如名称)都会有所不同,并且配置很大。不是通过使用 appsv1.Deployment 创建部署并在其中创建每个属性(如下面的代码),有没有一种方法可以让我提供一个 yaml 模板文件并读取该文件以获取 appsv1.Deployment 对象?
除了上面,可以使用一些方便的实用程序功能来实现类似下面的内容吗?
kubernetes - Kubernetes operator-sdk:如何删除控制器?
我们已经开发了一堆控制器和 API,我们需要删除一些控制器,但是我们无法找到删除 API 和控制器的方法。
我们查看了可用选项,但没有删除 api 的标志。
kubernetes - Tuned Operator 不激活自定义配置文件 (Openshift 4.6.18)
Openshift 默认提供“node-tuning-operator”来调低系统。
我们可以使用自定义资源 (CR) 创建自定义配置文件。
但是,操作员没有加载/激活自定义配置文件。
它不是激活我的自定义配置文件,而是激活 openshift 提供的默认配置文件。
我仍在努力找出正确的配置文件配置。
调谐操作员未激活我的自定义配置文件可能是什么问题?
kubernetes - Kubernetes Operators:根据内部容器信息构建自定义资源状态
我正在实现一个 kubernetes 运算符,只要发现特定的 pod 处于运行状态,它就应该简单地部署一个服务。问题是 pod 容器内的进程(我无法以任何方式修改)正在随机服务端口,在有效运行进程本身之前,我无法知道端口号。那时我可以编写一个脚本来从 pod 内部收集此端口信息并通过特定端点提供服务。
我想在我的协调循环中带来有关端口的这些信息,以便我可以生成指向正确 targetPort 的服务,但不能真正提出一个干净的 kubernetes 兼容解决方案。
我能想到的唯一方法是强制我的控制器查询 pod 上直接指向其 ip 地址的端点。
你能帮我找出更好或更标准的方法吗?