3 votes

Ajout de tableaux comme variables d'environnement Kubernetes

Je travaille sur un projet Java Play, et dans ma application.conf J'ai mis en place un cluster Redis qui reçoit un ensemble de nœuds de serveurs Redis.

Maintenant, je veux injecter cette valeur dans le déploiement Kubernetes en tant que variable d'environnement et je ne trouve pas la bonne syntaxe pour le faire.

Mon actuel application.conf ressemble à quelque chose comme ça :

play.cache.redis {
  # enable cluster mode
  source: cluster

  # nodes are defined as a sequence of objects:
  cluster:  [
    {
      # required string, defining a host the node is running on
      host:        localhost
      # required integer, defining a port the node is running on
      port:        6379
      # optional string, defines a password to use
      password:    null
    }
  ]
}

Quelqu'un peut-il me dire comment passer le play.cache.redis.cluster à un déploiement Kubernetes pour qu'il reste comme ça ?

5voto

Alexandr Lurye Points 391

Vous pouvez injecter l'ensemble de votre application.conf avec un mécanisme de ConfigMaps :

apiVersion: v1
kind: ConfigMap
metatada:
  name: app-config
data:
  application.conf: |
    play.cache.redis {
      # enable cluster mode
      source: cluster
      # nodes are defined as a sequence of objects:
      cluster:  [
        {
          # required string, defining a host the node is running on
          host:        localhost
          # required integer, defining a port the node is running on
          port:        6379
          # optional string, defines a password to use
          password:    null
        }
      ]
    }

et le monter directement sur votre conteneur :

apiVersion: v1
kind: Pod
metadata:
  name: ....
spec:
  containers:
    - name: ...
      image: ...
      volumeMounts:
      - name: config-volume
        mountPath: /etc/config
  volumes:
    - name: config-volume
      configMap:
        name: app-config

L'application peut alors y accéder dans /etc/config/application.conf.

1voto

Nick Rak Points 1728

Vous pouvez définir n'importe quelle variable env dans un pod. Pour cela, vous devez mettre à jour votre section spec dans le déploiement :

Voici un exemple :

spec:
  containers:
  - name: container-name
    image: gcr.io/google-samples/node-hello:1.0
    env:
    - name: VAR_NAME
      value: "any var value"
    - name: VAR_NAME2
      value: "another value"

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