Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Kubernetes - Using ConfigMaps

Core Concepts in Kubernetes

Kubernetes is an open-source platform designed to automate deploying, scaling, and operating application containers. This guide provides an understanding of ConfigMaps, one of the core concepts in Kubernetes.

Key Points:

  • ConfigMaps are used to store configuration data as key-value pairs.
  • They provide a way to decouple environment-specific configurations from container images.
  • ConfigMaps can be consumed by pods as environment variables, command-line arguments, or configuration files.

What is a ConfigMap?

A ConfigMap is an API object used to store non-confidential data in key-value pairs. ConfigMaps allow you to separate configuration artifacts from image content to keep containerized applications portable.

# Example of a ConfigMap definition
apiVersion: v1
kind: ConfigMap
metadata:
  name: example-config
data:
  database_url: "mongodb://localhost:27017"
  feature_flag: "true"
                

Creating and Managing ConfigMaps

Here are some basic commands to create and manage ConfigMaps:

# Create a ConfigMap from a literal value
kubectl create configmap example-config --from-literal=key1=value1 --from-literal=key2=value2

# Create a ConfigMap from a file
kubectl create configmap example-config --from-file=path/to/config.file

# View details of a ConfigMap
kubectl describe configmap example-config

# Delete a ConfigMap
kubectl delete configmap example-config
                

Using ConfigMaps in Pods

ConfigMaps can be consumed by pods in different ways:

As Environment Variables

# Pod definition using ConfigMap as environment variables
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mycontainer
    image: nginx
    env:
    - name: DATABASE_URL
      valueFrom:
        configMapKeyRef:
          name: example-config
          key: database_url
                

As Command-Line Arguments

# Pod definition using ConfigMap as command-line arguments
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mycontainer
    image: nginx
    args:
    - --database-url=$(DATABASE_URL)
    env:
    - name: DATABASE_URL
      valueFrom:
        configMapKeyRef:
          name: example-config
          key: database_url
                

As Configuration Files

# Pod definition using ConfigMap as configuration files
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mycontainer
    image: nginx
    volumeMounts:
    - name: config-volume
      mountPath: /etc/config
  volumes:
  - name: config-volume
    configMap:
      name: example-config
                

Best Practices

Follow these best practices when using ConfigMaps:

  • Use Descriptive Names: Use descriptive names for ConfigMaps to easily identify their purpose.
  • Version Control: Store ConfigMap files in version control to track changes and collaborate effectively.
  • Avoid Sensitive Data: Do not store sensitive data in ConfigMaps. Use Secrets for sensitive information.
  • Organize Configurations: Organize ConfigMaps logically by application or environment for better management.

Conclusion

This guide provided an overview of ConfigMaps in Kubernetes, including their creation, usage, and best practices. By understanding and using ConfigMaps effectively, you can manage configuration data separately from your container images, improving the portability and flexibility of your applications.