问题标签 [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 投票
0 回答
46 浏览

go - 如何将 Kubernetes 操作员错误传播到 kubectl 命令行?

我有一个 Kubernetes 操作员,它根据自定义资源配置创建一个新的部署。有一些错误情况会导致失败,并跳过部署创建步骤。是否可以在命令行上显示错误文本?

目前我有:

当用户创建自定义对象时,不会创建部署,但命令行显示自定义对象已成功创建。

操作员的日志显示错误,自定义对象的描述显示事件。我希望在 kubectl apply 命令之后显示事件文本。

0 投票
1 回答
318 浏览

kubernetes - 在 Operator-SDK 中,多个 Patch 在一个协调功能中

我正在使用 operator-sdk 实现 operator。

我对 operator SDK( )Patch中的 API有一些疑问。client.Client

有两个 Patch APIClient.PatchClient.Status().Patch.

据我所知,第一个(Client.Patch)将充当补丁字段,但Status在资源中除外。另一个(Client.Status().Patch)将修补Status资源中的字段。

在这一点上,我可以在一个 Reconcile 函数中多次使用Patch(无论是什么Client.Status().Patch或)API 吗?Client.Patch

我认为PatchAPI 会更改资源版本,因此当我在一个 Reconcile 函数中多次调用 API 时 API 不能正常工作Patch,但是 APIs( Patch) 工作良好(我实际上在一个 Reconcile 函数中调用了 2 次),正如我所观察到的。

如果有我误解的知识,请给我建议。

谢谢。

0 投票
1 回答
43 浏览

go - Golang Api Kind Struct Creation 上的类型冲突

在 client-go 中创建 types.go 时遇到问题。

按照下面的“卡夫卡”种类......

我有 Kafka Kind 的架构如下

而当我需要定义 Spec.kafka 类型时

我面临两种 kafka 结构类型的问题。这是错误的。

0 投票
1 回答
365 浏览

go - 向 Kubernetes GO Operator 添加自定义 Webhook

我正在围绕 kubernetes Go Operator 进行 POC,以在应用程序中执行一些异步操作,并且我希望从 python 应用程序中获取回调到 Operator,然后可以继续更新资源元数据,例如更改资源状态字段。

我知道 Kubernetes Go Operator SDK 使用的控制器使用在特定端口上运行的 API 服务器。但它可以用作自定义 API 服务器,我可以在其中设置 webhook 的工作路径吗?

预期回调 API 的示例:

我希望在调用此 API 时在运算符内部运行一个过程。

我搜索了文档,找不到相关的东西。我可以在 Operator 中运行单独的 API Server 吗?如果它必须监听与内置控制器不同的端口,我很好。

0 投票
0 回答
273 浏览

kubernetes - Operator 将 ConfigMap 或 Secret 传递给控制器​​的最佳实践

目前,我是新手,正在研究 K8s Operator-sdk。我有一个初始化 Deployment 对象的 ReconcileController,该 Deployment 需要 configmap 和秘密资源。如

我想知道如何将 configmap 和秘密资源传递给控制器​​。我想可能有两种选择:

  • 方法一:我先创建了configmap对象和secret对象,然后把它们的名字放在CRD里,然后ReconcileController就会收到configmap/secret的名字,就可以访问configmap对象和secret对象了。

  • 方法 2:我将 configmap/secret 原始数据放在磁盘上,在 ReconcileController 中,我读取 configmap/secret 数据并使用 K8s API 动态生成 configmap/secret 对象,然后我的 Deployment 可以访问它们。对于这种方式,我感觉 ReconcileController 是一个循环运行,而我希望 configmap/secret 可以生成一次,我不确定是否可行。

我认为这是一个非常常见的情况,但我不知道什么是最佳实践。

我很欣赏你的想法和观点。

0 投票
1 回答
889 浏览

kubernetes - Operator 获取 Deployment 配置的最佳实践

我在做operator-sdk,在控制器中,我们经常需要创建一个Deployment对象,而Deployment资源有很多配置项,比如环境变量或者端口定义等等。我想知道获取这些值的最佳方法是什么,我不想对它们进行硬编码,例如 variable_a 或 variable_b。

可能,您可以将它们作为规范放入 CRD,然后将它们传递给 Operator Controller;或者你可以把它们放在 configmap 中,然后将 configmap 名称传递给 Operator Controller,Operator Controller 可以访问 configmap 来获取它们;或者,也许您可​​以放入模板文件,然后在操作员控制器中,控制器必须读取该模板文件。

处理这种情况的最佳方法或最佳实践是什么?感谢您分享您的想法或观点。

0 投票
1 回答
45 浏览

mongodb - mongo inside ansible-operator image

I need the mongo shell installed inside the ansible-operator image.

My first attempt was to use this Dockerfile:

Unsurprisingly, this didn't worked.

"stderr_lines": ["/usr/bin/mongo: /lib64/libcurl.so.4: no version information available (required by /usr/bin/mongo)", "Failed global initialization: InvalidSSLConfiguration Can not set up PEM key file."]

Can anyone help me?

0 投票
2 回答
597 浏览

kubernetes - 如何访问 3rd-party 自定义资源定义?

我正在研究 Operator-SDK。在我的操作员控制器中,我尝试创建一个 Istio 自定义资源——虚拟服务。虚拟服务的定义如下:

在这里,我认为首先需要做一些事情:

  1. 获取 Istio API 模块
  2. 在我的控制器代码中,导入 istio virtualservices 包
  3. 如何创建/更新虚拟服务资源

我的问题是怎么做?因为我以前从来没有这样做过,所以不得不寻求帮助如何做到这一点。

0 投票
2 回答
177 浏览

kubernetes - 通过在 Kubernetes 中创建命名空间自动创建资源/对象

我在想办法吗?如果我创建一个新的命名空间,那么我希望它自动为该服务帐户创建一个 RBAC 规则。

我知道一种方法是创建一个操作员,这样就有一个由协调器/api服务器跟踪的事件,它根据 CRD 创建资源。还有其他方法吗?

0 投票
2 回答
52 浏览

kubernetes - 减少kubernetes operator的权限

我是 Kubernetes 世界的新手,但前段时间我使用 OperatorSDK 和 Golang 开发了一个 Kubernetes 运算符。我使用集群管理员角色来运行操作员 pod,但现在我想减少操作员可以使用的资源。

是否有一些工具可以扫描操作员的代码并生成适当的集群角色?或者有什么聪明的方法可以找到运营商使用了哪些资源?