【问题标题】:Helm 3.0.2 dry-run + stable/prometheus-operator? Is this supposed to work?Helm 3.0.2 试运行 + stable/prometheus-operator?这应该工作吗?
【发布时间】:2019-12-31 04:32:41
【问题描述】:

使用 Helm v3.0.2 + 新的 Kubernetes v1.14.9 集群。

fyi,我已经添加了稳定的 repo:

helm repo add stable https://kubernetes-charts.storage.googleapis.com/
helm install \
  --namespace prometheus \
  prom-dry-run \
  stable/prometheus-operator \
  --dry-run

manifest_sorter.go:175: info: skipping unknown hook: "crd-install"
manifest_sorter.go:175: info: skipping unknown hook: "crd-install"
manifest_sorter.go:175: info: skipping unknown hook: "crd-install"
manifest_sorter.go:175: info: skipping unknown hook: "crd-install"
manifest_sorter.go:175: info: skipping unknown hook: "crd-install"
Error: unable to build kubernetes objects from release manifest: [unable to recognize "": no matches for kind "Alertmanager" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "Prometheus" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "PrometheusRule" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1"]

我认为 Helm 3 与现有图表向后兼容?这是个例外吗?

prometheus-operator 与 Helm 3 不兼容吗?我必须使用 Helm 2 吗?还是有向后兼容的选项?

【问题讨论】:

    标签: kubernetes kubernetes-helm prometheus-operator


    【解决方案1】:

    稳定的 repo 计划被弃用,并且可能不会更新最新的图表。Helm 图表的规范来源是 Helm Hub。使用以下命令添加 repo 并使用 helm 3 或 helm 2 从 Helm Hub 安装 prometheus operator。

    helm repo add bitnami https://charts.bitnami.com/bitnami
    helm install my-prom-release bitnami/prometheus-operator
    

    有一个详细的guide 用于从 helm 2 迁移到 helm 3

    在试运行期间,在 helm 3 中,没有安装 CRD,但 Kubernetes 验证针对图表的输出进行。因此,任何使用图表安装的 CRD 的 CR 都将在试运行期间验证失败。

    当前的解决方法:

    1.使用helm模板代替dry run

    2.不要在具有 CRD 的同一图表中引用 CR

    3.在运行试运行之前单独安装 CRD

    【讨论】:

    • 我的问题与来自 bitnami repo 的图表相同。
    • @flypenguin 你找到解决方案了吗?
    • @Sankar 很遗憾没有:(
    【解决方案2】:

    遗憾的是,CRD 是 Helm v3 图表兼容性的一个例外。

    问题是--dry-run 无法使用 CRD 生成资源,因为 CRD 不是通过试运行安装的。这显然是一个 "documented behaviour",尽管它记录在实现拉取请求中,而不是在 Helm 文档中。

    编辑:我忘了提到当前最好的解决方法是手动安装 CRD。然后--dry-run 将起作用。 Helm v3 会忽略已安装的 CRD,因此您可以在对配置感到满意后将它们留在那里并进行实际安装。

    升级 Helm 中的 CRD 是 whole different (not yet resolved) issue


    stable/prometheus-operator 于 2019 年 11 月中旬在8.2.0 中获得了对 Helm v3 的支持,所以这不是这里的问题。

    bitnami/prometheus-operator 仅在几天前获得了0.3.0 的支持。

    在撰写本文时(2020 年 3 月),两者似乎都在积极维护中。


    万一有人看到上面两个图表名称不是链接而感到困惑:两者都已重命名,一个已移动。

    它们现在分别是prometheus-community/kube-prometheus-stack(替换stable/prometheus-operator)和bitnami/kube-prometheus

    【讨论】:

    • 仅供参考,这(虽然是一个非常有用的帖子)有点过时了。他们更新了 Helm 的文档,现在也进行了一些更改。 (并且还决定永远不实现使用 helm 删除或升级 CRD 的功能)
    • 我不会说他们决定从不这样做。我会说没有明确的方法 这样做,并且这样做需要对 Kubernetes 本身管理 CRD 的方式进行一些更改。 k8s api-machinery SIG 的成员(拥有 CRD)对探索此类更改很感兴趣,但我看不到任何进一步的进展,例如,github.com/helm/community/pull/138#discussion_r475901928
    猜你喜欢
    • 2020-10-08
    • 1970-01-01
    • 2020-06-05
    • 2019-12-10
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多