0

我想引用由 CRD 创建的对象的属性。

这是我的例子。我使用来自https://github.com/GoogleCloudPlatform/k8s-config-connector的 CRD 创建了一个 Cloud SQL 实例。

这会生成一个带有 IP 的实例。我想在另一个资源中引用 IP 地址。

有没有类似于下游 API 的东西可以让我这样做?

如果我不能原生地做到这一点,我可以使用 Helm、Helmfile 或 Kustomize 等第三方模板工具来做到这一点吗?

4

1 回答 1

1

没什么特别的,我们这样做的方式是控制器在从属对象的 Status 子结构上公开 IP 或主机名等信息,然后将其复制到根对象的 Status 中,然后我们从中读取并注入将其放入配置文件中。

https://github.com/Ridecell/ridecell-operator/blob/39344f4318ff3bcb68ce32dd4319b655a60277da/pkg/controller/summon/components/postgres.go#L58-L61是复制的一个例子,但它在我们的框架中,所以可能不是超级直接有帮助。

我们在其他地方使用的另一个选项是创建一个从 CRD 状态读取并写出(或转换)配置文件的 init 容器。一个例子是https://github.com/Ridecell/ridecell-operator/blob/39344f4318ff3bcb68ce32dd4319b655a60277da/cmd/initcontainer/main.go#L181-L203

于 2020-03-03T08:53:20.913 回答