Kubernetes Series Part 6: Configure Your Applications With Configmaps and Secrets

Table of Contents

Kubernetes Series Part 6: Configuring Your Applications with ConfigMaps and Secrets

In our previous post, we explored the fundamental concepts of Kubernetes storage. Now, let’s turn our attention to managing configuration data and secrets within Kubernetes.

ConfigMaps: Managing Non-Sensitive Configuration Data

ConfigMaps allow you to store non-sensitive configuration data, such as:

  • Database connection strings
  • API keys (if they’re not highly sensitive)
  • Log levels
  • Application properties

By using ConfigMaps, you can:

  • Centralize configuration: Store configuration data in a single location.
  • Update configuration dynamically: Update configuration without redeploying your application.
  • Separate configuration from code: Make your applications more portable and easier to manage.

Secrets: Securely Storing Sensitive Information

Secrets are used to store sensitive information, such as:

  • Passwords
  • API keys
  • SSH keys
  • Certificates

Kubernetes provides mechanisms to securely store and inject secrets into Pods, ensuring that sensitive information is protected.

Hands-on Labs

Lab 1: Configuring an Application Using ConfigMaps

  • Create configmap.yaml:
apiVersion: v1
kind: ConfigMap
metadata:
  name: configmap-app
data:
  APP_ENV: production
  APP_DEBUG: "false"
  APP_VERSION: "1.0.0"
  • Create deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: configmap-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: configmap-app
  template:
    metadata:
      labels:
        app: configmap-app
    spec:
      containers:
      - name: configmap-container
        image: nginx:alpine
        env:
        - name: APP_ENV
          valueFrom:
            configMapKeyRef:
              name: configmap-app
              key: APP_ENV
        - name: APP_DEBUG
          valueFrom:
            configMapKeyRef:
              name: configmap-app
              key: APP_DEBUG
        - name: APP_VERSION
          valueFrom:
            configMapKeyRef:
              name: configmap-app
              key: APP_VERSION
  • Apply all the yaml files:
kubectl apply -f configmap.yaml
kubectl apply -f deployment.yaml

Conclusion

By effectively using ConfigMaps and Secrets, you can manage your application’s configuration data and sensitive information securely and efficiently. This ensures that your applications are deployed and run reliably in your Kubernetes cluster.