首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Helm:如何在名称中用句点重写值

Helm:如何在名称中用句点重写值
EN

Stack Overflow用户
提问于 2018-03-28 05:34:39
回答 2查看 11.5K关注 0票数 22

我正在尝试为Jenkins的设置编写脚本,这样我就可以使用helm以编程方式创建和拆卸Jenkins集群。我遇到了一个恼人的问题,我无法设置名称中带有圆点的关键点。我的helm values.yaml文件如下所示:

代码语言:javascript
复制
---
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-managerexternal-dnsnginx-ingress之后(目前通过bash脚本),我安装如下:

代码语言:javascript
复制
helm install --values helm/jenkins.yml stable/jenkins

我根本没有阅读letsencrypt文档,所以在整个测试过程中,我使用了我的生产配额。我希望能够向Ingresscertmanager.k8s.io/cluster-issuer: letsencrypt-staging添加一个注释,这样我就可以继续测试(并在将来将其设置为默认值,在我准备好投入生产时覆盖它)。

问题是..。我不知道如何通过--set标志传递它,因为键名中有句点。我试过了:

代码语言:javascript
复制
helm install --values helm/jenkins.yml stable/jenkins --set Master.Ingress.Annotations.certmanager.k8s.io/cluster-issuer=letsencrypt-staging

代码语言:javascript
复制
helm install --values helm/jenkins.yml stable/jenkins --set Master.Ingress.Annotations.certmanager\.k8s\.io/cluster-issuer=letsencrypt-staging

当然,我可以通过添加一个用作标志的值来解决这个问题,但它不太明确。有什么方法可以直接设置吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-18 03:57:23

您需要用引号将键括起来,然后转义这些点

代码语言:javascript
复制
helm install --values helm/jenkins.yml stable/jenkins --set Master.Ingress.Annotations."certmanager\.k8s\.io/cluster-issuer"=letsencrypt-staging
票数 56
EN

Stack Overflow用户

发布于 2021-02-04 00:27:03

使用\对键中的点进行转义。需要使用引号来防止shell解释\字符。

代码语言:javascript
复制
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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49522776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档