ConfigMaps en Secrets
Beheer configuratiegegevens en gevoelige informatie veilig binnen uw Kubernetes-deployments met ConfigMaps en Secrets.
ConfigMaps en Secrets is een gratis Docker en de basis van DevOps-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Docker en de basis van DevOps. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Docker en de basis van DevOps bevat in totaal 4 lessen.
Introductie tot ConfigMaps en Secrets
Welkom! In deze les leer je hoe je configuratiegegevens en gevoelige informatie in Kubernetes beheert. We bekijken ConfigMaps en Secrets, twee essentiële hulpmiddelen voor flexibele en veilige implementaties van applicaties.

Waarom configuratie extern opslaan?
Stel je voor dat je databasegegevens of API-sleutels rechtstreeks in de Docker-image van je applicatie vastlegt. Updates worden dan lastig en gevoelige gegevens komen bloot te liggen.
- Onflexibel: voor wijzigingen moet je de image opnieuw bouwen.
- Beveiligingsrisico: gevoelige gegevens worden in de image opgenomen.
- Omgevingsafhankelijk: verschillende omgevingen (ontwikkeling, productie) hebben verschillende instellingen nodig.
ConfigMaps: niet-gevoelige gegevens
Een ConfigMap is een Kubernetes-object waarin je niet-gevoelige configuratiegegevens als sleutel-waardeparen opslaat. Zie het als een centrale plek voor de instellingen van je app, zoals logniveaus of API-eindpunten.
Hiermee koppel je de configuratie los van je applicatiecode, waardoor je implementaties draagbaarder en eenvoudiger te beheren worden.
Een ConfigMap definiëren
Je kunt een ConfigMap aanmaken vanuit letterlijke waarden, bestanden of mappen. Hier zie je een eenvoudig voorbeeld in een YAML-bestand:
apiVersion: v1
kind: ConfigMap
metadata:
name: my-app-config
data:
log_level: "INFO"
api_endpoint: "http://myapi.example.com"ConfigMap als omgevingsvariabelen
Na het aanmaken kan een Pod ConfigMap-gegevens gebruiken als omgevingsvariabelen. Dit is een gebruikelijke manier om instellingen aan je applicatie door te geven.
Zo gebruikt een Pod onze my-app-config:
apiVersion: v1
kind: Pod
metadata:
name: configmap-env-pod
spec:
containers:
- name: my-container
image: busybox
command: ["sh", "-c", "echo Log Level: $LOG_LEVEL; echo API: $API_ENDPOINT"]
env:
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: my-app-config
key: log_level
- name: API_ENDPOINT
valueFrom:
configMapKeyRef:
name: my-app-config
key: api_endpoint
restartPolicy: NeverConfigMap als gekoppelde bestanden
Je kunt ConfigMap-gegevens ook als bestanden in je container koppelen. Elk sleutel-waardepaar wordt een bestand, waarbij de sleutel de bestandsnaam is en de waarde de inhoud.
Dit is handig voor configuratiebestanden die je applicatie vanaf een specifiek pad moet lezen.
apiVersion: v1
kind: Pod
metadata:
name: configmap-file-pod
spec:
containers:
- name: my-container
image: busybox
command: ["sh", "-c", "cat /etc/config/log_level; cat /etc/config/api_endpoint"]
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
configMap:
name: my-app-config
restartPolicy: NeverSecrets: gevoelige gegevens
Secrets lijken op ConfigMaps, maar zijn bedoeld voor gevoelige gegevens zoals wachtwoorden, API-sleutels of TLS-certificaten. Kubernetes helpt je deze veilig te beheren en te distribueren.
Terwijl ConfigMaps gegevens als platte tekst opslaan, zijn Secrets base64-gecodeerd. Dit is GEEN versleuteling, maar voorkomt dat gegevens per ongeluk zichtbaar worden.
Een Secret definiëren
Bij het aanmaken van een Secret moeten de waarden met base64 worden gecodeerd. Je kunt echo -n 'my-password' | base64 gebruiken om ze te coderen.
Hier zie je een voorbeeld voor een databasewachtwoord:
apiVersion: v1
kind: Secret
metadata:
name: db-credentials
type: Opaque
data:
username: YWRtaW4= # base64 of 'admin'
password: c3VwZXJzZWNyZXRwYXNz # base64 of 'supersecretpass'Secrets in Pods gebruiken
Pods gebruiken Secrets vrijwel op dezelfde manier als ConfigMaps: als omgevingsvariabelen of als gekoppelde bestanden. Kubernetes decodeert ze automatisch voordat ze aan de container worden aangeboden.
Voor de beveiliging verdient het over het algemeen de voorkeur om ze als gekoppelde bestanden te gebruiken, omdat omgevingsvariabelen eenvoudiger kunnen worden gelogd of bekeken.
apiVersion: v1
kind: Pod
metadata:
name: secret-env-pod
spec:
containers:
- name: my-app-container
image: busybox
command: ["sh", "-c", "echo DB User: $DB_USERNAME; echo DB Pass: $DB_PASSWORD"]
env:
- name: DB_USERNAME
valueFrom:
secretKeyRef:
name: db-credentials
key: username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-credentials
key: password
restartPolicy: NeverAanbevolen beveiligingspraktijken
Onthoud dat base64-codering geen versleuteling is. Voor echte versleuteling van gegevens in rust heb je mogelijk een Kubernetes-backend voor Secrets nodig (zoals Vault) of moet je gebruikmaken van KMS-services van een cloudprovider.
- RBAC: bepaal wie toegang heeft tot Secrets.
- Minimale rechten: geef Pods alleen toegang tot de Secrets die ze nodig hebben.
- Gekoppelde bestanden: geef de voorkeur aan het koppelen van Secrets als bestanden boven het gebruik van omgevingsvariabelen.
Snelle controle van configuratie
Je moet een API-sleutel (gevoelig) en een instelling voor het logniveau (niet gevoelig) opslaan voor je applicatie in Kubernetes.
Welke Kubernetes-objecten moet je hiervoor respectievelijk gebruiken?
Samenvatting: ConfigMaps en Secrets
Goed gedaan! Je hebt geleerd hoe je applicatieconfiguratie en gevoelige gegevens in Kubernetes beheert.
- ConfigMaps: slaan niet-gevoelige sleutel-waardeparen op.
- Secrets: slaan gevoelige gegevens op (base64-gecodeerd).
- Beide kunnen door Pods worden gebruikt als omgevingsvariabelen of als gekoppelde bestanden.
- Volg altijd de aanbevolen beveiligingspraktijken bij het verwerken van gevoelige informatie.
Bekijk hierna geavanceerde beveiligingsthema's, zoals RBAC en oplossingen voor extern beheer van Secrets.
Leer Docker en de basis van DevOps met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 12
- Lessen
- 48
Veelgestelde vragen
Is de les “ConfigMaps en Secrets” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Docker en de basis van DevOps, waaronder “ConfigMaps en Secrets”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Docker en de basis van DevOps bevat in totaal 4 lessen.
Wat leer ik in “ConfigMaps en Secrets”?
Beheer configuratiegegevens en gevoelige informatie veilig binnen uw Kubernetes-deployments met ConfigMaps en Secrets. Je oefent met Docker en de basis van DevOps door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Docker en de basis van DevOps te beginnen?
Ervaring vooraf is niet nodig. Docker en de basis van DevOps op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “ConfigMaps en Secrets”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Docker en de basis van DevOps?
Ja. Elke les over Docker en de basis van DevOps bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Deployments voor stateless apps
- Services voor netwerktoegang
- ConfigMaps en Secrets
- Ingress en externe routing