Kubernetes Secrets, RBAC и Vault
1. ConfigMap vs Secret
- ConfigMap: Используется для хранения обычных конфигураций (динамических конфигов). Если менять их внутри имиджа (Dockerfile), придется каждый раз пересобирать имидж. ConfigMap позволяет делать это динамически.
- Secret: Используется для чувствительных данных (пароли, TLS-сертификаты).
- Главное отличие: ConfigMap хранит данные в открытом виде. Secret использует кодирование Base64.
- Критическое замечание: Преподаватель подчеркивает, что Base64 — это не шифрование (encryption), а просто кодирование. Любой, у кого есть доступ к неймспейсу, может легко декодировать секрет одной командой.
2. Типы секретов (Secret Types)
В Kubernetes есть несколько стандартных типов:
- Opaque (Generic): Обычные данные "ключ-значение".
- kubernetes.io/tls: Для хранения сертификатов (нужны два файла:
tls.crtиtls.key). Часто используется с Ingress-контроллерами. - kubernetes.io/dockerconfigjson: Для доступа к приватным Docker-регистрам (например, Nexus или Harbor).
3. Работа с секретами в терминале
Преподаватель в видео выполнял следующие действия:
- Создание секрета из строки (Literal):
kubectl create secret generic secret-1 --from-literal=pass=a1245
- Просмотр секрета в YAML (где виден Base64):
kubectl get secret secret-1 -o yaml