标签: kubernetes-helm

如何使用helm设置多个值?

使用helminstall可以在安装图表时设置值,如:

helm install --set favoriteDrink=slurm ./mychart
Run Code Online (Sandbox Code Playgroud)

现在想要设置如下值:

helm install --set aws.subnets="subnet-123456, subnet-654321" ./mychart
Run Code Online (Sandbox Code Playgroud)

但失败了:

Error: failed parsing --set data: key " subnet-654321" has no value
Run Code Online (Sandbox Code Playgroud)

似乎helm--set认识逗号,,并检查下一个字符串作为重点.所以在这种情况下设置这样的字符串时不能使用?


以这种方式测试

helm install charts/mychart \
    --set aws.subnets={subnet-123456,subnet-654321}
Run Code Online (Sandbox Code Playgroud)

得到错误:

Error: This command needs 1 argument: chart name
Run Code Online (Sandbox Code Playgroud)

这种方式有效

helm install charts/mychart \
    --set aws.subnets="subnet-123456\,subnet-654321"
Run Code Online (Sandbox Code Playgroud)

参考

https://github.com/kubernetes/helm/blob/master/docs/using_helm.md#the-format-and-limitations-of---set

string shell command-line-interface kubernetes kubernetes-helm

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

如何安装特定的图表版本

我正在尝试安装以前版本的Prometheus,即版本6.7.4:

helm install -f stable/prometheus/values.yaml prometheus --name stable/prometheus --namespace prometheus --version 6.7.4
Run Code Online (Sandbox Code Playgroud)

但是它会安装最新版本,prometheus-6.8.0:

$ helm ls
NAME        REVISION    UPDATED                     STATUS      CHART               NAMESPACE 
prometheus  1           Fri Jul  6 01:46:42 2018    DEPLOYED    prometheus-6.8.0    prometheus
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

kubernetes kubernetes-helm

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

Helm回滚到之前的版本

我正在寻找一种方法将helm版本回滚到其先前版本,而不将目标版本指定为数字.

helm rollback <RELEASE> ~1(像git reset HEAD~1)这样的东西会很好.

kubernetes kubernetes-helm

14
推荐指数
5
解决办法
9515
查看次数

如何最好地说明舵图中需要一个值?

我现在这样做:

value: {{ required "A valid .Values.foo entry required!" .Values.foo }}
Run Code Online (Sandbox Code Playgroud)

但是在我看来,为模板中的所有必需值提供相同的消息很麻烦,而且会使模板混乱。

有没有更好的方法可以在模板之外定义它,或者在模板本身内定义更简洁的方法?

kubernetes-helm

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

Helm - values.yaml 中的模板变量

我正在尝试将 values.yaml 中地图中的变量模板化到我最终的 Kubernetes ConfigMap YAML 中。

我已经通读了https://github.com/helm/helm/issues/2492https://helm.sh/docs/chart_template_guide/但似乎找不到答案。

在某些情况下,这大致是我想要做的:

值.yaml

config:
  key1: value
  key2: value-{{ .Release.Name }}
Run Code Online (Sandbox Code Playgroud)

配置映射文件

kind: ConfigMap
data:
  config-file: |
    {{- range $key, $value := .Values.config }}
    {{ $key }} = {{ $value }}
    {{- end }}
Run Code Online (Sandbox Code Playgroud)

所需的输出是:

掌舵模板 --name v1 mychart/

kind: ConfigMap
data:
  config-file: |
    key1 = value
    key2 = value-v1
Run Code Online (Sandbox Code Playgroud)

我使用模板函数和流水线尝试了一些变体,但无济于事:

{{ $key }} = {{ tpl $value . }}
{{ $key }} = {{ $value | tpl . }} …
Run Code Online (Sandbox Code Playgroud)

templating kubernetes kubernetes-helm

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

如何将 k8s yaml 转换为 helm chart

现在我正在使用 yaml 文件在 k8s 上部署应用程序。

像下面一张:

apiVersion: v1
kind: Service
metadata:
  name: serviceA
  namespace: flow
spec:
  ports:
  - port: 8080
    targetPort: 8080
  selector:
    app: serviceA
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: serviceA-ingress
  namespace: flow
  annotations:
    nginx.ingress.kubernetes.io/use-regex: "true"
    kubernetes.io/ingress.class: nginx
    certmanager.k8s.io/cluster-issuer: letsencrypt-prod
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  tls:
  - hosts:
    - serviceA.xyz.com
    secretName: letsencrypt-prod
  rules:
  - host: serviceA.xyz.com
    http:
      paths:
      - path: /
        backend:
          serviceName: serviceA
          servicePort: 8080
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: serviceA-config
  namespace: flow
data:
  application-dev.properties: |
    spring.application.name=serviceA-main …
Run Code Online (Sandbox Code Playgroud)

yaml kubernetes kubernetes-helm

14
推荐指数
2
解决办法
7209
查看次数

Helm 条件模板

我发现我们可以创建子图表并有条件地包含它们,如下所述:Helm conditionally install subchart

我只有一个模板,我想有条件地将其包含在我的图表中,但我在文档中找不到任何内容。有这样的功能吗?

kubernetes kubernetes-helm

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

错误:Kubernetes 集群无法访问:获取“http://localhost:8080/version?timeout=32s”:dial tcp 127.0.0.1:8080:connect:连接被拒绝

我正在尝试将我的应用程序部署到 Rancher 管理的 kubernetes 集群 RKE 中。我已经使用 auto devops 在 gitlab 中创建了管道。但是当掌舵图尝试部署时,我收到此错误。 错误:Kubernetes 集群无法访问:获取“http://localhost:8080/version?timeout=32s”:dial tcp 127.0.0.1:8080:connect:连接被拒绝

下面是我的部署脚本:

deploy:
  stage: deploy
  image: cdrx/rancher-gitlab-deploy
  only:
    - master
  script:
    - apk --no-cache add curl
    - curl -L https://get.helm.sh/helm-v3.3.0-rc.1-linux-amd64.tar.gz > helm.tar.gz
    - tar -zxvf helm.tar.gz
    - mv linux-amd64/helm /usr/local/bin/helm
    - helm install mychart ./mychart
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗

kubernetes kubernetes-helm rancher-rke

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

Helm _helpers.tpl:在其他模板定义中调用已定义的模板

Helm _helpers.tpl?

Helm允许在Kubernetes的资源文件中使用Go模板.

名为的文件_helpers.tpl通常用于使用以下语法定义Go模板助手:

{{- define "yourFnName" -}}
{{- printf "%s-%s" .Values.name .Values.version | trunc 63 -}}
{{- end -}}
Run Code Online (Sandbox Code Playgroud)

然后您可以在*.yaml资源文件中使用它,如下所示:

{{ template "yourFnName" . }}
Run Code Online (Sandbox Code Playgroud)

问题

如何在其他帮助程序定义中使用我定义的帮助程序?

例如,如果我有一个应用程序名称的帮助程序,并希望在定义中使用它来确定入口主机名?

我尝试过几种不同的方式在其他定义中调用助手.鉴于此基本辅助功能:

{{- define "host" -}}
{{- printf "%.example.com" <Somehow get result of "name" helper here> -}}
{{- end -}}
Run Code Online (Sandbox Code Playgroud)

我尝试过以下方法:

{{- printf "%.example.com" {{ template "name" . }} -}}
{{- printf "%.example.com" {{- template "name" . -}} -}}
{{- printf "%.example.com" ( template "name" . …
Run Code Online (Sandbox Code Playgroud)

templates go go-templates kubernetes kubernetes-helm

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

我们可以在Helm yaml文件中使用OR运算符吗?

我可以在Helm yamls中做这样的事情:

{{- if eq .Values.isCar true }} OR {{- if eq .Values.isBus true }}
# do something
{{- end }}
Run Code Online (Sandbox Code Playgroud)

我知道如果检查我们可以做一个.但是我如何检查多种情况?是否有一些运算符等效于OR和AND?

kubernetes-helm

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