我的图表具有elasticsearch和mongdb依赖性,在我的图表中,结构如下:
├── [-rw-rw-r--] Chart.yaml
├── [drwxrwxr-x] dependency_charts
│ ├── [drwxrwxr-x] elasticsearch
│ └── [drwxrwxr-x] mongodb
├── [-rw-rw-r--] deploy.sh
├── [-rw-rw-r--] requirements.yaml
├── [-rw-rw-r--] values.yaml
├── [drwxrwxr-x] templates
│ ├── [-rw-rw-r--] proj-deploy.yaml
│ └── [-rw-rw-r--] proj-svc.yaml
但是当我尝试安装图表时,它会显示:
Error: found in requirements.yaml, but missing in charts/ directory: elasticsearch, mongodb
当我执行hep dep ls时,它显示缺少状态
$ helm dep list
NAME VERSION REPOSITORY STATUS
elasticsearch 6.5.1 file://dependency_charts/elasticsearch missing
mongodb 4.0.3 file://dependency_charts/mongodb missing
版本是appVersion,我也将版本更改为图表版本,这是行不通的。
这是正式文件:https://github.com/helm/helm/blob/master/docs/helm/helm_dependency.md https://docs.helm.sh/chart_best_practices/#repository-urls
这是掌舵版本
$ helm version
Client: &version.Version{SemVer:"v2.10.0", GitCommit:"9ad53aac42165a5fadc6c87be0dea6b115f93090", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.10.0", GitCommit:"9ad53aac42165a5fadc6c87be0dea6b115f93090", GitTreeState:"clean"}
我可以将这些图表放置到charts
文件夹中,但是如果我这样做,舵将在同一图表中安装mongodb和elasticsearch,这是不期望的,我期望的是在相同名称空间下三个图表:myproj,elasticsearch,mongodb。
有人知道我做错了什么吗? 谢谢。
答案 0 :(得分:5)
helm dep update
仅在回购列表为空时有效。检查helm repo list
,如果返回一些内容,则本地依赖项将无法解析。尝试使用命令helm repo remove REPO_NAME
答案 1 :(得分:1)
...我期望在同一名称空间下有三个图表:myproj,elasticsearch和mongodb。
您需要分别运行helm install
3次才能获得效果。
requirements.yaml
机制使Helm在单个Helm版本中安装多个子图表。 helm list
仅显示myproj
,但在内部也将具有Kubernetes资源用于其他组件。如果您使用kubectl get service
,则将看到unusual-animal-myproj
和unusual-animal-mongodb
之类的服务对象,由相同的Helm版本管理。如果您helm del unusual-animal
,它将一起删除所有三个组件。
如果这是您想要的行为,那么您收到的错误消息将说明该内容:本地图表必须位于精确命名为charts
的子目录中。运行helm dep up
或helm dep build
会将它们复制到那里。
答案 2 :(得分:1)
您必须运行let arr = [1, 2, 3, 4];
let newArr = [];
arr.reduce((prev, current) => {newArr.push(prev+current); return prev + current}, 0);
console.log(newArr);
。这会将子图放入./charts文件夹并创建./requirements.lock文件。然后即可安装。
答案 3 :(得分:1)
我遇到了这个错误。
我的解决方案是:
charts/
(目录)重命名为 subcharts/
chmod 755 subcharts/*
Heml 3 不喜欢我将本地依赖项放在 charts/
此外,Helm dep up 需要权限才能将本地依赖项从您的子图表目录移动到 tmpcharts/
等。
**
**
我是从@sgandon 和@Narayana 读到的:
Post about conditionally deploying helm charts
<块引用>os.Stat() 找不到文件夹的原因。这是 因为调用函数 downloadAll 正在更新期间将图表文件夹重命名为 tmpcharts 从而使我们的解压图表在这段时间内无法找到。
注意:
!!在 Helm 3 中,requirements.yaml 已弃用。 !!
您在 Parent/Main Charts.yaml 中添加依赖项。
dependencies:
- name: chart-you-want-to-deploy-1
repository: file://subcharts/chart-you-want-to-deploy-1
version: 0.0.1
condition: chart-you-want-to-deploy-1.enabled
- name: chart-you-want-to-deploy-2
repository: file://subcharts/chart-you-want-to-deploy-2
version: 0.0.1
condition: chart-you-want-to-deploy-2.enabled
将我的变量添加到 Parent/Main Values.yaml 中的全局变量
globals:
chart-you-want-to-deploy-1:
enabled: true
chart-you-want-to-deploy-2:
enabled: false
不要忘记将标志添加到您的命令中。
就我而言,我使用的是 CI/CD 工具 (GitLab)。
script:
- >
helm dep up Main-Chart-Name && \
helm upgrade --install \
--set chart-you-want-to-deploy-1.enabled=false \
--set chart-you-want-to-deploy-2.enabled=true \
RELEASE_NAME Main-Chart-Name
我的树
Main-Chart-Name
├── Chart.yaml
├── subcharts
│ ├── chart-you-want-to-deploy-1
│ │ ├── Chart.yaml
│ │ ├── charts
│ │ ├── templates
│ │ │ └── chart-you-want-to-deploy-1.yaml
│ │ └── values.yaml
│ └── chart-you-want-to-deploy-2
│ ├── Chart.yaml
│ ├── charts
│ ├── templates
│ │ └── chart-you-want-to-deploy-2.yaml
│ └── values.yaml
├── templates
│ ├── helpers.tpl
│ ├── my.yaml
│ ├── main.yaml
│ └── templates.yaml
└── values.yaml
答案 4 :(得分:0)
helm dep update <name_of_folder_where_chart.yaml_is>
一旦在下面运行,将显示输出:-
Saving 1 charts
Deleting outdated charts
现在,您可以使用
在本地运行图表helm template <path_to_chart.yaml>