Helm 无法解析本地依赖项存储库文件路径

JDe*_*Dev 2 kubernetes kubernetes-helm helm3

我正在尝试为不同的环境制作一张 Helm Chart。在许多教程中,这种方案应该有效,但我的结构不会从依赖项存储库中读取值。Helm 只是忽略它。

我有以下文件夹结构

helm
   - charts
       - core-web
           - Chart.yaml
           - values.yaml
           - templates
       - frontend
           - Chart.yaml
           - values.yaml
           - templates
   - prod
       - Chart.yaml
       - values.yaml
   - dev
       - Chart.yaml
       - values.yaml
Run Code Online (Sandbox Code Playgroud)

产品/Chart.yaml

apiVersion: v1
name: test
version: 1.0.0

dependencies:
  - name: core-web
    version: "1.37.0"
    repository: file://../charts/core-web/
  - name: frontend
    version: "1.6.0"
    repository: "file://../charts/frontend"
Run Code Online (Sandbox Code Playgroud)

从 helm 文件夹中我执行以下命令

helm install ./prod --dry-run --generate-name -n sandbox -f prod/values.yaml
Error: INSTALLATION FAILED: found in Chart.yaml, but missing in charts/ directory: core-web, frontend
Run Code Online (Sandbox Code Playgroud)

如果我将图表文件夹移至产品文件夹,则一切正常。为什么 helm 不接受依赖存储库中的文件路径?它应该: https: //helm.sh/docs/helm/helm_dependency/

谢谢您的帮助。

Adi*_*iii 5

尝试重现该问题,似乎是缓存问题

您可以验证 helm 对​​它正在寻找的路径的依赖性charts

helm template test ./prod
#output Error: found in Chart.yaml, but missing in charts/ directory: backend, web-app
Run Code Online (Sandbox Code Playgroud)

然后我尝试验证舵看起来的路径

helm dep ls ./prod
Run Code Online (Sandbox Code Playgroud)

从输出中可以清楚地看出,它仍在寻找错误的路径,其状态 missing为仍在文件夹内寻找图表prod

NAME    VERSION REPOSITORY              STATUS
backend 1.2.3   file://charts/backend/  missing
web-app 1.2.3   file://charts/web-app/  missing
Run Code Online (Sandbox Code Playgroud)

所以要解决这个问题

helm dependency update  ./prod
Run Code Online (Sandbox Code Playgroud)

然后我就可以看到

helm dep ls ./prod
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述