web-dev-qa-db-fra.com

Helm: Comment remplacer la valeur avec des périodes dans le nom

J'essaie de configurer le script de Jenkins pour pouvoir créer et démonter des clusters Jenkins par programme avec Helm. J'ai rencontré un problème gênant où je ne peux pas définir de clé avec des points dans le nom. Mon fichier helm values.yaml ressemble à ceci:

---
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

Après l'installation de cert-manager, external-dns, nginx-ingress (pour l'instant via un script bash) Je l'installe comme ceci:

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

Je n'ai pas du tout lu les documents letsencrypt, donc tout au long du test, j'ai utilisé mon quota de production. Je veux pouvoir ajouter une annotation au Ingress: certmanager.k8s.io/cluster-issuer: letsencrypt-staging pour que je puisse continuer les tests (et définir cela par défaut à l'avenir, en remplaçant lorsque je serai prêt pour la production).

Le problème est ... Je ne peux pas comprendre comment passer cela via le --set flag, car il y a des points dans le nom de la clé. J'ai essayé:

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

et

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

Je peux bien sûr résoudre ce problème en ajoutant une valeur que j'utilise comme indicateur, mais c'est moins explicite. Y a-t-il un moyen de le régler directement?

10
pnovotnak

Vous devez joindre la clé avec des guillemets, puis échapper aux points

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