In the previous post we’ve looked into Kubernetes Ingress – a very powerfull reverse proxy workload providing a very flexible routing into applications (Pods) hosted on the Kubernetes platform.
This time we’ll be talking about Pod’s ConfigMaps and Secrets. These two constructs allow us to store application configuration which is non-sensitive i.e. plain text (ConfigMap) and one that is meant to be secured (Secret).
More details: Kubernetes ConfigMaps and Kubernetes Secrets
Create ConfigMap and Secret
Let’s start with creating ConfigMap and Secret workloads. You can generally do this either by adopting Imperative or Declarative syntax with the kubectl create command.
More Details: kubectl create
Imperative
kubectl create cm [CONFIG MAP NAME]
kubectl create secret [SECRET NAME]
Declarative
kubectl apply -f [CONFIG MAP TEMPLATE].yaml
kubectl apply -f [SECRET TEMPLATE].yaml
[CONFIG MAP TEMPLATE].yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: [CONFIG MAP NAME]
data:
[KEY]: [VALUE]
[SECRET TEMPLATE].yaml
apiVersion: v1
kind: Secret
metadata:
name: [SECRET NAME]
type: Opaque
data:
[KEY]: [BASE64 encoded VALUE]
List ConfigMaps and Secrets
To find out what ConfigMaps or Secrets are running and in which Namespaces you’ll probably want to use some of these kubectl get po commands. It’s also possible to filter the queries on Pod attributes or fields.
More Details: kubectl get
List All ConfigMaps and Secrets in Namespace
kubectl get cm -n [NAMESPACE]
kubectl get secret -n [NAMESPACE]
List All ConfigMaps and Secrets in All Namespaces
kubectl get cm --all-namespaces
kubectl get secret --all-namespaces
List All ConfigMaps and Secrets with Labels
kubectl get cm --all-namespaces --show-labels
kubectl get secret --all-namespaces --show-labels
ConfigMap and Secret Details
These commands will allow you to look deeper into your chosen ConfigMap or Secret where you’ll find out contents of these resources.
More Details: kubectl describe
Get ConfigMap and Secret
kubectl get cm [CONFIG MAP NAME] -n [NAMESPACE]
kubectl get secret [SECRET NAME] -n [NAMESPACE]
Get ConfigMap and Secret – Wide Output
kubectl get cm [CONFIG MAP NAME] -n [NAMESPACE] -o wide
kubectl get secret [SECRET NAME] -n [NAMESPACE] -o wide
Get ConfigMap and Secret – YAML Output
kubectl get cm [CONFIG MAP NAME] -n [NAMESPACE] -o yaml
kubectl get secret [SECRET NAME] -n [NAMESPACE] -o yaml
Export ConfigMap and Secret – YAML Output to File
kubectl get cm [CONFIG MAP NAME] -n [NAMESPACE] -o yaml --export > [FILE NAME].yaml
kubectl get secret [SECRET NAME] -n [NAMESPACE] -o yaml --export > [FILE NAME].yaml
Describe ConfigMap and Secret
kubectl describe cm [CONFIG MAP NAME] -n [NAMESPACE]
kubectl describe secret [SECRET NAME] -n [NAMESPACE]
Patch ConfigMap and Secret
To modify an existing ConfigMap or Secret directly on the Kubernetes data plane use the kubectl patch command.
More Details: kubectl patch
Patch ConfigMap and Secret with bash
kubectl patch cm [CONFIG MAP NAME] -n [NAMESPACE] -p "$(cat [CONFIG MAP TEMPLATE].yaml)"
kubectl patch secret [SECRET NAME] -n [NAMESPACE] -p "$(cat [SECRET TEMPLATE].yaml)"
Patch ConfigMap and Secret with Powershell
kubectl patch cm [CONFIG MAP NAME] -n [NAMESPACE] -p $(Get-Content [CONFIG MAP TEMPLATE].yaml -Raw)
kubectl patch secret [SECRET NAME] -n [NAMESPACE] -p $(Get-Content [SECRET TEMPLATE].yaml -Raw)
Delete ConfigMap and Secret
Finally, to dispose of a ConfigMap or Secret simply use the kubectl delete command allowing you to target single resource or even filter on labels or namespaces.
More Details: kubectl delete
Imperative
Delete ConfigMap and Secret By Name
kubectl delete cm [CONFIG MAP NAME] -n [NAMESPACE]
kubectl delete secret [SECRET NAME] -n [NAMESPACE]
Delete ConfigMap and Secret By Label
kubectl delete cm -l name=[LABEL] -n [NAMESPACE]
kubectl delete secret -l name=[LABEL] -n [NAMESPACE]
Delete All ConfigMaps and Secrets in Namespace
kubectl delete cm -n [NAMESPACE] --all
kubectl delete secrets -n [NAMESPACE] --all
Declarative
kubectl delete -f [CONFIG MAP TEMPLATE].yaml
kubectl delete -f [SECRET TEMPLATE].yaml
<< Kubernetes Ingress | Kubernetes ConfigMaps and Secrets | Kubernetes Housekeeping >>