使用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)
string shell command-line-interface kubernetes kubernetes-helm
我正在尝试安装以前版本的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)
我究竟做错了什么?
我正在寻找一种方法将helm版本回滚到其先前版本,而不将目标版本指定为数字.
像helm rollback <RELEASE> ~1(像git reset HEAD~1)这样的东西会很好.
我现在这样做:
value: {{ required "A valid .Values.foo entry required!" .Values.foo }}
Run Code Online (Sandbox Code Playgroud)
但是在我看来,为模板中的所有必需值提供相同的消息很麻烦,而且会使模板混乱。
有没有更好的方法可以在模板之外定义它,或者在模板本身内定义更简洁的方法?
我正在尝试将 values.yaml 中地图中的变量模板化到我最终的 Kubernetes ConfigMap YAML 中。
我已经通读了https://github.com/helm/helm/issues/2492和https://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) 现在我正在使用 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) 我发现我们可以创建子图表并有条件地包含它们,如下所述:Helm conditionally install subchart
我只有一个模板,我想有条件地将其包含在我的图表中,但我在文档中找不到任何内容。有这样的功能吗?
我正在尝试将我的应用程序部署到 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 ./mychartRun Code Online (Sandbox Code Playgroud)
有人可以帮我解决这个问题吗
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) 我可以在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 ×10
kubernetes ×8
go ×1
go-templates ×1
rancher-rke ×1
shell ×1
string ×1
templates ×1
templating ×1
yaml ×1