Helm:如何用名称中的句点覆盖值
Helm: How to Override Value with Periods in Name
我正在尝试编写 Jenkins 的设置脚本,以便我可以使用 helm 以编程方式创建和拆除 Jenkins 集群。我遇到了一个烦人的障碍,我无法在名称中设置带点的键。我的 helm values.yaml 文件如下所示:
---
rbac:
install: true
Master:
HostName: jenkins.mycompany.com
ServiceType: ClusterIP
ImageTag: lts
InstallPlugins:
- kubernetes
- workflow-aggregator
- workflow-job
- credentials-binding
- git
- blueocean
- github
- github-oauth
ScriptApproval:
- "method groovy.json.JsonSlurperClassic parseText java.lang.String"
- "new groovy.json.JsonSlurperClassic"
- "staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods leftShift java.util.Map java.util.Map"
- "staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods split java.lang.String"
- "method java.util.Collection toArray"
- "staticMethod org.kohsuke.groovy.sandbox.impl.Checker checkedCall java.lang.Object boolean boolean java.lang.String java.lang.Object[]"
- "staticMethod org.kohsuke.groovy.sandbox.impl.Checker checkedGetProperty java.lang.Object boolean boolean java.lang.Object"
Ingress:
Annotations:
kubernetes.io/ingress.class: nginx
kubernetes.io/tls-acme: "true"
TLS:
- secretName: jenkins-mycompany-com
hosts:
- jenkins.mycompany.com
Memory: "2Gi"
# This breaks the init container
# RunAsUser: 1000
# FSGroup: 1000
Agent:
Enabled: false
ImageTag: latest
安装 cert-manager
、external-dns
、nginx-ingress
后(目前通过 bash 脚本)我这样安装:
helm install --values helm/jenkins.yml stable/jenkins
我根本没有阅读 letsencrypt 文档,所以在整个测试过程中我使用了我的生产配额。我希望能够向 Ingress
: certmanager.k8s.io/cluster-issuer: letsencrypt-staging
添加注释,以便我可以继续测试(并将其设置为将来的默认值,在我准备好生产时覆盖)。
问题是...我不知道如何通过 --set
标志传递它,因为键名中有句点。我试过:
helm install --values helm/jenkins.yml stable/jenkins --set Master.Ingress.Annotations.certmanager.k8s.io/cluster-issuer=letsencrypt-staging
和
helm install --values helm/jenkins.yml stable/jenkins --set Master.Ingress.Annotations.certmanager\.k8s\.io/cluster-issuer=letsencrypt-staging
我当然可以通过添加一个我用作标志的值来解决这个问题,但它不太明确。有什么办法可以直接设置吗?
您需要用引号将密钥括起来,然后转义点
helm install --values helm/jenkins.yml stable/jenkins --set Master.Ingress.Annotations."certmanager\.k8s\.io/cluster-issuer"=letsencrypt-staging
使用\
转义键中的点。需要引号以防止 shell 解释 \
字符。
helm install --values helm/jenkins.yml stable/jenkins --set 'Master.Ingress.Annotations.certmanager\.k8s\.io/cluster-issuer=letsencrypt-staging'
Helm 要求转义这些字符:.
[
,
=
来源:https://paul-boone.medium.com/helm-chart-install-advanced-usage-of-the-set-argument-3e214b69c87a
我正在尝试编写 Jenkins 的设置脚本,以便我可以使用 helm 以编程方式创建和拆除 Jenkins 集群。我遇到了一个烦人的障碍,我无法在名称中设置带点的键。我的 helm values.yaml 文件如下所示:
---
rbac:
install: true
Master:
HostName: jenkins.mycompany.com
ServiceType: ClusterIP
ImageTag: lts
InstallPlugins:
- kubernetes
- workflow-aggregator
- workflow-job
- credentials-binding
- git
- blueocean
- github
- github-oauth
ScriptApproval:
- "method groovy.json.JsonSlurperClassic parseText java.lang.String"
- "new groovy.json.JsonSlurperClassic"
- "staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods leftShift java.util.Map java.util.Map"
- "staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods split java.lang.String"
- "method java.util.Collection toArray"
- "staticMethod org.kohsuke.groovy.sandbox.impl.Checker checkedCall java.lang.Object boolean boolean java.lang.String java.lang.Object[]"
- "staticMethod org.kohsuke.groovy.sandbox.impl.Checker checkedGetProperty java.lang.Object boolean boolean java.lang.Object"
Ingress:
Annotations:
kubernetes.io/ingress.class: nginx
kubernetes.io/tls-acme: "true"
TLS:
- secretName: jenkins-mycompany-com
hosts:
- jenkins.mycompany.com
Memory: "2Gi"
# This breaks the init container
# RunAsUser: 1000
# FSGroup: 1000
Agent:
Enabled: false
ImageTag: latest
安装 cert-manager
、external-dns
、nginx-ingress
后(目前通过 bash 脚本)我这样安装:
helm install --values helm/jenkins.yml stable/jenkins
我根本没有阅读 letsencrypt 文档,所以在整个测试过程中我使用了我的生产配额。我希望能够向 Ingress
: certmanager.k8s.io/cluster-issuer: letsencrypt-staging
添加注释,以便我可以继续测试(并将其设置为将来的默认值,在我准备好生产时覆盖)。
问题是...我不知道如何通过 --set
标志传递它,因为键名中有句点。我试过:
helm install --values helm/jenkins.yml stable/jenkins --set Master.Ingress.Annotations.certmanager.k8s.io/cluster-issuer=letsencrypt-staging
和
helm install --values helm/jenkins.yml stable/jenkins --set Master.Ingress.Annotations.certmanager\.k8s\.io/cluster-issuer=letsencrypt-staging
我当然可以通过添加一个我用作标志的值来解决这个问题,但它不太明确。有什么办法可以直接设置吗?
您需要用引号将密钥括起来,然后转义点
helm install --values helm/jenkins.yml stable/jenkins --set Master.Ingress.Annotations."certmanager\.k8s\.io/cluster-issuer"=letsencrypt-staging
使用\
转义键中的点。需要引号以防止 shell 解释 \
字符。
helm install --values helm/jenkins.yml stable/jenkins --set 'Master.Ingress.Annotations.certmanager\.k8s\.io/cluster-issuer=letsencrypt-staging'
Helm 要求转义这些字符:.
[
,
=
来源:https://paul-boone.medium.com/helm-chart-install-advanced-usage-of-the-set-argument-3e214b69c87a