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.