web-dev-qa-db-ja.com

Helm:名前のピリオドで値を上書きする方法

Jenkinsクラスターをプログラムでヘルムを使用して作成および破棄できるように、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-managerexternal-dnsnginx-ingressをインストールした後(今のところbashスクリプトを使用)、次のようにインストールします。

helm install --values helm/jenkins.yml stable/jenkins

私はletsencryptのドキュメントをまったく読むことができなかったので、テストの過程全体を通じて、実稼働用の割り当てを使用しました。 Ingresscertmanager.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

もちろん、フラグとして使用する値を追加することでこれを解決できますが、それほど明確ではありません。直接設定する方法はありますか?

10
pnovotnak

キーを引用符で囲み、ドットをエスケープする必要があります

helm install --values helm/jenkins.yml stable/jenkins --set Master.Ingress.Annotations."certmanager\.k8s\.io/cluster-issuer"=letsencrypt-staging
5
sk14j