Secrets Store
Stackland использует для безопасного хранения секретов и их инъекции два основных инструмента:
- Secrets Injector — загружает секреты по API, совместимому с Vault
, и подставляет их в ресурсы кластера. - Хранилище секретов, совместимое с Vault
.
Если использовать конфигурацию Secrets Injector по умолчанию, то в кластере хранилищем секретов будет OpenBao
Вы можете изменить настройки по умолчанию с помощью параметров кастомного ресурса SecretsStoreConfig.
Доступ к OpenBao
Интерфейс и доступ к API OpenBao по умолчанию выключены:
- Чтобы открыть доступ к API OpenBao извне кластера, нужно установить флаг
server.ingress.enabled = true; - Чтобы открыть доступ к интерфейсу OpenBao извне кластера, нужно установить флаг
server.ingress.enabled = trueиui.enabled = true.
Интерфейс и API станут доступны по адресу https://secrets.sys.<домен кластера>. Если ui.enabled = true, а server.ingress.enabled = false, то доступ к интерфейсу будет только внутри кластера.
Использование Secrets Injector
Secrets Injector готов к работе сразу после развертывания кластера и не требует дополнительной настройки. Secrets Injector использует хранилище OpenBao в Stackland. При необходимости можно настроить использование собственного хранилища секретов в кастомном ресурсе в параметре secretsAddr.
Для аутентификации сервисных аккаунтов, которые подставляют секреты в манифесты, Secrets Injector использует API OpenBao. По умолчанию применяется эндпоинт auth/kubernetes, но его можно изменить, настроив параметр authPath.
Конфигурация
Пример:
apiVersion: stackland.yandex.cloud/v1alpha1
kind: SecretsStoreConfig
metadata:
name: main # Поле обязательно и должно иметь значение main
spec:
enabled: true
settings:
stacklandSecretsInjector: # Настройки Secrets Injector
authPath: kubernetes
enabled: true
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 50m
memory: 64Mi
secretsAddr: ''
skipTLSVerify: false
webhookTimeout: 30
server: # Настройки пода OpenBao
dataStorage:
size: 2Gi
storageClass: stackland-default
enabled: true
ingress:
clusterIssuer: stackland-default
enabled: false
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 256Mi
updateStrategyType: RollingUpdate
ui:
enabled: true # Использование интерфейса OpenBao
Параметры Secrets Injector
stacklandSecretsInjector:
authPath: kubernetes
enabled: true
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 50m
memory: 64Mi
secretsAddr: ''
skipTLSVerify: false
webhookTimeout: 30
authPath— указывает эндпоинт API OpenBao для аутентификации и авторизации через Kubernetes. По умолчанию используетсяauth/kubernetes.enabled— включает использование Secrets Injector.resources— ограничивает ресурсы (CPU и память) для пода.secretsAddr— указывает HTTPS-адрес API OpenBao.skipTLSVerify— позволяет пропустить проверку TLS-сертификата, если его нет в списке доверенных сертификатов.webhookTimeout— определяет время ожидания ответа от Secrets Injector.
Параметры пода OpenBao
server:
dataStorage:
size: 2Gi
storageClass: stackland-default
enabled: true
ingress:
clusterIssuer: stackland-default
enabled: false
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 256Mi
updateStrategyType: RollingUpdate
dataStorage— задает расширенные настройки для хранилища.enabled— включает использование пода.ingress— задает настройки объекта Ingress.resources— ограничивает ресурсы (CPU и память) для пода.updateStrategyType— определяет тип обновления.
Использование интерфейса
ui:
enabled: true
enabled— включает интерфейс OpenBao по адресуhttps://secrets.sys.<домен кластера>.