7.1 Variables de entorno

Para añadir alguna configuración específica a la hora de lanzar un contenedor, se usan variables de entorno del contenedor cuyos valores se especifican al crear el contenedor para realizar una configuración concreta del mismo.

Por ejemplo, si estudiamos la documentación de la imagen mariadb en Docker Hub, podemos comprobar que podemos definir un conjunto de variables de entorno como MYSQL_ROOT_PASSWORD, MYSQL_DATABASE, MYSQL_USER, MYSQL_PASSWORD, etc., que nos permitirán configurar de alguna forma determinada nuestro servidor de base de datos (indicando la contraseña del usuario root, creando una determinada base de datos o creando un usuario con una contraseña por ejemplo.

De la misma manera, al especificar los contenedores que contendrán los Pods que se van a crear desde un Deployment, también se pondrán inicializar las variables de entorno necesarias.

Configuración de aplicaciones usando variables de entorno

Vamos a hacer un despliegue de un servidor de base de datos mariadb. Si volvemos a estudiar la documentación de esta imagen en Docker Hub comprobamos que obligatoriamente tenemos que indicar la contraseña del usuario root inicializando la variable de entorno MYSQL_ROOT_PASSWORD. El fichero de despliegue que vamos a usar es mariadb-deployment-env.yaml, y vemos el fragmento del fichero donde se define el contenedor:

...
    spec:
      containers:
        - name: contenedor-mariadb
          image: mariadb
          ports:
            - containerPort: 3306
              name: db-port
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: my-password

En el apartado containers hemos incluido la sección env donde vamos indicando, como una lista, el nombre de la variable (name) y su valor (value). En este caso hemos indicado la contraseña my-password.

Vamos a comprobar si realmente se ha creado el servidor de base de datos con esa contraseña del root:

kubectl apply -f mariadb-deploymen-env.yaml

kubectl get all
...
NAME                                 READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/mariadb-deployment   1/1     1            1           5s

kubectl exec -it deployment.apps/mariadb-deployment -- mysql -u root -p
Enter password:
...
MariaDB [(none)]>