129 votes

Comment extraire des variables d'environnement avec des graphiques Helm

J'ai mon déploiement.fichier yaml dans le répertoire des modèles de Barre de graphiques avec plusieurs variables d'environnement pour le conteneur, je vais être en cours d'exécution à l'aide de la Barre.

Maintenant, je veux être en mesure de tirer les variables d'environnement localement quelle qu'en soit la machine, la barre est couru si je peux me cacher les secrets de cette façon.

Comment puis-je passer ce et barre saisir les variables d'environnement localement lorsque j'utilise la Barre pour lancer l'application?

Voici une partie de mon déploiement.fichier yaml

...
...
    spec:
      restartPolicy: Always
      containers:
        - name: sample-app
          image: "sample-app:latest"
          imagePullPolicy: Always
          env:          
            - name: "USERNAME"
              value: "app-username"
            - name: "PASSWORD"
              value: "28sin47dsk9ik"
...
...

Comment puis-je tirer la valeur de nom d'utilisateur et un MOT de passe local des variables d'environnement, quand je lance la barre?

Est-ce possible? Si oui, alors comment dois-je faire?

153voto

Maruf Tuhin Points 1605

Vous pouvez export de la variable et de l'utiliser lors de l'exécution d' helm install.

Avant cela, vous devez modifier votre graphique de sorte que la valeur peut être set lors de l'installation.

Sauter cette partie, si vous le savez déjà, la façon de configurer les champs de modèle.


Comme vous ne voulez pas exposer les données, il est donc préférable de l'avoir sauvé secrets de kubernetes.

Tout d'abord, ajoutez ces deux lignes dans votre Values le fichier, de sorte que ces deux valeurs peuvent être définies à partir de l'extérieur.

username: root
password: password

Maintenant, ajoutons une secret.yaml le fichier à l'intérieur de votre template le dossier. et, de copier ce bout de code dans ce fichier.

apiVersion: v1
kind: Secret
metadata:
  name: {{ .Release.Name }}-auth
data:
  password: {{ .Values.password | b64enc }}
  username: {{ .Values.username | b64enc }}

Maintenant modifier votre déploiement yaml modèle et de faire des changements en env section, comme ceci

...
...
    spec:
      restartPolicy: Always
      containers:
        - name: sample-app
          image: "sample-app:latest"
          imagePullPolicy: Always
          env:          
          - name: "USERNAME"
            valueFrom:
              secretKeyRef:
                key:  username
                name: {{ .Release.Name }}-auth
          - name: "PASSWORD"
            valueFrom:
              secretKeyRef:
                key:  password
                name: {{ .Release.Name }}-auth
...
...

Si vous avez modifié votre modèle correctement pour --setdrapeau, vous pouvez définir à l'aide de cette variable d'environnement.

$ export USERNAME=root-user

Maintenant utiliser cette variable lors de l'exécution de la barre d'installer,

$ helm install --set username=$USERNAME ./mychart

Si vous exécutez cette helm install en dry-run mode, vous pouvez vérifier les modifications,

$ helm install --dry-run --set username=$USERNAME --debug ./mychart
[debug] Created tunnel using local port: '44937'

[debug] SERVER: "127.0.0.1:44937"

[debug] Original chart version: ""
[debug] CHART PATH: /home/maruf/go/src/github.com/the-redback/kubernetes-yaml-drafts/helm-charts/mychart

NAME:   irreverant-meerkat
REVISION: 1
RELEASED: Fri Apr 20 03:29:11 2018
CHART: mychart-0.1.0
USER-SUPPLIED VALUES:
username: root-user

COMPUTED VALUES:
password: password
username: root-user

HOOKS:
MANIFEST:

---
# Source: mychart/templates/secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: irreverant-meerkat-auth
data:
  password: password
  username: root-user
---
# Source: mychart/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: irreverant-meerkat
  labels:
    app: irreverant-meerkat
spec:
  replicas: 1
  template:
    metadata:
      name: irreverant-meerkat
      labels:
        app: irreverant-meerkat
    spec:
      containers:
      - name: irreverant-meerkat
        image: alpine
        env:
        - name: "USERNAME"
          valueFrom:
            secretKeyRef:
              key:  username
              name: irreverant-meerkat-auth
        - name: "PASSWORD"
          valueFrom:
            secretKeyRef:
              key:  password
              name: irreverant-meerkat-auth

        imagePullPolicy: IfNotPresent
      restartPolicy: Always
  selector:
    matchLabels:
      app: irreverant-meerkat

Vous pouvez voir que les données de nom d'utilisateur dans le secret, a changé d' root-user.

J'ai ajouté cet exemple dans le dépôt github.

Il y a aussi des discussions en kubernetes/barre pensions à ce sujet. Vous pouvez voir cette question de savoir à propos de toutes les autres façons d'utiliser les variables d'environnement.

9voto

je suppose que la question est de savoir comment de recherche pour le ministère de la variable à l'intérieur de graphique en regardant les variables d'environnement elle-même et non par le passage de cette avec-ensemble.

par exemple: j'ai mis une clé "my_db_password" et que vous souhaitez modifier les valeurs en regardant la valeur de nva variable n'est pas prise en charge.

je ne suis pas très sûr de PASSER le modèle, mais je suppose que ce n'est désactivé que par ce qu'ils expliquent dans la barre de documentation. "Nous avons enlevé deux pour des raisons de sécurité: env et expandenv (ce qui aurait donné graphique auteurs de l'accès à la barre franche de l'environnement)." https://helm.sh/docs/developing_charts/#know-your-template-functions

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X