Sobes.tech
Junior

Czym jest ConfigMap w Kubernetes?

sobes.tech AI

Odpowiedź od AI

ConfigMap jest obiektem API używanym do przechowywania danych nie poufnych w parach klucz-wartość w Kubernetes. Umożliwia oddzielenie konfiguracji aplikacji od jej obrazu kontenera, co czyni aplikacje bardziej przenośnymi i upraszcza zarządzanie konfiguracją.

Dane w ConfigMap można używać na następujące sposoby:

  • Jako zmienne środowiskowe w kontenerze.
  • Jako argumenty wiersza poleceń dla kontenera.
  • Jako pliki w woluminie montowanym w Pod.

Przykład tworzenia ConfigMap z pliku:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  my-config-file.properties: |
    database.url=jdbc:mysql://localhost:3306/mydatabase
    database.username=mydbuser
    database.password=secret

Użycie ConfigMap w Pod przez zmienne środowiskowe:

apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod
spec:
  containers:
  - name: my-app
    image: my-app-image
    env:
    - name: DATABASE_URL
      valueFrom:
        configMapKeyRef:
          name: my-config
          key: database.url
    - name: DATABASE_USERNAME
      valueFrom:
        configMapKeyRef:
          name: my-config
          key: database.username

Użycie ConfigMap w Pod przez montowanie jako plik:

apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod
spec:
  containers:
  - name: my-app
    image: my-app-image
    volumeMounts:
    - name: config-volume
      mountPath: /etc/config
  volumes:
  - name: config-volume
    configMap:
      name: my-config

Kluczowe cechy:

  • Używany do danych nie poufnych. Dla danych poufnych należy używać Secrets.
  • Pozwala na dynamiczną aktualizację konfiguracji bez przebudowy obrazu.
  • Dane w ConfigMap mają ograniczenie rozmiaru (domyślnie 1 MB).
  • Niektóre zmiany w ConfigMap mogą wymagać ponownego uruchomienia Pod, aby zaczęły obowiązywać, w zależności od metody użycia (zmienne środowiskowe wymagają restartu, montowanie jako plik może być dynamiczne).