问题标签 [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 回答
40 浏览

kubernetes - 更新现有的 Kubernetes golang Operator

我有一个由旧版本的 operator-sdk 创建的 Kubernetes go lang operator docker 映像。需要在 controller.go 文件上添加自定义。想知道一种使用自定义更新此操作员图像并创建新操作员图像的方法。

有什么帮助吗?

0 投票
1 回答
183 浏览

kubernetes - 操作员控制器无法删除相关资源

在 Kubernetes 和 Operator-sdk 中,我们可以定义 CRD(自定义资源定义)和 CR(自定义资源)。在我的操作员控制器中,当初始化 CR 时,我会创建一个新的部署和服务。

当我们删除一个 CR 对象时,相关的资源(如 Deployment 或 service)也会同时被删除。我知道它应该由终结者完成CRCRD这只是我的猜测。

现在我遇到了一个问题,在 Operator 测试期间,在envTest环境下,当我删除 a 时CR,它的相关资源(部署或服务)没有被删除。

我很困惑。中real k8s cluster,关联资源(部署或服务)在我删除一个时可以自动删除CR,下envTest environment,为什么它不删除关联资源?

谁能指出原因。

0 投票
1 回答
290 浏览

kubernetes - 终结器如何为 CustomResouce 对象工作?

在 Kubernetes 和 Operator-sdk 中,我们可以定义 CRD(自定义资源定义)和 CR(自定义资源)。在我的操作员控制器中,当初始化 CR 时,控制器协调会创建一个新的部署和服务。

当我们删除一个 CR 对象时,关联的资源(例如 Deployment 或 service)也会同时被删除。我知道它应该由 CR Finalizer 完成。但是,在 Operator-SDK 和我的控制器代码中,我从未看到任何注册或添加 CR 终结器的代码,Operator-Sdk 是否有任何默认行为?

任何人都可以指出它如何适用于该案例 - “在删除 CR 时,相关的部署和服务也已删除”?控制器中的哪个部分对此负责?

0 投票
1 回答
170 浏览

kubernetes - 如何在 go api 不可用的第 3 方自定义资源上执行 CRUD

我正在研究 Operator-SDK。在我的操作员控制器中,我想对 go api 模块不可用的自定义资源(例如 ExampleCR)执行 CRUD 操作

假设 ExampleCR 没有 go api(我可以访问 yaml 中的 crd 定义)。我正在观察Deployment对象以及何时Deployment创建或更新对象。我想在我的控制器代码中对 ExampleCR 执行以下操作。

  1. 在 ExampleCR 上创建 kubectl
  2. ExampleCR 上的 kubectl 更新
  3. kubectl 上 ExampleCR
0 投票
2 回答
948 浏览

kubernetes - Operator SDK 控制器无法更新自定义资源状态

我正在按照本教程创建我的第一个名为 PodSet 的自定义资源,目前正在第 6 步(共 7 步)测试我的 CR。

这是我的 Operator SDK 控制器 Go 代码:

当我在 YAML 文件下方应用时,我看到了 pod 的奇怪行为。他们在最初的几秒钟里很挣扎——他们中的一些人站起来运行了一段时间,很快就进入了终止状态。当我让它们保持几秒钟不变时,CR 就达到了所需的状态。

我在这段视频中捕捉到了上面的部署场景。这是来自我的本地终端运行命令的完整日志(抱歉,我必须使用 Pastebin,因为 SO 不允许我在此处粘贴完整日志,因为它们太长了)WATCH_NAMESPACE=podset-operator make run

所以,我的问题是:

  1. 究竟是什么Failed to update PodSet status {"error": "Operation cannot be fulfilled on podsets.app.example.com \"podset-sample\": the object has been modified; please apply your changes to the latest version and try again"}意思?
  2. 为什么会这样?
  3. 我能做些什么来摆脱这些错误?
0 投票
1 回答
165 浏览

kubernetes - Kubernetes Operator-sdk 1.2 没有本地运行选项

我需要测试我为 operator 0.17 到 1.2 operator-sdk 套件开发的代码。我很难理解如何在构建 docker 映像之前在本地运行操作员并对其进行测试?

有没有办法在不构建 docker 镜像的情况下进行本地测试?

0 投票
1 回答
196 浏览

rest - 为什么 Kubernetes REST API 势在必行?

编辑:正如乔纳斯的回应中提到的,Kubernetes REST API 实际上可以被认为是声明性的而不是命令性的。

Kubernetes 以其声明性模型而闻名。控制器正在监视 ETCD 中包含所需状态(声明性)的对象。它将其与当前状态进行比较,并为命令式 Kubernetes API生成命令式命令。

哪些原因导致 Kubernetes 项目不公开声明式 HTTP API?

因此,让控制器/操作员进行对账。

我发现声明式 REST API 的一个示例是F5 AS3。而且我猜他们基于这个声明性 API 构建的Kubernetes 运算符非常简单。

0 投票
1 回答
43 浏览

kubernetes - Operator-SDK 和 NewController 功能

我正在使用 operator-sdk 1.2 版构建一个操作员,我知道我们有一个协调循环,但我指的是一些 GitHub 存储库,无法弄清楚 NewController 函数的使用。似乎这些 GitHub 存储库是使用 operator-sdk 开发的,但在 operator-sdk 1.2 中,我不需要找到任何 Newcontroller 函数。

例如,我在当前的 operator-sdk 中引用https://github.com/oracle/mysql-operator并查看了https://github.com/oracle/mysql-operator/blob/master/pkg/controllers/cluster/controller.go并且我没有找到 NewController 函数。

另外,我不明白这个 MySQL 运算符是如何使用 kubeconfig 的?我们是否需要通过 kubeconfig 位置来执行容器中的命令?有没有办法读取 kube 配置而不在 operator-sdk 中传递 kubeconfig 位置?

0 投票
1 回答
168 浏览

kubernetes - Operator-sdk:规范和状态结构中的命名约定

我正在开发一个运算符,想知道是否有链接或文档描述了 Spec 和 Status 字段的命名最佳实践?例如:

我可以在其中找到与每个字段或参数的注释相关的所有信息,以设置字段可选或设置默认值如下所示:

如何设置 AppCount 的默认值?另外,AppCount 的命名是否正确?我可以有命名间接,即我可以将其设置为以下内容:

这将帮助我在 YAML 文件中公开不同的名称,但在代码中,我将引用 AppCount。请让我知道是否有关于每个字段和字段标志的评论野兽实践的文档,例如省略空或可选?

从评论来看,我看到很多运营商都引用了 kUbeBuilder 如下图:

我在哪里可以找到上述详细信息以及何时使用它们?

0 投票
1 回答
701 浏览

kubernetes - Kubernetes rbac pod/exec create 操作被禁止

我正在研究运算符并使用 operator-sdk 进行运算符开发。我正在为一些业务逻辑执行 pod exec,但它一直失败并出现以下错误:

以下是定义角色:

角色绑定定义

请告知我做错了什么。