【问题标题】:Installation failed with chart dependency to Redis安装失败,图表依赖于 Redis
【发布时间】:2021-10-09 03:15:00
【问题描述】:

在我的伞形 Helm 图表中,我定义了对 Redis 的依赖:

apiVersion: v2
appVersion: "1.0"
description: A Helm chart for Kubernetes
name: my-project
version: 0.1.0

dependencies:
  - name: redis
    version: ~6.2.x
    repository: https://charts.bitnami.com/bitnami

在撰写本文时,最新版本是 6.2.6(请参阅 https://bitnami.com/stack/redis/helm)。

但是当我执行helm dependency update my-project 时,Helm 下载的是 6.2.0 版本而不是 6.2.6。 当我尝试安装我的图表时,它失败了: Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest: [unable to recognize "": no matches for kind "Deployment" in version "extensions/v1beta1", unable to recognize "": no matches for kind "StatefulSet" in version "apps/v1beta2"] 没有对 Redis 的依赖,我的图表可以正常安装。

我还尝试在 chart.yaml 中指出特定的 Redis 版本,但随后 helm dependency list 返回:

NAME    VERSION REPOSITORY                              STATUS
redis   6.2.6   https://charts.bitnami.com/bitnami      wrong version

我正在笔记本电脑上的 Docker Desktop 中运行 Kubernetes。 我正在使用的版本:

  • Helm 版本:3.7.0-rc.2
  • K8s 服务器:1.21.2
  • K8s 客户端:1.21.4

当我使用helm install my-release bitnami/redis独立安装Redis时,安装成功。

如何在我的图表中使用 Redis 6.2.6 作为依赖项?

【问题讨论】:

    标签: kubernetes redis kubernetes-helm


    【解决方案1】:

    K8s版本1.21有部署最新API

    简单参考:https://stackoverflow.com/a/66164857/5525824

    当您使用旧版 API 的图表时,您可能需要进行一些更改或使用最新的图表进行安装。

    最新的部署 API 版本是:apps/v1

    您可以使用

    检查您的 K8s 集群支持的 API
    for kind in `kubectl api-resources | tail +2 | awk '{ print $1 }'`; do kubectl explain $kind; done | grep -e "KIND:" -e "VERSION:"
    

    输出

    KIND:     deployment
    VERSION:  v1
    KIND:     statefulset
    VERSION:  v1
    

    或者使用简单的命令:kubectl api-versions

    您应该查看此 Bitnami Redis 文档:https://artifacthub.io/packages/helm/bitnami/redis

    它是几天前更新的,仅在您的情况下可以对 API 进行细微更改。

    如果你查看稳定的 Redis 版本 helm chart:https://github.com/helm/charts/blob/master/stable/redis/templates/redis-master-statefulset.yaml

    有状态 API 版本:apiVersion: apps/v1

    您使用 https://github.com/bitnami/charts/tree/master/bitnami/redis#common-parameters 更改您的 Bitnami helm chart API

    您可以更改 API 版本:https://github.com/bitnami/charts/blob/9f9d8aa887608e39aaab4ca1a80677605825b888/bitnami/redis/templates/master/statefulset.yaml#L2

    此 Helm Chart 的先前版本使用 apiVersion:v1(可安装 通过 Helm 2 和 3),此 Helm 图表已更新为 apiVersion: v2 (只能由 Helm 3 安装)。在这里您可以找到更多关于 apiVersion 字段。 Chart.yaml 中存在的不同字段 文件已按字母顺序以同质的方式排序 Bitnami Helm 图表

    阅读更多:https://helm.sh/docs/topics/charts/#the-apiversion-field

    或者:https://github.com/bitnami/charts/tree/master/bitnami/redis#to-1200

    你有两个选择

    1. 要么更改舵图,要么使用最新的稳定 API 对其进行编辑
    2. 将 K8s 集群降级到 1.161.18 并使用您的旧 redis 图表,该图表在 1.21 中会出错

    【讨论】:

    • 感谢您,我从 Github 克隆了 Redis 图表并将其包含在我自己的图表中。现在部署工作正常。在某些时候,我想再次使用来自 Bitmani 图表存储库的 Redis 包。但我不知道为什么help dependency list 目前没有返回 6.2.6 版本。为什么我会收到错误的版本错误?这也和k8s版本有关吗?
    • 是的,您可以通过打开 bitnami 图表并检查 YAML 文件中设置或进入文件的内容来检查这一点。
    猜你喜欢
    • 2020-12-27
    • 1970-01-01
    • 2021-06-21
    • 2023-02-06
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多