Sobes.tech
Junior

Какво е ConfigMap в Kubernetes?

sobes.tech AI

Отговор от AI

ConfigMap е обект на API, който се използва за съхраняване на не конфиденциални данни под формата на двойки ключ-стойност в Kubernetes. Той позволява отделянето на конфигурацията на приложението от неговия контейнерен образ, правейки приложенията по-преносими и улеснявайки управлението на конфигурацията.

Данните в ConfigMap могат да бъдат използвани по следните начини:

  • Като променливи на средата в контейнера.
  • Като аргументи на командния ред за контейнера.
  • Като файлове в том, монтиран в Pod.

Пример за създаване на ConfigMap от файл:

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

Използване на ConfigMap в Pod чрез променливи на средата:

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

Използване на ConfigMap в Pod чрез монтиране като файл:

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

Ключови характеристики:

  • Използва се за не конфиденциални данни. За конфиденциални данни трябва да се използват Secrets.
  • Позволява динамично обновяване на конфигурацията без преизграждане на образа.
  • Данните в ConfigMap са ограничени по размер (по подразбиране 1 МБ).
  • Някои промени в ConfigMap може да изискват рестартиране на Pod за да влязат в сила, в зависимост от начина на използване (променливите на средата изискват рестарт, монтирането като файл може да е динамично).