ConfigMap & Secrets

ConfigMap & Secrets

Lesson Reference

  1. Create a ConfigMap.
    1. vi my-configmap.yml
      apiVersion: v1 kind: ConfigMap metadata: name: my-configmap data: key1: Hello, world! key2: | Test multiple lines more lines
      kubectl create -f my-configmap.yml
  1. View your ConfigMap data.
    1. kubectl describe configmap my-configmap
  1. Create a secret.
    1. Get two base64-encoded values.
      printf 'secret' | base64 printf 'anothersecret' | base64
      vi my-secret.yml
      Include your two base64-encoded values in the file.
      apiVersion: v1 kind: Secret metadata: name: my-secret type: Opaque data: secretkey1: <base64 String 1> secretkey2: <base64 String 2>
      kubectl create -f my-secret.yml
  1. Create a pod and supply configuration data using environment variables.
    1. vi env-pod.yml
      apiVersion: v1 kind: Pod metadata: name: env-pod spec: containers: - name: busybox image: busybox command: ['sh', '-c', 'echo "configmap: $CONFIGMAPVAR secret: $SECRETVAR"'] env: - name: CONFIGMAPVAR valueFrom: configMapKeyRef: name: my-configmap key: key1 - name: SECRETVAR valueFrom: secretKeyRef: name: my-secret key: secretkey1
      kubectl create -f env-pod.yml
  1. Check the log for the pod to see your configuration values!
    1. kubectl logs env-pod
  1. Create a pod and supply configuration data using volumes.
    1. vi volume-pod.yml
      apiVersion: v1 kind: Pod metadata: name: volume-pod spec: containers: - name: busybox image: busybox command: ['sh', '-c', 'while true; do sleep 3600; done'] volumeMounts: - name: configmap-volume mountPath: /etc/config/configmap - name: secret-volume mountPath: /etc/config/secret volumes: - name: configmap-volume configMap: name: my-configmap - name: secret-volume secret: secretName: my-secret
      kubectl create -f volume-pod.yml
  1. Use kubectl exec to navigate inside the pod and see your mounted config data files.
    1. kubectl exec volume-pod -- ls /etc/config/configmap kubectl exec volume-pod -- cat /etc/config/configmap/key1 kubectl exec volume-pod -- cat /etc/config/configmap/key2 kubectl exec volume-pod -- ls /etc/config/secret kubectl exec volume-pod -- cat /etc/config/secret/secretkey1 kubectl exec volume-pod -- cat /etc/config/secret/secretkey2