标签: kubernetes-helm

Helm 依赖条件

有没有办法根据变量的存在性在 Chart.yaml 文件中设置条件?SERVICE_A_URL我想在未设置变量时安装依赖项。我尝试了这些,但 helm 总是尝试安装依赖项。

condition: "not SERVICE_A_URL"
condition: "not defined SERVICE_A_URL"
Run Code Online (Sandbox Code Playgroud)

谢谢你!

dependencies kubernetes kubernetes-helm

1
推荐指数
1
解决办法
1万
查看次数

在 configmap 更改时触发 pod 重新启动

我有一个定义如下的 configmap 文件

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-dashboard-cm-conf
  namespace: {{ .Release.Namespace }}
data:
{{ (tpl (.Files.Glob "conf/*").AsConfig . ) | indent 2 }}
Run Code Online (Sandbox Code Playgroud)

正如您在上面看到的,它占用了“conf”文件夹的内容作为数据。一切正常,但是当我尝试使用“部署文件中的以下行”实施“注释”以触发“POD 重新启动”时,会观察到问题。

      annotations:
        checksum/config-map: {{ include (print .Template.BasePath "/dashboard-conf-map.yaml") . | sha256sum }}

Run Code Online (Sandbox Code Playgroud)

即使“conf”文件夹的内容发生更改并且执行“helm 升级”,POD 也不会重新启动。

如果我使用一个简单的配置映射,其数据定义如下,参数的更改和“helm 升级”确实会导致 POD 重新启动

data:
  parameter1: testparam1
  parameter2: testparam2
Run Code Online (Sandbox Code Playgroud)

我在这里有以下问题

  1. 有没有办法对文件夹执行校验和。

  2. 有没有办法在 configmap.txt 中获取像下面这样的 linux-command 的输出?

find dashboard/conf/ -type f -exec md5sum {} \; |md5sum

  1. 我们可以对非 YAML 文件执行校验和吗?
      annotations:
        checksum: {{ include (print .Template.BasePath "/logback-spring.xml") . | …
Run Code Online (Sandbox Code Playgroud)

kubernetes-helm configmap

1
推荐指数
1
解决办法
5365
查看次数

具有生成键列表条件的 Helm 范围

给定以下值.yaml

elements:
  first:
    enabled: true
    url: first.url
  second:
    enabled: flase
    url: second.url
  third:
    enabled: true
    url: third.url
Run Code Online (Sandbox Code Playgroud)

获得以下结果的好方法是什么:

list_of_elements=first,third
Run Code Online (Sandbox Code Playgroud)

结果列表只需包含已启用的元素。该列表必须是单行逗号分隔的项目。

yaml kubernetes kubernetes-helm

1
推荐指数
1
解决办法
2868
查看次数

是否可以将舵图配置为基于另一个值动态使用一个值?

有没有办法使用 helm 逻辑来分析 Kubernetes 版本,即 Capability.KubeVersion,然后从 Kubernetes 版本到值的映射中动态选择一个值,例如

kubernetesVersionCompatibility:
    1.15:
       insertValue: foo
    1.18:
       insertValue: bar
Run Code Online (Sandbox Code Playgroud)

kubernetes-helm

1
推荐指数
1
解决办法
7087
查看次数

在 Helm 中公开卷,就像在 docker 中一样

我正在创建一个使用 helm(v3.3.0) + k3s 的应用程序。容器中的程序使用不同的配置文件。到目前为止,只有很少的配置文件(我在构建映像之前手动添加的),但我想添加在容器运行时动态添加它们的可能性,并且在容器/pod 死亡后不会丢失它们。在 docker 中,我会通过公开这样的文件夹来做到这一点:

docker run [image] -v /host/path:/container/path

掌舵有等效的吗?如果不是,您建议如何在不停止使用 helm/k3s 的情况下解决这个问题?

docker kubernetes kubernetes-helm k3s

1
推荐指数
1
解决办法
3579
查看次数

如何在 helm3 图表中设置字段应用程序版本?

我使用 helm 在 k8s 中升级了 spring 应用程序。我有默认图表并使用命令

upgrade my-app my-app-chart --atomic --set image.tag=123
Run Code Online (Sandbox Code Playgroud)

在 dir my-app-chart 中我有文件 Chart.yaml

apiVersion: v1
name: my-app-chart
description: A Helm chart for spring application my-app-chart
version: "1"
appVersion: "{{ .Values.image.tag }}"
Run Code Online (Sandbox Code Playgroud)

我希望 helm 评估字段 appVersion 并且在 helm 历史记录中我看到 123,但现在我看到

C:\git\ci\top-ci-example-project-multi-module>helm history -n top-ci my-app
REVISION        UPDATED                         STATUS          CHART                  APP VERSION             DESCRIPTION

150             Wed Nov  3 00:30:09 2021        superseded      my-app-chart-0.1.0     0.1.0                   Rollback to 148

151             Wed Nov  3 00:38:38 2021        failed          my-app-chart-1         {{ .Values.image.tag }} Upgrade …
Run Code Online (Sandbox Code Playgroud)

kubernetes-helm helm3

1
推荐指数
1
解决办法
2万
查看次数

如何通过 Helm Chart 将字符串列表(切片)呈现为 yaml 文件中的列表

我有一个字符串数据列表或(切片),例如[string1, string2, string3]。我想在 yaml 文件中以列表方式呈现它

- string1
- string2
- string3
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

我努力了

{{- range $val := $list }}
  - {{ $val }}
{{- end }}
Run Code Online (Sandbox Code Playgroud)

但它将以下内容呈现为多行字符串

- |-
   - string1
   - string2
   - string2
Run Code Online (Sandbox Code Playgroud)

任何想法?先感谢您

go-templates kubernetes-helm

1
推荐指数
1
解决办法
6881
查看次数

我在 helm 中安装 prometheus Operator 时收到此错误

此图表已弃用错误:安装失败:无法安装 CRD crds/crd-alertmanager.yaml:无法识别“”:版本“apiextensions.k8s.io/v1beta1”中的类型“CustomResourceDefinition”不匹配

kubernetes-helm prometheus-alertmanager helm3

1
推荐指数
1
解决办法
6912
查看次数

有没有办法指定在 helm 图表中使用哪个值文件

在我们的舵图中,每个环境都有一个值文件,例如

app-helm-chart:
  dev-values.yaml
  test-values.yaml
  Chart.yaml
  templates
    deployment.yaml
    service.yaml
    ingress.yaml
  Readme.md
Run Code Online (Sandbox Code Playgroud)

我们已经使用 helm 包打包了 helm 图表,然后尝试从我们的 helm 存储库安装它。

有没有办法指定使用包内的 dev-values 文件作为安装命令的一部分?

如果可能的话,尝试将值和模板全部打包和版本化到一个地方。

谢谢

kubernetes kubernetes-helm helm3

1
推荐指数
1
解决办法
1万
查看次数

无法将 dict 传递到 tpl 函数(实际上除了 <dot>')

我是 helm/go 模板的新手,似乎我仍然不明白上下文是如何工作的。有人可以解释一下,问题出在哪里以及为什么 dict 不能这样使用?

我的文件中有这个模板stubs/.test.yaml(我想将其与 tpl 函数一起使用):

test: abc
test2: {{.Values.key}}
Run Code Online (Sandbox Code Playgroud)

在values.yaml中只有:

key: value
Run Code Online (Sandbox Code Playgroud)

我包括这样的模板:

{{ tpl (.Files.Get "stubs/.test.yaml" ) (.) }}
Run Code Online (Sandbox Code Playgroud)

产生:

test: abc
test2: value
Run Code Online (Sandbox Code Playgroud)

因此,我从 Stubs/.test.yaml 加载文件,并将其传递给当前(根)上下文,然后.Values.key找到并替换该文件。正如预期的那样。

现在让我们重新定义stubs/.test.yaml为:

test: abc
test2: {{.key}}
Run Code Online (Sandbox Code Playgroud)

并在替换模板时传递字典作为上下文,如下所示:

{{ tpl (.Files.Get "stubs/.test.yaml" ) (dict "key" .Values.key) }}
Run Code Online (Sandbox Code Playgroud)

所以我期望得到相同的结果,因为我传递了 dict 代替根上下文, dict 有一个名为 的值key,其值取自.Values.key,该值在该模板中被正确引用。但我得到了:

error calling tpl: cannot retrieve Template.Basepath from values inside tpl function: test: abc
test2: {{.key}}: "BasePath" is not …
Run Code Online (Sandbox Code Playgroud)

kubernetes-helm

1
推荐指数
1
解决办法
1818
查看次数