A Java map is a object that maps key to value. The key has to be unique.
Environment Variables
- Environment variables can be directly added into Pod definition file under specs.env array
- But they will be limited to only the pod for which they are added
- For new Pods, the environment variables have to be added again
ConfigMaps
- ConfigMaps are a way of storing the data in key: value pair
- This data is then injected into Pods via the definition file
- The data injected can be created as environment variables in the pod
- Or the data is just injected as a file that then can be used by the pod
Create ConfigMaps
There are two ways to create the ConfigMaps like any other Kubernetes objects
- Imperative
- Declarative
- Note that in the declarative way there is no specs, we instead have data section
config-map
APP_COLOR: Blue
APP_ENV: Prod
config-map-creation-imperative
kubectl create configmap
-> Imperative way of creating configmap
<config-name> --from-literal=<key>=<value>
-> Add key value pairs by mentioning from-literal
kubectl create configmap
-> Imperative way of creating configmap
<config-name> --from-file=<path-to-file>
-> Add key value pairs by passing through a file by mentioning from-file
kubectl create configmap \
<config-name> --from-literal=APP_COLOR=Blue \
--from-literal=APP_ENV=Prod \
kubectl create configmap \
<config-name> --from-file=app_config.properties
config-map-creation-declarative.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
APP_COLOR=Blue
APP_ENV=Prod
kubectl create -f config-map-definition.yaml
-> Create the configmap
kubectl get configmaps
-> Get all the configmaps in the existing namespace
kubectl describe configmaps
-> Describe all the configmaps in the existing namespace
kubectl describe configmaps <config-map-name>
-> Describe the configmap <config-map-name> in the existing namespace
Add ConfigMaps to the Pods
- ConfigMaps can be added in variety of ways to the pods
- The entire ConfigMap references can be injected into the pod
- This can be seen from below spec.envFrom.configMapRef array
- Here we provide the name of the configMapRef
- Since this is an array, you can inject multiple configMaps
- Only a single value from ConfigMap can be injected
- This can be seen from spec.env array
- Here we provide the name of our variable
- Value is taken from a ConfigMap, with the name of the ConfigMap and the key name provided
- Since this is any array, you can inject multiple variables
- ConfigMap can be injected as a file by using volumes
- This can be seen from spec.volumes
- Name of the configMap that has to be injected into the Pod is provided
- ConfigMap is then mounted as a file on the pod
pod-definition.yaml
apiVersion: v1
kind: Pod
metadata:
name: my-color-webapp
spec:
containers:
- name: my-color-container
image: simple-webapp-color
ports:
- containerPort: 8080
envFrom:
- configMapRef:
name: app-config
env:
- name: APP_COLOR
valueFrom:
configMapKeyRef:
name: app-config
key: APP_COLOR
volumes:
- name: app-config-volume
configMap:
name: app-config
Comments
Post a Comment