DevOps-bootcamp · Lektion

ConfigMaps och Secrets

Hantera konfigurationsdata och känslig information säkert i dina Kubernetes-distributioner med ConfigMaps och Secrets.

Lektion 3 av 412 steg

ConfigMaps och Secrets är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.

Introduktion till ConfigMaps och Secrets

Välkommen! I den här lektionen lär vi oss att hantera konfigurationsdata och känslig information i Kubernetes. Vi utforskar ConfigMaps och Secrets, två viktiga verktyg för flexibla och säkra applikationsdistributioner.

ConfigMaps och Secrets — illustration 1

Varför externisera konfiguration?

Föreställ Er att databasuppgifter eller API-nycklar hårdkodas direkt i Er applikations Docker-avbildning. Det gör uppdateringar svåra och exponerar känsliga data.

  • Oflexibilitet: Ändringar kräver att avbildningen byggs om.
  • Säkerhetsrisk: Känsliga data byggs in i avbildningen.
  • Miljöspecifikt: Olika miljöer (utveckling, produktion) behöver olika inställningar.

ConfigMaps: Icke-känsliga data

En ConfigMap är ett Kubernetes-objekt som används för att lagra icke-känsliga konfigurationsdata som nyckel-värde-par. Tänk på den som en central plats för applikationens inställningar, till exempel loggnivåer eller API-slutpunkter.

Den kopplar loss konfigurationen från applikationskoden, vilket gör Era distributioner mer portabla och enklare att hantera.

Definiera en ConfigMap

Ni kan skapa en ConfigMap från literalvärden, filer eller kataloger. Här är ett enkelt exempel definierat i en YAML-fil:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-app-config
data:
  log_level: "INFO"
  api_endpoint: "http://myapi.example.com"

ConfigMap som miljövariabler

När en ConfigMap har skapats kan en Pod använda dess data som miljövariabler. Detta är ett vanligt sätt att skicka inställningar till Er applikation.

Så här använder en Pod vår 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: Never

ConfigMap som monterade filer

Alternativt kan ConfigMap-data monteras som filer i Er container. Varje nyckel-värde-par blir en fil, där nyckeln används som filnamn och värdet som innehåll.

Detta är användbart för konfigurationsfiler som applikationen förväntar sig att läsa från en specifik sökväg.

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: Never

Secrets: Känsliga data

Secrets liknar ConfigMaps men är utformade för känsliga data, som lösenord, API-nycklar eller TLS-certifikat. Kubernetes hjälper Er att hantera och distribuera dem på ett säkert sätt.

Medan ConfigMaps lagrar data i klartext är Secrets base64-kodade. Detta är INTE kryptering, men förhindrar oavsiktlig exponering.

Definiera en Secret

När Ni skapar en Secret måste värdena vara base64-kodade. Ni kan använda echo -n 'my-password' | base64 för att koda dem.

Här är ett exempel med ett databaslösenord:

apiVersion: v1
kind: Secret
metadata:
  name: db-credentials
type: Opaque
data:
  username: YWRtaW4= # base64 of 'admin'
  password: c3VwZXJzZWNyZXRwYXNz # base64 of 'supersecretpass'

Använda Secrets i Pods

Pods använder Secrets på ungefär samma sätt som ConfigMaps: som miljövariabler eller monterade filer. Kubernetes avkodar dem automatiskt innan de görs tillgängliga för containern.

Av säkerhetsskäl är det i allmänhet bättre att använda dem som monterade filer, eftersom miljövariabler enklare kan loggas eller inspekteras.

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: Never

Bästa säkerhetspraxis

Kom ihåg att base64-kodning inte är kryptering. För verklig kryptering vid lagring kan Ni behöva en Kubernetes-backend för Secrets (som Vault) eller använda molnleverantörers KMS-tjänster.

  • RBAC: Kontrollera vem som får åtkomst till Secrets.
  • Minsta privilegium: Ge endast Pods åtkomst till de Secrets de behöver.
  • Monterade filer: Föredra att montera Secrets som filer framför att använda miljövariabler.

Snabbtest om konfiguration

Ni behöver lagra en API-nyckel (känslig) och en inställning för loggnivå (icke-känslig) för Er applikation i Kubernetes.

Vilka Kubernetes-objekt bör Ni använda för respektive data?

Sammanfattning: ConfigMaps och Secrets

Bra jobbat! Ni har lärt Er att hantera applikationskonfiguration och känsliga data i Kubernetes.

  • ConfigMaps: Lagrar icke-känsliga nyckel-värde-par.
  • Secrets: Lagrar känsliga data (base64-kodade).
  • Båda kan användas som miljövariabler eller monterade filer av Pods.
  • Följ alltid bästa säkerhetspraxis när Ni hanterar känslig information.

Härnäst kan Ni utforska avancerade säkerhetsområden som RBAC och externa lösningar för Secret-hantering.

Gratis att börja

Lär dig DevOps-bootcamp med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
142
Lektioner
568

Vanliga frågor

Är lektionen ”ConfigMaps och Secrets” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”ConfigMaps och Secrets”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.

Vad lär jag mig i ”ConfigMaps och Secrets”?

Hantera konfigurationsdata och känslig information säkert i dina Kubernetes-distributioner med ConfigMaps och Secrets. Ni övar på DevOps-bootcamp med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig DevOps-bootcamp?

Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”ConfigMaps och Secrets”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här DevOps-bootcamp-lektionen?

Ja. Varje DevOps-bootcamp-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Deployments för tillståndslösa appar
  2. Services för nätverksåtkomst
  3. ConfigMaps och Secrets
  4. Ingress och extern routing
← Tillbaka till DevOps-bootcamp