Configuration for pods can provided as environment variables or files by creating config maps and secrets. Both are documents containing key/value data. Config maps are for non-sensitive data. Secrets are for sensitive data.
Config Maps
Config maps are key/value pairs of string data which can be mounted in a pod as environment variables or as a file.
Environment Variables
You can define environment variables as key/value pairs in a config map:
...
Code Block |
---|
apiVersion: apps/v1 kind: Deployment metadata: name: example-web namespace: default spec: selector: matchLabels: app.kubernetes.io/name: example template: metadata: labels: app.kubernetes.io/name: example spec: containers: - name: main envFrom: - configMapRef: name: example |
Files
You can also store a file in a config map and mount it:
...
Code Block |
---|
apiVersion: apps/v1 kind: Deployment metadata: name: example-web namespace: default spec: selector: matchLabels: app.kubernetes.io/name: example template: metadata: labels: app.kubernetes.io/name: example spec: # Define your config map as a volume volumes: - name: sidekiq configMap: name: sidekiq # Mount the volume in your container containers: - name: main volumeMounts: - name: sidekiq mountPath: /app/config/sidekiq.yml subPath: sidekiq.yml |
Secrets
Secrets are functionally identical to config maps, but they can be configured with stricter permissions due to their sensitive nature. Secret manifests are not committed to Git.
...