Inzicht in Kubernetes ConfigMaps

Voltooid

In de toepassingsopslagplaatswordt er een configuratiebestand in het index.html-bestand geladen, zodat de omgevingsvariabelen kunnen worden bijgewerkt zonder dat er een volledige image hoeft te worden opgebouwd.

Het configuratiebestand bevat geen gevoelige informatie, maar moet samen met de container worden geladen. Hoe kunnen we het bestand in de container koppelen zonder dat versleuteling of codering nodig is?

Meer informatie over ConfigMaps

ConfigMaps zijn tegenhangers voor Geheimen. Hoewel Geheimen een manier bieden om gevoelige gegevens op te slaan en te leveren, zijn ConfigMaps objecten die een manier bieden om niet-gevoelige gegevens op te slaan met behulp van dezelfde sleutel-waardestructuur als een geheim. Met het ConfigMaps-object kunt u configuraties loskoppelen van containerinstallatiekopieën, zodat de installatiekopieën staatloos blijven.

U maakt een ConfigMap voor het opslaan van configuratiegegevens afzonderlijk van de toepassingscode en laadt deze op dezelfde manier als het laden van geheime objecten in de pod. U kunt alleen verwijzen naar ConfigMaps met behulp van een omgevingsvariabele of door ze te koppelen als een bestand in een volume in de container.

ConfigMaps hebben een beperking voor de gegevensgrootte: u kunt maximaal 1 MiB- van gegevens in een ConfigMap bevatten. De beperking van de grootte helpt u grote, complexe configuratiebestanden te voorkomen door grote configuraties in kleinere segmenten te verdelen. Met ConfigMaps kunt u alleen de vereiste configuratiebestanden in uw containers koppelen, wat meer granulariteit mogelijk maakt.

Net als Secrets hebben ConfigMaps een naamruimte. U kunt een ConfigMap alleen openen en koppelen met behulp van de containers die aanwezig zijn in dezelfde naamruimte waarin deze is gemaakt.

ConfigMaps worden ook veel gebruikt door andere hulpprogramma's, zoals Helm en Kubernetes Operators, om statussen op te slaan en te lezen.

ConfigMap updates

Alle ConfigMaps die zijn gekoppeld als volumes binnen een pod worden automatisch bijgewerkt zodra de waarde is gewijzigd. Deze wijziging vindt mogelijk niet onmiddellijk plaats vanwege de Kubelet-configuratie, maar dit gebeurt automatisch, zodat de pod niet opnieuw hoeft te worden opgestart.

Wanneer een ConfigMap is gebonden aan omgevingsvariabelen, wordt deze niet automatisch bijgewerkt. Voor deze gevallen is het nodig om de pod opnieuw te starten om de wijzigingen van kracht te laten worden.

ConfigMaps maken en gebruiken

U kunt een ConfigMap maken met dezelfde methode als een geheim: een YAML-bestand. De ConfigMap-specificatie is als volgt:

apiVersion: v1
kind: ConfigMap
metadata:
  name: configmap-name
  namespace: default
data:
  key-name: "value as key"
  key.name: |
    multi line
    property, called "file-like" values

U kunt naar ConfigMaps verwijzen door een of meer sleutels in de specificatie van een pod of implementatie, zoals wordt weergegeven in het volgende voorbeeld:

apiVersion: v1
kind: Pod
metadata:
  name: configmap-as-env
  namespace: default
spec:
  containers:
    - name: configmap-env
      image: alpine
      command: ["sleep", "3600"]
      env:
        - name: ENVIRONMENT_VARIABLE_NAME
          valueFrom:
            configMapKeyRef:
              name: configmap-name
              key: key-name

U kunt ze ook koppelen als bestanden in de pod met alleen-lezenvolumes, zoals wordt weergegeven in het volgende voorbeeld:

apiVersion: v1
kind: Pod
metadata:
  name: configmap-as-env
  namespace: default
spec:
  containers:
    - name: configmap-env
      image: alpine
      command: ["sleep", "3600"]
      volumeMounts:
      - name: volume-name
        mountPath: "/path/to/mount"
        readOnly: true
  volumes:
    - name: volume-name
      configMap:
        name: configmap-name
        items:
        - key: "key-name"
          path: "path/to/mount/the/key"

Uw kennis controleren

1.

Waarom moeten we ConfigMaps gebruiken?

2.

Hoe kunt u ConfigMaps gebruiken in een toepassing?

3.

Is de naamruimte een beperking voor ConfigMaps?