В Kubernetes ConfigMap и Secrets — это ресурсы, которые используются для управления конфигурационными данными и чувствительной информацией (например, паролями, токенами) в приложениях. Они позволяют отделить конфигурацию от кода приложения, что делает приложения более гибкими и безопасными.
ConfigMap — это объект Kubernetes, который хранит неконфиденциальные данные в виде пар ключ-значение. Эти данные могут быть использованы для настройки приложений, например, переменные окружения, конфигурационные файлы или параметры командной строки.
Создадим ConfigMap, который хранит переменные окружения для приложения.
apiVersion: v1
kind: ConfigMap
metadata:
name: myapp-config
data:
APP_COLOR: "blue"
APP_ENV: "production"
Теперь используем ConfigMap в Pod для передачи переменных окружения.
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
spec:
containers:
- name: myapp-container
image: myapp:1.0
env:
- name: COLOR
valueFrom:
configMapKeyRef:
name: myapp-config
key: APP_COLOR
- name: ENV
valueFrom:
configMapKeyRef:
name: myapp-config
key: APP_ENV
Secrets — это объект Kubernetes, который хранит чувствительные данные, такие как пароли, токены или ключи шифрования. В отличие от ConfigMap, Secrets хранят данные в закодированном виде (base64), что обеспечивает дополнительный уровень безопасности.
Создадим Secret, который хранит пароль и токен.
apiVersion: v1
kind: Secret
metadata:
name: myapp-secret
type: Opaque
data:
DB_PASSWORD: cGFzc3dvcmQ= # password (в base64)
API_TOKEN: dG9rZW4= # token (в base64)
Теперь используем Secret в Pod для передачи чувствительных данных.
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
spec:
containers:
- name: myapp-container
image: myapp:1.0
env:
- name: PASSWORD
valueFrom:
secretKeyRef:
name: myapp-secret
key: DB_PASSWORD
- name: TOKEN
valueFrom:
secretKeyRef:
name: myapp-secret
key: API_TOKEN
Характеристика | ConfigMap | Secrets |
---|---|---|
Тип данных | Неконфиденциальные данные | Чувствительные данные |
Кодирование | Не кодируются | Закодированы в base64 |
Использование | Переменные окружения, файлы | Пароли, токены, ключи |
Безопасность | Меньше безопасности | Высокий уровень безопасности |
Создание ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:
name: myapp-config
data:
APP_COLOR: "blue"
APP_ENV: "production"
Создание Secret:
apiVersion: v1
kind: Secret
metadata:
name: myapp-secret
type: Opaque
data:
DB_PASSWORD: cGFzc3dvcmQ= # password (в base64)
API_TOKEN: dG9rZW4= # token (в base64)
Использование ConfigMap и Secret в Pod:
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
spec:
containers:
- name: myapp-container
image: myapp:1.0
env:
- name: COLOR
valueFrom:
configMapKeyRef:
name: myapp-config
key: APP_COLOR
- name: PASSWORD
valueFrom:
secretKeyRef:
name: myapp-secret
key: DB_PASSWORD
Оба ресурса позволяют отделить конфигурацию от кода приложения, что делает приложения более гибкими и безопасными. ConfigMap и Secrets могут быть использованы в Pod для передачи данных через переменные окружения или монтирование файлов.