问题标签 [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.

0 投票
1 回答
87 浏览

kubernetes - 如何使用 Operator SDK 正确垃圾收集对象?

Kubernetes Operators 的 Operator-SDK 有一个ctrl.SetControllerReference()功能,声称当管理的自定义资源被删除时,它会自动启用垃圾收集对象。

有时它似乎没有删除任何东西。我做错了什么?

0 投票
0 回答
129 浏览

go - 如何为 api 中的嵌套字段添加 `// +kubebuilder:default=` 标记

我想使用嵌套字段的标记以自动方式为自定义资源定义创建默认值。由于我使用的是开源库中的 struct 类型,因此无法直接在那里创建标记。所以我必须只使用嵌套标记。我想以这样一种方式使用标记,它只会为该类型而不是整个类型为一个字段创建一个默认值。截至目前,它默认整个类型。

0 投票
0 回答
118 浏览

kubernetes - jinja2 模板文件中的递归 Ansible 过滤器

我有一个这样的剧本:

我想在一个看起来像这样的 jinja2 模板中编写:

mapping这是在做它的事情,但它看起来非常难看,如果 a 中有一个内部也会破坏mapping。理想情况下,我想做这样的事情:

这适用于role,但由于它不是递归的dog,所以cat会中断。opts

由于我使用 operator-sdk 和lookup过滤器部署此配置映射,因此我无法使用 jinjaenv编写自定义过滤器。

因此,我的问题是:有什么方法可以内联一些 python 代码,或者是否有类似递归to_yaml过滤器的东西?

0 投票
1 回答
135 浏览

kubernetes - Kubernetes 操作员可以监视 PVC 中的文件吗

kubernetes 操作员是否可以在 Persistent Volume Claim (PVC) 中监视文件?我正在创建一个 k8s Golang 运算符来部署和管理我的应用程序。应用程序 pod 将具有已安装的卷。如果 PVC 上的配置文件发生更改,我需要能够停止和启动 pod。这可能吗?我可以在文档中看到我可以为 PVC 添加一个观察者,但不确定这是否也可以观察文件更新或更改。

0 投票
1 回答
133 浏览

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的澄清。

0 投票
1 回答
66 浏览

kubernetes - 更改 operator-sdk (Kubernetes) 生成项目的目录结构

默认情况下,operator-sdk 生成的文件夹结构如下

根文件夹

为简洁起见,省略了一些文件夹。

我正在寻找的是如何修改此文件夹结构并配置 operator sdk 以尊重该文件夹结构。

所以说我想重命名config为,使用operator-sdkcmd时如何实现

0 投票
1 回答
107 浏览

go - Kubernetes 操作员使用 yaml 模板创建 Deployment

我正在尝试通过以下链接创建自己的 kubernetes 运算符。在 Reconcile 函数中,我需要创建多个部署,每个部署的某些属性(例如名称)都会有所不同,并且配置很大。不是通过使用 appsv1.Deployment 创建部署并在其中创建每个属性(如下面的代码),有没有一种方法可以让我提供一个 yaml 模板文件并读取该文件以获取 appsv1.Deployment 对象?

除了上面,可以使用一些方便的实用程序功能来实现类似下面的内容吗?

0 投票
1 回答
211 浏览

kubernetes - Kubernetes operator-sdk:如何删除控制器?

我们已经开发了一堆控制器和 API,我们需要删除一些控制器,但是我们无法找到删除 API 和控制器的方法。

我们查看了可用选项,但没有删除 api 的标志。

0 投票
1 回答
145 浏览

kubernetes - Tuned Operator 不激活自定义配置文件 (Openshift 4.6.18)

Openshift 默认提供“node-tuning-operator”来调低系统。

我们可以使用自定义资源 (CR) 创建自定义配置文件。

但是,操作员没有加载/激活自定义配置文件。

它不是激活我的自定义配置文件,而是激活 openshift 提供的默认配置文件。

我仍在努力找出正确的配置文件配置。

调谐操作员未激活我的自定义配置文件可能是什么问题?

0 投票
0 回答
36 浏览

kubernetes - Kubernetes Operators:根据内部容器信息构建自定义资源状态

我正在实现一个 kubernetes 运算符,只要发现特定的 pod 处于运行状态,它就应该简单地部署一个服务。问题是 pod 容器内的进程(我无法以任何方式修改)正在随机服务端口,在有效运行进程本身之前,我无法知道端口号。那时我可以编写一个脚本来从 pod 内部收集此端口信息并通过特定端点提供服务。

我想在我的协调循环中带来有关端口的这些信息,以便我可以生成指向正确 targetPort 的服务,但不能真正提出一个干净的 kubernetes 兼容解决方案。

我能想到的唯一方法是强制我的控制器查询 pod 上直接指向其 ip 地址的端点。

你能帮我找出更好或更标准的方法吗?