Je comprends que {{.Release.namespace}}
rendra l'espace de noms où l'application en cours d'installation par helm
. Dans ce cas, helm template
la commande la rendra sous forme de chaîne vide (car elle ne connaît pas encore l'espace de noms de la version).
Cependant, ce qui me surprend, c'est helm upgrade --install
commande (je n'ai pas essayé d'autres commandes telles que helm install
) le rend également vide dans certains cas.
Voici l'exemple de mon modèle de graphique de barre:
apiVersion: v1
kind: Service
metadata:
name: {{.Values.app.name}}-{{.Values.app.track}}-internal
namespace: {{.Release.namespace}}
annotations:
testAnnotate: "{{.Release.namespace}}"
spec:
ports:
- protocol: TCP
port: 80
targetPort: 8080
selector:
app: {{.Values.app.name}}
environment: {{.Values.app.env}}
track: {{.Values.app.track}}
type: ClusterIP
Après avoir appelé helm upgrade --install
sur ce modèle de graphique (et installé avec succès), j'essaie ensuite de voir la sortie de ma ressource
> kubectl get -o yaml svc Java-maven-app-stable-internal -n data-devops
apiVersion: v1
kind: Service
metadata:
annotations:
testAnnotate: ""
creationTimestamp: 2018-08-09T06:56:41Z
name: Java-maven-app-stable-internal
namespace: data-devops
resourceVersion: "62906341"
selfLink: /api/v1/namespaces/data-devops/services/Java-maven-app-stable-internal
uid: 5e888e6a-9ba1-11e8-912b-42010a9400fa
spec:
clusterIP: 10.32.76.208
ports:
- port: 80
protocol: TCP
targetPort: 8080
selector:
app: Java-maven-app
environment: stg
track: stable
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
Comme vous pouvez le voir, je mets {{.Release.namespace}}
sur 2 places:
metadata.namespace
champmetadata.annotations.testAnnotate
champ.Mais il ne rend l'espace de noms correct que sur metadata.namespace
champ. Une idée pourquoi?
La valeur générée .Release.Namespace
est sensible à la casse. La lettre N dans "namespace" doit être en majuscule.