Kubernetes ConfigMap и Secrets — два важных компонента для управления данными конфигурации в ваших приложениях. ConfigMap предоставляет хранилище данных конфигурации ключ-значение, а Secrets позволяет безопасно хранить конфиденциальную информацию, такую ​​как пароли и ключи API. В этой статье мы рассмотрим основы ConfigMap и Secrets, как их создавать и использовать, а также как их обновлять.

Что такое Kubernetes ConfigMap?

ConfigMap — это объект API в Kubernetes, который предоставляет хранилище ключей и значений для данных конфигурации вашего приложения. Приложение может получить доступ к этим данным в виде переменных среды, файлов или аргументов командной строки, что дает вам возможность гибко управлять конфигурацией вне кода приложения.

Создание ConfigMap в Kubernetes

Создать ConfigMap в Kubernetes несложно, и это можно сделать с помощью инструмента командной строки kubectl. Наиболее распространенный способ создания ConfigMap — из файла, что так же просто, как определение ресурса ConfigMap и его данных. Вот пример:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config-map
data:
  config.properties: |
    application.name=My Application
    database.username=user
    database.password=pass

Использование данных ConfigMap в ваших приложениях

Использование данных ConfigMap в ваших приложениях очень просто, и есть несколько способов сделать это, в том числе в виде переменных среды или файлов. Вот пример модуля, который использует ConfigMap в качестве переменных среды:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: my-image
    env:
    - name: APPLICATION_NAME
      valueFrom:
        configMapKeyRef:
          name: my-config-map
          key: application.name
    - name: DATABASE_USERNAME
      valueFrom:
        configMapKeyRef:
          name: my-config-map
          key: database.username
    - name: DATABASE_PASSWORD
      valueFrom:
        configMapKeyRef:
          name: my-config-map
          key: database.password

Что такое секреты Kubernetes?

Secrets — это объект API в Kubernetes, который обеспечивает безопасный способ хранения конфиденциальной информации, такой как пароли и ключи API. Секреты шифруются и хранятся в etcd, распределенном хранилище ключей и значений, на котором работает Kubernetes.

Создание секрета в Kubernetes

Создание секрета в Kubernetes похоже на создание ConfigMap. Наиболее распространенный способ создания секрета — из файла, который так же прост, как определение ресурса секрета и его данных. Вот пример:

apiVersion: v1
kind: Secret
metadata:
  name: my-secret
type: Opaque
data:
  database.username: dXNlcm5hbWU=
  database.password: cGFzc3dvcmQ=

Использование секретов в ваших приложениях

Использовать секреты в ваших приложениях легко и можно так же, как использовать данные ConfigMap, либо в виде переменных среды, либо в виде файлов. Вот пример пода, который использует Secret в качестве переменных среды:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: my-image
    env:
    - name: DATABASE_USERNAME
      valueFrom:
        secretKeyRef:
          name: my-secret
          key: database.username
    - name: DATABASE_PASSWORD
      valueFrom:
        secretKeyRef:
          name: my-secret
          key: database.password

Обновление ConfigMap и секретов

Обновить ConfigMap и секреты в Kubernetes так же просто, как изменить определение ресурса и применить его. Kubernetes автоматически обновит запущенные ресурсы новыми данными конфигурации. Вот пример обновления ConfigMap:

kubectl edit configmap my-config-map

А вот пример обновления секрета:

kubectl edit secret my-secret

В заключение отметим, что Kubernetes ConfigMap и Secrets обеспечивают безопасный и эффективный способ управления данными конфигурации вашего приложения. С помощью ConfigMap вы можете управлять данными конфигурации вне кода вашего приложения, а Secrets обеспечивает безопасный способ хранения конфиденциальной информации. Благодаря простоте использования и гибкости ConfigMap и Secrets являются важными компонентами приложения на основе Kubernetes.

Примечание. Эта история создана с использованием вспомогательных инструментов искусственного интеллекта.