🔹Table of Contents :
Introduction
Step-by-Step Guide: Working with ConfigMap
Using ConfigMap in a Pod
Real-Time Scenario: When to Use ConfigMap?
Key Benefits of ConfigMap
Summary of Commands
✅Introduction
What is ConfigMap in Kubernetes?
ConfigMap is a Kubernetes object used to store configuration data in key-value pairs.
It helps separate configuration details from the container image, making the application more portable.
Purpose: To provide configuration settings for applications running in containers, such as environment variables, command-line arguments, or configuration files.
Why Use ConfigMap?
Decoupling Configuration from Code: This allows you to modify configuration data without rebuilding the container image.
Dynamic Configuration Changes: Easily update configuration data without restarting the application.
Environment-Specific Configurations: Can manage different configurations for different environments (development, staging, production).
✅Step-by-Step Guide: Working with ConfigMap
Method 1: Creating a ConfigMap Using the kubectl
Command
Create a ConfigMap Using
kubectl
:You can create a ConfigMap directly from the command line.
Example: Create a ConfigMap named
my-config
with a key-value pair.
kubectl create configmap my-config --from-literal=app_name=MyApp
Verify the ConfigMap:
- Check if the ConfigMap has been created.
kubectl get configmap my-config
View the Contents of the ConfigMap:
- Display the details of the ConfigMap to ensure it contains the expected key-value pair.
kubectl describe configmap my-config
Method 2: Creating a ConfigMap Using a YAML File
Create a YAML File for the ConfigMap:
- Define the ConfigMap in a YAML file named
configmap.yaml
.
- Define the ConfigMap in a YAML file named
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config-yaml
data:
app_name: MyApp
environment: development
database_url: "mongodb://localhost:27017"
Apply the YAML File to Create the ConfigMap:
- Use the
kubectl apply
command to create the ConfigMap from the YAML file.
- Use the
kubectl apply -f configmap.yaml
Verify the ConfigMap Creation:
- Check the newly created ConfigMap.
kubectl get configmap my-config-yaml
Describe the ConfigMap to View Details:
- Get more information about the ConfigMap to see all key-value pairs.
kubectl describe configmap my-config-yaml
✅Using ConfigMap in a Pod
Create a Pod Definition Using the ConfigMap:
- Update your Pod's YAML file to use the ConfigMap as environment variables.
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx:1.23
env:
- name: APP_NAME
valueFrom:
configMapKeyRef:
name: my-config-yaml
key: app_name
restartPolicy: Never
Apply the Pod Definition:
- Deploy the Pod using the updated YAML file.
kubectl apply -f pod.yaml
Verify if the Pod Uses the ConfigMap:
- Check if the environment variable from the ConfigMap is used by the container.
kubectl exec -it my-pod -- env | grep APP_NAME
✅Real-Time Scenario: When to Use ConfigMap?
Scenario: Suppose you have a web application that connects to different databases for development, testing, and production. By using a ConfigMap, you can manage environment-specific database connection strings without changing the code.
Example: You can update the database connection string in the ConfigMap based on the environment, and the application will automatically use the updated configuration.
✅Key Benefits
Centralized Configuration Management: Easily manage application configuration across multiple environments.
Ease of Updates: Modify configurations dynamically without redeploying applications.
Environment Isolation: Configurations for different environments (dev, staging, prod) can be maintained separately.
✅Summary of Commands
Creating ConfigMap Using Command:
kubectl create configmap my-config --from-literal=app_name=MyApp
Creating ConfigMap Using YAML:
kubectl apply -f configmap.yaml
Viewing ConfigMap Details:
kubectl describe configmap my-config
Using ConfigMap in a Pod: Update the Pod's YAML to include environment variables from the ConfigMap.
🚀Thanks for joining me on Day 41! Let’s keep learning and growing together!
Happy Learning! 😊
#90DaysOfDevOps