Para compartir información con los pods tenemos varias formas de hacerlo como: configmaps, volúmenes, secrets o variables
Configmap
Creamos un configmap con el siguiente comando:
kubectl create configmap miconfigmap --from-literal=clave=valor
Ahora se lo pasamos a un pod como una variable. Para ello creamos una fichero llamado pod1.yaml con el siguiente contenido:
apiVersion: v1
kind: Pod
metadata:
name: pod1
spec:
containers:
- name: app-container
image: busybox:1.28.4
imagePullPolicy: IfNotPresent
command: ['sh', '-c', "echo $(MY_VAR) && sleep 3600"]
env:
- name: MY_VAR
valueFrom:
configMapKeyRef:
name: miconifmap
key: clave
Creamos el pod con el siguiente comando:
kubectl apply -f pod1.yaml
Ahora podemos revisar el log del contenedor, para comprobar que se ha ejecutado el comando que le hemos configurado y veremos el valor de la variable:
kubectl log configmap-pod
También podemos compartir el configmap montándolo en un volumen en el pod. Creamos el fichero configmap-volume.yaml con el siguiente contenido:
apiVersion: v1
kind: Pod
metadata:
name: configmap-volume
spec:
containers:
- name: app-container
image: busybox:1.28.4
imagePullPolicy: IfNotPresent
command: ['sh', '-c', "echo $(MY_VAR) && sleep 3600"]
volumeMounts:
- name: volumeconfigmap
mountPath: /etc/config
volumes:
- name: volumeconfigmap
configMap:
name: miconfigmap
Al crear este pod, tendremos un fichero en /etc/config con el nombre del configmap y el contenido configurado en el configmap.
Secret
Para crear el secret vamos a crear un fichero con el siguiente contenido:
apiVersion: v1 kind: Secret metadata: name: appsecret stringData: cert: value key: value
Aplicamos la configuración del fichero ejecutando:
kubectl apply -f "nombre del fichero"
Ahora creamos el siguiente fichero, en el que configuramos el secret como una variable:
apiVersion: v1
kind: Pod
metadata:
name: secret-pod
spec:
containers:
- name: app-container
image: busybox:1.28.4
imagePullPolicy: IfNotPresent
command: ['sh', '-c', "echo Hello, kubernetes! && sleep 3600"]
env:
- name: MY_CERT
valueFrom:
secretKeyRef:
name: appsecret
key: cert
Ahora podemos conectar por ssh al pod ejecutando:
kubectl exec -it secret-pod bash
y ver el valor de la variable:
echo $MY_CERT
También se puede pasar el secret como volumen, creando el siguiente fichero:
apiVersion: v1
kind: Pod
metadata:
name: secret-volume-pod
spec:
containers:
- name: app-container
image: busybox:1.28.4
imagePullPolicy: IfNotPresent
command: ['sh', '-c', "echo $(MY_VAR) && sleep 3600"]
volumeMounts:
- name: volumesecret
mountPath: /etc/config
volumes:
- name: volumesecret
secret:
secretName: appsecret
Se nos creará un fichero en /etc/config con el valor del secret.
Te recordamos que en Occentus Network somos Kubernetes Certified Service Provider (KCSP) y que gracias a esta certificación ofrecemos servicio de soporte oficial de Kubernetes, así como consultoría y formación a empresas que eligen Kubernetes.