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