OpenBao#

OpenBao - это инструмент для обеспечения открытого, независимого и доступного управления секретами и защитой данных. Он сохраняет совместимость с API Vault.

Основные задачи и возможности
  • Хранит и управляет чувствительными данными: паролями, токенами, TLS-сертификатами, ключами API и т.д.

  • Генерирует временные учетные данные (например, для баз данных), которые автоматически отзываются после истечения срока.

  • Позволяет pod аутентифицироваться в OpenBao с помощью сервисных аккаунтов Kubernetes, не требуя хранения токенов.

  • Предоставляет централизованное шифрование/дешифрование данных через API без раскрытия ключей клиентам.

  • Позволяет монтировать секреты напрямую в pod как файлы через Vault CSI Provider (совместимый с OpenBao).

  • Поддерживает режим HA, репликацию и работу в распределенной среде.

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

Примечание

OpenBao не является инструментом по умолчанию в компоненте Security. Его можно установить как инструмент (Tool) или явно включить в список spec.tools при установке компонента Security.

Настройка#

Постоянное хранение#

Примечание

По умолчанию OpenBao устанавливается с отключенными режимом ha (высокая доступность) и постоянным хранилищем (данных и логов аудита).

Для включения постоянного хранилища и режима ha укажите следующие параметры конфигурации при установке OpenBao или компонента Security:

values:
  server:
    ha:
      enabled: true
    auditStorage:
      enabled: true
      storageClass: nfs-csi # для инструмента csi-driver-nfs
    dataStorage:
      enabled: true
      storageClass: nfs-csi # для инструмента csi-driver-nfs

Быстрый старт#

  1. Для начала работы с OpenBao выполните его инициализацию (init) после установки:

    kubectl -n dapp-security exec -ti openbao-0 -- bao operator init -key-shares=5 -key-threshold=3
    

    Пример вывода:

    Unseal Key 1: mk3/gtZdGCFO8Dvg9LrFfjAtX3pEATkt2m/C4KaIRAeM # набор символов дан для примера
    Unseal Key 2: GOyDDQT7Yhc4yRFSTXAo6Hbs1u+TpOCWLe1zRc3qcCe7 # набор символов дан для примера
    Unseal Key 3: URYeHk2L6d3L07XWteFlwgkFY184uyB6kqPkzFwXXbbR # набор символов дан для примера
    Unseal Key 4: xojlmGiSvJmv4vZ+szJVo7Q9IsQLkmEPVgSeeGGySqZi # набор символов дан для примера
    Unseal Key 5: wgFBokdib+6swTPQr61+GKE44xS5EeTCizZ2EAmRyJyY # набор символов дан для примера
    
    Initial Root Token: s.AXruaHqkn8JImxNhPMPW0weh # набор символов дан для примера
    
  2. Распечатайте (разблокируйте) OpenBao:

    kubectl -n dapp-security exec -ti openbao-0 -- bao operator unseal
    

    Необходимо выполнить unseal для минимум трех Unseal Key, то есть три раза вызвать команду и вставить три разных ключа.

    Примечание

    Если OpenBao устанавливается в HA-режиме, то операцию надо вызвать для всех его реплик поочередно: сначала openbao-0, потом openbao-1 и openbao-2.

  3. Войдите в OpenBao с помощью Initial Root Token, проверьте его статус и включите хранилище секретов kv store:

    export OPENBAO_NS=dapp-security
    export ROOT_TOKEN='<ROOT_TOKEN>' # Это Initial Root Token
     
    kubectl -n $OPENBAO_NS exec -ti openbao-0 -- sh -lc "
    export BAO_ADDR=http://127.0.0.1:8200
    bao login -no-print $ROOT_TOKEN
    bao status
    "
    
    kubectl -n $OPENBAO_NS exec -ti openbao-0 -- sh -lc "
    export BAO_ADDR=http://127.0.0.1:8200
    bao secrets enable -path=kv kv-v2 || true
    bao secrets list
    "
    

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

  1. Создайте первый secret (для примера sp-01/payments/api/db, структуру выбирает пользователь):

    kubectl -n $OPENBAO_NS exec -ti openbao-0 -- sh -lc "
    export BAO_ADDR=http://127.0.0.1:8200
    bao kv put -mount=kv sp-01/payments/api/db username='demo' password='<password>'
    "
    
  2. Прочтите его:

    kubectl -n $OPENBAO_NS exec -ti openbao-0 -- sh -lc "
    export BAO_ADDR=http://127.0.0.1:8200
    bao kv get -mount=kv sp-01/payments/api/db
    "
    

    Примечание

    Также это можно сделать и в UI OpenBao, по умолчанию он доступен по адресу https://openbao.<clusterName>.<publicDomain>.

Включение kubernetes auth#

  1. Чтобы кластеры DropApp могли читать секреты из OpenBao и при этом не хранить root secret в кластере, добавьте аутентификацию через Kubernetes (auth kubernetes) и минимальную политику доступа (policy):

    kubectl -n $OPENBAO_NS exec -ti openbao-0 -- sh -lc "
    export BAO_ADDR=http://127.0.0.1:8200
    cat > /tmp/eso-sp01.hcl <<'HCL'
    path \"kv/data/sp-01/*\" {
      capabilities = [\"read\"]
    }
    path \"kv/metadata/sp-01/*\" {
      capabilities = [\"read\",\"list\"]
    }
    HCL
    bao policy write eso-sp01 /tmp/eso-sp01.hcl
    bao policy read eso-sp01
    "
    

    Эта политика включает kubernetes auth в OpenBao и настраивает TokenReview.

  2. kubernetes auth проверяет ServiceAccount JWT через API TokenReview. Для этого ServiceAccount OpenBao должен иметь clusterrole system:auth-delegator.

    Узнайте ServiceAccount OpenBao:

    export OPENBAO_SA="$(kubectl -n "$OPENBAO_NS" get pod "$OPENBAO_POD" -o jsonpath='{.spec.serviceAccountName}')" echo "$OPENBAO_SA"
    
  3. Создайте ClusterRoleBinding:

    kubectl create clusterrolebinding openbao-tokenreview \ --clusterrole=system:auth-delegator \ --serviceaccount="$OPENBAO_NS:$OPENBAO_SA" \ 2>/dev/null || true
    
  4. Включите kubernetes auth в OpenBao:

    kubectl -n $OPENBAO_NS exec -ti openbao-0 -- sh -lc "
    export BAO_ADDR=http://127.0.0.1:8200
    bao auth enable kubernetes || true
    bao auth list
    "
    
  5. Сконфигурируйте kubernetes_host - внутрикластерный адрес API:

    kubectl -n $OPENBAO_NS exec -ti openbao-0 -- sh -lc '
    set -e
    export BAO_ADDR=http://127.0.0.1:8200
     
    K8S_HOST="https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT_HTTPS}"
    SA_JWT="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)"
    SA_CA="/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"
    
    bao write auth/kubernetes/config \
      kubernetes_host="$K8S_HOST" \
      token_reviewer_jwt="$SA_JWT" \
      kubernetes_ca_cert=@"$SA_CA"
    '
    

После выполнения указанных действий инструмент External Secrets сможет забирать секреты из хранилища.

Использование внешнего OpenBao#

Как правило, на несколько кластеров используется одна установка OpenBao. В этом случае дополнительные кластеры DropApp используют внешний OpenBao, а в pod добавляется sidecar-контейнер для OpenBao-injector. При такой типовой конфигурации укажите адрес внешнего OpenBao через значение параметра globalexternalBaoAddr.

Пример конфигурации подключения к внешнему OpenBao:

values:
  global:    
    externalBaoAddr: "https://openbao..."

Чтобы injector автоматически добавлял секреты, pod должен иметь аннотации, определяющие источник секретов, роль доступа и шаблон форматирования, например:

spec:
  template:
    metadata:
      annotations:
        vault.hashicorp.com/agent-inject: "true"
        vault.hashicorp.com/role: "app-read-kv"
        vault.hashicorp.com/agent-inject-secret-dbcreds.env: "kv/data/sp-01/payments/api/db"
        vault.hashicorp.com/agent-inject-template-dbcreds.env: |
          {{- with secret "kv/data/sp-01/payments/api/db" -}}
          USERNAME={{ .Data.data.username }}
          PASSWORD={{ .Data.data.password }}
          {{- end -}}

Пример развертывания приложения с инъекцией секретов из OpenBao:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-injected
  namespace: dapp-security
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo-injected
  template:
    metadata:
      labels:
        app: demo-injected
      annotations:
        vault.hashicorp.com/agent-inject: "true"
        vault.hashicorp.com/role: "eso-sp01"
 
        # KV v2: путь на API-уровне всегда kv/data/<path>
        vault.hashicorp.com/agent-inject-secret-dbcreds.env: "kv/data/sp-01/payments/api/db"
 
        # Рендер нужных полей в env-подобный файл
        vault.hashicorp.com/agent-inject-template-dbcreds.env: |
          {{- with secret "kv/data/sp-01/payments/api/db" -}}
          USERNAME={{ .Data.data.username }}
          PASSWORD={{ .Data.data.password }}
          {{- end -}}
    spec:
      serviceAccountName: external-secrets
      containers:
        - name: app
          image: busybox:1.36
          command: ["/bin/sh","-lc"]
          args:
            - |
              echo "Waiting for /vault/secrets/dbcreds.env ..."
              while [ ! -s /vault/secrets/dbcreds.env ]; do sleep 1; done
              echo "=== injected file ==="
              cat /vault/secrets/dbcreds.env
              echo "====================="
              sleep 360000  

В логах pod появится информация о наличии доступа к секрету из OpenBao.

Конфигурация values#

Параметры OpenBao можно переопределить через редактирование нужных значений в spec.values. Общее описание конфигурации values для инструментов приведено в разделе «Конфигурации инструментов дополнительных компонентов».

global - глобальные параметры релиза и общие настройки развертывания (домены, реестр, безопасность, PSP, TLS)#

Параметр

Описание

Значение по умолчанию

global.enabled

Включение/выключение глобальных параметров на уровне Helm-чарта. Возможные значения: true/false

true

global.namespace

Целевое пространство имен для развертывания. Если значение не задано, используется пространство имен установки Helm-релиза. Возможные значения: строка

Отсутствует

global.imagePullSecrets

Список секретов Kubernetes для аутентификации в приватном реестре при загрузке образов. Возможные значения: массив строк или объектов с полем name

[]

global.tlsDisable

Флаг, управляющий требованием TLS для внутренних взаимодействий компонентов чарта (сервер, Vault Agent Injector, CSI). Возможные значения: true/false

true

global.externalBaoAddr

Адрес внешнего сервера OpenBao для компонентов (например, Vault Agent Injector или CSI). При указании значения может отключать развертывание встроенного сервера чарта. Возможные значения: URL-строка

Отсутствует

global.externalVaultAddr

Адрес внешнего сервера Vault для компонентов (например, Vault Agent Injector или CSI). При указании значения может отключать развертывание встроенного сервера. Возможные значения: URL-строка чарта

global.openshift

Режим совместимости с OpenShift (включая, SCC, ограничения безопасности и особенности маршрутизации). Возможные значения: true/false

false

global.psp

Параметры управления политики безопасности pod для старых кластеров и политик

Отсутствует

global.psp.enable

Включение поддержки PodSecurityPolicy (PSP). Возможные значения: true/false

false

global.psp.annotations

Дополнительные метаданные аннотаций Kubernetes. Используются для интеграций с политиками безопасности, мониторингом, Sidecar Injector, аудитом. Возможные значения: строка

seccomp.security.alpha.kubernetes.io/allowedProfileNames: docker/default,runtime/defaul
apparmor.security.beta.kubernetes.io/allowedProfileNames: runtime/default
seccomp.security.alpha.kubernetes.io/defaultProfileName: runtime/default
apparmor.security.beta.kubernetes.io/defaultProfileName: runtime/default

global.serverTelemetry

Настройки телеметрии сервера

Отсутствует

global.serverTelemetry.prometheusOperator

Настройка интеграции с Prometheus Operator для создания ServiceMonitor, PodMonitor, правил, уведомлений и метаданных. Возможные значения: true, false или объект

false

injector - настройки webhook для доступа с целью внедрения OpenBao Agent в pod#

Параметр

Описание

Значение по умолчанию

injector.enabled

Включение/выключение компонента. Знак - предполагает наследование значения от параметра global.enabled. Возможные значения: true, false, -

-

injector.replicas

Количество реплик для pod. Возможные значения: целое число

1

injector.port

Настройка порта для прослушивания. Возможные значения: целое число

8080

injector.leaderElector

Настройка, когда среди нескольких реплик по умолчанию определяется главная для создания сертификатов TLS

Отсутствует

injector.leaderElector.enabled

Включение/выключение выбора механизма выбора «лидера» на уровне Helm-чарта. Возможные значения: true/false

true

injector.metrics

Настройки включения конечной точки или метрик для экспортера метрик узла

Отсутствует

injector.metrics.enabled

Включение/выключение метрик на уровне Helm-чарта. Возможные значения: true/false

true

injector.externalVaultAddr

Адрес внешнего сервера Vault для компонентов (например, Vault Agent Injector или CSI). При указании значения может отключать развертывание встроенного сервера чарта. Возможные значения: URL-строка

Отсутствует

injector.image

Настройки образа с указанием репозитория и тега

Отсутствует

injector.image.registry

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

{{ .Values.global.image.registry }}

injector.image.repository

Путь репозитория образа, включая пространства имен, для данного компонента. Возможные значения: строка. Может указываться в формате Helm-шаблона

{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-vault-k8s/dev/vault-k8s

injector.image.tag

Тег образа контейнера с версией и сборкой компонента. Возможные значения: строка

1.7.0-master

injector.image.pullPolicy

Политика загрузки образа для Kubelet. Возможные значения: Always, IfNotPresent, Never

IfNotPresent

injector.agentImage

Агент образа, что устанавливает репозиторий и тег OpenBao для использования в контейнерах OpenBao. Требуется версия OpenBao 1.3.1+

Отсутствует

injector.agentImage.registry

Реестр образа для агента образа. Возможные значения: строка. Может указываться в формате Helm-шаблона

{{ .Values.global.image.registry }}

injector.agentImage.repository

Репозиторий образа для агента образа. Возможные значения: строка. Может указываться в формате Helm-шаблона

{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-openbao/dev/openbao

injector.agentImage.tag

Тег образа для агента образа. Возможные значения: строка. Может указываться в формате Helm-шаблона

2.4.4-master

injector.agentImage.pullPolicy

Политика загрузки образа для агента образа. Возможные значения: строка. Может указываться в формате Helm-шаблона

IfNotPresent

injector.agentDefaults

Значения по умолчанию для контейнеров агента OpenBao

Отсутствует

injector.agentDefaults.cpuLimit

Ограничение центрального процессора для контейнера. Возможные значения в формате quantity: например 250m, 1

500m

injector.agentDefaults.cpuRequest

Запрос к центральному процессору для контейнера. Возможные значения в формате quantity: например 250m, 1

250m

injector.agentDefaults.memLimit

Ограничение памяти для контейнера. Возможные значения задаются в формате quantity: например 64Mi, 1Gi

128Mi

injector.agentDefaults.memRequest

Запрос памяти для контейнера. Возможные значения задаются в формате quantity: например 64Mi, 1Gi

64Mi

injector.agentDefaults.template

Тип шаблона по умолчанию для секретов, если пользовательский шаблон не задан. Возможные значения: json/map

map

injector.agentDefaults.templateConfig

Значения агента по умолчанию в секции template_config

Отсутствует

injector.agentDefaults.templateConfig.exitOnRetryFailure

Завершение работы агента при неудаче в обработке шаблона. Возможные значения: true/ false

true

injector.agentDefaults.templateConfig.staticSecretRenderInterval

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

Отсутствует

injector.livenessProbe

Определение пользовательских настроек работоспособности контейнера

Отсутствует

injector.livenessProbe.failureThreshold

Количество попыток при неуспешной проверке. Возможные значения: целое число

2

injector.livenessProbe.initialDelaySeconds

Время задержки в секундах перед выполнением первой liveness-проверки. Возможные значения: целое число

5

injector.livenessProbe.periodSeconds

Интервал времени в секундах между последовательными liveness-проверками. Возможные значения: целое число

2

injector.livenessProbe.successThreshold

Количество последовательных успешных liveness-проверок. Возможные значения: целое число

1

injector.livenessProbe.timeoutSeconds

Максимальное время в секундах для ответа от liveness-проверок, прежде чем считать проверку неуспешной. Возможные значения: целое число

5

injector.readinessProbe

Настройка проверок готовности контейнера

Отсутствует

injector.readinessProbe.failureThreshold

Количество последовательных неудачных проверок готовности контейнера. Возможные значения: целое число

2

injector.readinessProbe.initialDelaySeconds

Время задержки в секундах перед выполнением первой проверки готовности контейнера после запуска. Возможные значения: целое число

5

injector.readinessProbe.periodSeconds

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

2

injector.readinessProbe.successThreshold

Количество последовательных успешных проверок готовности. Возможные значения: целое число

1

injector.readinessProbe.timeoutSeconds

Максимальное время в секундах для ответа готовности прежде чем считать проверку неудачной. Возможные значения: целое число

5

injector.startupProbe

Настройка проверки запуска контейнера

Отсутствует

injector.startupProbe.failureThreshold

Количество последовательных неудачных проверок запуска, после которых контейнер считается неудачно запущенным и будет перезапущен. Возможные значения: целое число

12

injector.startupProbe.initialDelaySeconds

Время задержки в секундах после запуска контейнера перед проверкой. Возможные значения: целое число

5

injector.startupProbe.periodSeconds

Интервал времени в секундах между запуском проверок. Возможные значения: целое число

5

injector.startupProbe.successThreshold

Количество последовательных успешных проверок для контейнера в статусе «готов»

1

injector.startupProbe.timeoutSeconds

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

5

injector.authPath

Путь монтирования OpenBao. Возможные значения: строка. Может указываться в формате Helm-шаблона

auth/kubernetes

injector.logLevel

Уровень детализации логов. Доступные уровни: trace, debug, info, warn, error

info

injector.logFormat

Формат вывода логов. Доступные форматы: standard, json

standard

injector.revokeOnShutdown

Настройка дополнительных pod агента OpenBao на отзыв их токена при завершении работы. Возможные значения: true/false

false

injector.webhook

Настройки вебхука

Отсутствует

injector.webhook.failurePolicy

Реакция вебхука на отсутствие доступа или ошибку. Возможные значения: Fail — отклонить создание/обновление pod, если вебхук не отвечает или возвращает ошибку. Ignore — пропускать создание/обновление pod, даже если вебхук не работает

Ignore

injector.webhook.matchPolicy

Выбор ресурсов для вебхука. Возможные значения: Exact — применяется только к ресурсам, точно указанным в правилах (группа, версия, ресурс). Equivalent — применяется к ресурсам, которые считаются эквивалентными указанным (например, разные версии одного API)

Exact

injector.webhook.timeoutSeconds

Максимальное время в секундах для ответа от вебхука

30

injector.webhook.namespaceSelector

Пространства имен, к которым применяется вебхук. Возможные значения: YAML-объект

{}

injector.webhook.objectSelector

Фильтр по меткам конкретных объектов, к которым должен применяться вебхук. Возможные значения: строка. Может указываться в формате Helm-шаблона

Значение по умолчанию параметра injector.webhook.objectSelector

injector.webhook.annotations

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

{}

injector.failurePolicy

Поведение вебхука, если возникает ошибка. Параметр устарел, рекомендуется использовать современную альтернативу. Возможные значения: строка. Может указываться в формате Helm-шаблона

Ignore

injector.namespaceSelector

Фильтр по пространствам имен. Параметр устарел, рекомендуется использовать современную альтернативу. Возможные значения: YAML-объект

{}

injector.objectSelector

Фильтр по меткам конкретных объектов. Параметр устарел, рекомендуется использовать современную альтернативу. Возможные значения: YAML-объект

{}

injector.webhookAnnotations

Аннотации объекта для проверки вебхука. Параметр устарел, рекомендуется использовать современную альтернативу. Возможные значения: YAML-объект

{}

injector.certs

TLS-сертификаты и ключи, которые использует вебхук для безопасного HTTPS-соединения. Возможные значения: YAML-объект

secretName: null
caBundle: ''
certName: tls.crt
keyName: tls.key

injector.certs.secretName

Секреты Kubernetes, где хранятся TLS-сертификаты и ключи для вебхука. Возможные значения: null/~ или строка/значение в зависимости от шаблонов чарта

~

injector.certs.caBundle

Корневой или промежуточный сертификат CA для проверки подлинности TLS-сертификата. Возможные значения: строка. Может указываться в формате Helm-шаблона

Отсутствует

injector.certs.certName

Имя ключа внутри секрета, где хранится TLS-сертификат. Возможные значения: строка. Может указываться в формате Helm-шаблона

tls.crt

injector.certs.keyName

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

tls.key

injector.securityContext

Контекст безопасности для запуска контейнеров. Возможные значения: YAML-объект

pod: {}
container: {}

injector.securityContext.pod

Контекст безопасности на уровне pod. Возможные значения: YAML-объект

{}

injector.securityContext.container

Контекст безопасности на уровне контейнера. Возможные значения: YAML-объект

{}

injector.resources

Ресурсы (CPU и память), которые будут выделены контейнерам. Возможные значения: объект

{}

injector.extraEnvironmentVars

Дополнительные переменные окружения в контейнеры для настройки их поведения. Возможные значения: YAML-объект

{}

injector.affinity

Правила «привязки» (affinity) для pod

Значение по умолчанию параметра injector.affinity

injector.topologySpreadConstraints

Правила распределения pod по топологии кластера. Возможные значения: YAML-объект

[]

injector.tolerations

Допуск pod к узлам с определенными Taints. Возможные значения: YAML-объект

[]

injector.nodeSelector

Соответствие меткам узлов, на которых могут запускаться pod. Возможные значения: YAML-объект

{}

injector.priorityClassName

Класс приоритета для pod, определяющий приоритет при планировании. Возможные значения: YAML-объект

Отсутствует

injector.annotations

Дополнительные аннотации для ресурса. Возможные значения: строка

{}

injector.extraLabels

Дополнительные метки к pod. Возможные значения: YAML-объект

{}

injector.hostNetwork

Использование сетевого стека хоста вместо отдельного сетевого пространства. Возможные значения: true/false

false

injector.service

Группа настроек для Kubernetes Service, включая создание, имя и метаданные

Отсутствует

injector.service.annotations

Дополнительные аннотации для Kubernetes Service. Возможные значения: строка

{}

injector.service.extraLabels

Дополнительные метки для Kubernetes Service Возможные значения: YAML-объект

{}

injector.serviceAccount

Параметры учетных данных (serviceAccount), которыми будет использоваться pod

Отсутствует

injector.serviceAccount.annotations

Аннотации к учетным данным. Возможные значения: строка

{}

injector.podDisruptionBudget

PodDisruptionBudget (PDB) для pod, который ограничивает количество недоступных pod. Возможные значения: YAML-объект

{}

injector.strategy

Стратегия обновления для pod. Возможные значения: YAML-объект

{}

Значение по умолчанию параметра injector.webhook.objectSelector#

Значение по умолчанию параметра injector.webhook.objectSelector openbao-value-1.yaml:

Значение по умолчанию параметра injector.webhook.objectSelector
matchExpressions:
- key: app.kubernetes.io/name
  operator: NotIn
  values:
  - {{ template "openbao.name" . }}-agent-injector

Значение по умолчанию параметра injector.affinity#

Значение по умолчанию параметра injector.affinity openbao-value-2.yaml:

Значение по умолчанию параметра injector.affinity
podAntiAffinity:
  requiredDuringSchedulingIgnoredDuringExecution:
    - labelSelector:
        matchLabels:
          app.kubernetes.io/name: {{ template "openbao.name" . }}-agent-injector
          app.kubernetes.io/instance: "{{ .Release.Name }}"
          component: webhook
      topologyKey: kubernetes.io/hostname

server - параметры развертывания OpenBao Server (HA/raft, сервисы, ingress, хранилище, безопасность и ресурсы)#

Параметр

Описание

Значение по умолчанию

server.enabled

Включение/выключение компонента. Знак - предполагает наследование значения от параметра global.enabled. Возможные значения: true, false, -

-

server.image

Настройки образа с указанием репозитория и тега

Отсутствует

server.image.registry

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

{{ .Values.global.image.registry }}

server.image.repository

Путь репозитория образа, включая пространства имен, для данного компонента. Возможные значения: строка. Может указываться в формате Helm-шаблона

{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-openbao/dev/openbao

server.image.tag

Тег образа контейнера с версией и сборкой компонента. Возможные значения: строка

2.4.4-master

server.image.pullPolicy

Политика загрузки образа для Kubelet. Возможные значения: Always, IfNotPresent, Never

IfNotPresent

server.updateStrategyType

Стратегия обновления для StatefulSet

OnDelete

server.podManagementPolicy

Стратегия управления pod для StatefulSet при обновлении. Возможные значения: OrderedReady - pod обновляются поочередно, Parallel – pod обновляются параллельно

OrderedReady

server.logLevel

Уровень детализации логов. Доступные уровни: trace, debug, info, warn, error

debug

server.logFormat

Формат вывода логов. Доступные форматы: standard, json

Отсутствует

server.resources

Ресурсы (CPU и память), которые будут выделены контейнеру. Возможные значения: объект

{}

server.ingress

Создание Ingress-сервисов для внешнего доступа к pod OpenBao. Если развертывание происходит на OpenShift, блок игнорируется

Отсутствует

server.ingress.enabled

Управление созданием Ingress-ресурса на уровне Helm-чарта. Возможные значения: true/false

true

server.ingress.labels

Метки для Ingress-ресурса. Возможные значения: строка

{}

server.ingress.annotations

Аннотации для Ingress-ресурса. Возможные значения: строка

{}

server.ingress.ingressClassName

Имя Ingress-класса, который будет использоваться для маршрутизации трафика. Параметр устарел, рекомендуется использовать современную альтернативу. Возможные значения: строка. Может указываться в формате Helm-шаблона

nginx

server.ingress.pathType

Тип пути для маршрутизации Ingress-запросов. Возможные значения: Prefix, Exact

Prefix

server.ingress.activeService

Выбор Kubernetes Service для обработки входящего трафика через Ingress. Возможные значения: true/false

true

server.ingress.hosts

Список хостов для Ingress. Возможные значения: YAML-массив объектов в формате «хост»/«путь»

- host: openbao.{{ .Values.global.publicDomain | default "dapp.test" }}
paths: []

server.ingress.hosts[0]

Параметры первого хоста для маршрутизации входящего трафика через Ingress

Отсутствует

server.ingress.hosts[0].host

Доменное имя (хост), на которое будут направляться запросы через Ingress. Возможные значения: строка. Может указываться в формате Helm-шаблона

openbao.{{ .Values.global.publicDomain | default "dapp.test" }}

server.ingress.hosts[0].paths

Список путей, которые будут маршрутизироваться через Ingress для указанного хоста

[]

server.ingress.extraPaths

Дополнительные пути в Ingress-ресурс. Возможные значения: YAML-массив

[]

server.ingress.tls

TLS-настройка для Ingress (секреты и хосты). Возможные значения: YAML-массив объектов в формате «секрет»/«хост»

Значение по умолчанию параметра server.ingress.tls

server.ingress.tls[0]

TLS-шифрование для первого хоста в Ingress-ресурсе, включая имя секретного ключа с сертификатом для защищенного HTTPS-трафика

Отсутствует

server.ingress.tls[0].secretName

Имя секрета, содержащего TLS-сертификат и ключ. Возможные значения: строка. Может указываться в формате Helm-шаблона

ingress-tls

server.ingress.tls[0].hosts

Список хостов и правил маршрутизации для Ingress. Возможные значения: YAML-массив объектов в формате «хост»/«путь»

- openbao.{{ .Values.global.publicDomain | default "dapp.test" }}

server.ingress.tls[0].hosts[0]

Параметр конфигурации Helm-чарта OpenBao (контекст: server.ingress.tls[0]). Возможные значения: строка. Может указываться в формате Helm-шаблона

openbao.{{ .Values.global.publicDomain | default "dapp.test" }}

server.gateway

Настройка Gateway-ресурса, который будет использоваться для управления маршрутизацией трафика в кластере

Отсутствует

server.gateway.tlsRoute

Настройка Gateway для использования TLS для защищенной маршрутизации трафика

Отсутствует

server.gateway.tlsRoute.enabled

Использование TLS-маршрута в Gateway для шифрования трафика. Возможные значения: true/false

false

server.gateway.tlsRoute.labels

Метки для TLS-маршрута в Gateway. Возможные значения: строка

{}

server.gateway.tlsRoute.annotations

Аннотации к TLS-маршруту в Gateway. Возможные значения: строка

{}

server.gateway.tlsRoute.hosts

Список хостов, для которых будет применяться TLS-маршрут в Gateway. Возможные значения: YAML-массив

[]

server.gateway.tlsRoute.apiVersion

API для конфигурации маршрутов TLS в Gateway. Возможные значения: строка. Может указываться в формате Helm-шаблона

gateway.networking.k8s.io/v1alpha3

server.gateway.tlsRoute.activeService

Активный Service, который будет использоваться для обработки трафика через TLS-маршрут в Gateway. Возможные значения: true/false

true

server.gateway.tlsRoute.parentRefs

Список ссылок на «родительские» ресурсы (ParentRefs). Требуется указать хотя бы один шлюз с одним или несколькими TLS-слушателями, поскольку Helm-чарт не настраивает шлюзы по умолчанию. Возможные значения: YAML-массив

[]

server.hostAliases

Список дополнительных записей для добавления в файл /etc/hosts контейнеров. Возможные значения: массив объектов в формате ip/hostnames

[]

server.route

Настройка маршрута для OpenShift. Возможные значения: YAML-объект

Отсутствует

server.route.enabled

Маршрутизация запросов через маршруты (routes) для сервера Возможные значения: true/false

false

server.route.activeService

Настройка маршрута на активный сервис OpenBao. Возможные значения: true/false

true

server.route.labels

Назначение метки маршрутам. Возможные значения: строка

{}

server.route.annotations

Аннотации для маршрута. Возможные значения: строка

{}

server.route.host

Список хостов, для которых будет применяться маршрут. Возможные значения: строка. Может указываться в формате Helm-шаблона

chart-example.local

server.route.tls

Настройка маршрутов, поддерживающих TLS. Возможные значения: YAML-объект

termination: passthrough

server.route.tls.termination

Метод завершения TLS для маршрута. Возможные значения: строка. Может указываться в формате Helm-шаблона

passthrough

server.authDelegator

Создание привязки роли кластера для учетной записи службы

Отсутствует

server.authDelegator.enabled

Возможность делегирования аутентификации сторонним системам. Возможные значения: true/false

true

server.extraInitContainers

Список дополнительных init-контейнеров, которые запускаются перед основными контейнерами. Возможные значения: YAML-массив

[]

server.extraContainers

Список дополнительных контейнеров (sidecar) для выполнения вспомогательных функций. Возможные значения: null/~ или «строка»/«значение» в зависимости от шаблонов чарта

~

server.shareProcessNamespace

Параметр, который позволяет контейнерам OpenBao и дополнительным контейнерам совместно использовать пространство имен процессов. Возможные значения: true/false

false

server.extraArgs

Дополнительные аргументы для сервера OpenBao. Возможные значения: строка. Может указываться в формате Helm-шаблона

Строка

server.extraPorts

Список дополнительных портов для добавления в StatefulSet. Возможные значения: YAML-массив

[]

server.readinessProbe

Конфигурация проверки готовности контейнера

Отсутствует

server.readinessProbe.enabled

Включение/выключение проверки готовности контейнера. Возможные значения: true/false

true

server.readinessProbe.port

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

8200

server.readinessProbe.failureThreshold

Количество последовательных неудачных проверок готовности контейнера. Возможные значения: целое число

2

server.readinessProbe.initialDelaySeconds

Время задержки в секундах перед выполнением первой проверки готовности контейнера после запуска. Возможные значения: целое число

5

server.readinessProbe.periodSeconds

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

5

server.readinessProbe.successThreshold

Количество последовательных успешных проверок готовности. Возможные значения: целое число

1

server.readinessProbe.timeoutSeconds

Максимальное время в секундах для ответа готовности прежде чем считать проверку неудачной. Возможные значения: целое число

3

server.livenessProbe

Определение пользовательских настроек работоспособности контейнера

Отсутствует

server.livenessProbe.enabled

Включение liveness-проверки контейнера. Возможные значения: true/false

false

server.livenessProbe.execCommand

Команда, которая будет выполняться для liveness-проверки контейнера. Возможные значения: YAML-массив

[]

server.livenessProbe.path

Путь для liveness-проверки контейнера через HTTP-запрос. Возможные значения: строка. Может указываться в формате Helm-шаблона

/v1/sys/health?standbyok=true

server.livenessProbe.port

Порт для liveness-проверки контейнера при использовании HTTP-запроса. Возможные значения: целое число

8200

server.livenessProbe.failureThreshold

Количество попыток при неуспешной проверке. Возможные значения: целое число

2

server.livenessProbe.initialDelaySeconds

Время задержки в секундах перед выполнением первой liveness-проверки. Возможные значения: целое число

60

server.livenessProbe.periodSeconds

Интервал времени в секундах между последовательными liveness-проверками. Возможные значения: целое число

5

server.livenessProbe.successThreshold

Количество последовательных успешных liveness-проверок. Возможные значения: целое число

1

server.livenessProbe.timeoutSeconds

Максимальное время в секундах для ответа от liveness-проверок, прежде чем считать проверку неуспешной. Возможные значения: целое число

3

server.terminationGracePeriodSeconds

Время в секундах, необходимое для корректного завершения работы pod. Возможные значения: целое число

10

server.preStopSleepSeconds

Время «сна» на этапе preStop перед завершением работы pod. Возможные значения: целое число

5

server.postStart

Команды, которые нужно выполнить после старта pod. Возможные значения: YAML-массив

[]

server.extraEnvironmentVars

Дополнительные переменные окружения в контейнеры для настройки их поведения. Возможные значения: YAML-объект

{}

server.extraSecretEnvironmentVars

Список дополнительных переменных окружения, значения которых берутся из секретов. Возможные значения: YAML-массив

[]

server.extraVolumes

Дополнительные тома к pod. Параметр устарел, рекомендуется использовать современную альтернативу. Возможные значения: YAML-массив

[]

server.volumes

Список томов, доступных для всех контейнеров. Возможные значения: null/~ или «строка»/«значение» в зависимости от шаблонов чарта

~

server.volumeMounts

Список монтируемых томов для основного сервера контейнеров. Возможные значения: null/~ или «строка»/«значение» в зависимости от шаблонов чарта

~

server.affinity

Правила «привязки» (affinity) для pod. Возможные значения: YAML-объект

Значение по умолчанию параметра server.affinity

server.topologySpreadConstraints

Правила распределения pod по топологии кластера. Возможные значения: YAML-объект

[]

server.tolerations

Допуск pod к узлам с определенными Taints. Возможные значения: YAML-объект

[]

server.nodeSelector

Соответствие меткам узлов, на которых могут запускаться pod. Возможные значения: YAML-объект

{}

server.networkPolicy

Настройки NetworkPolicy для ограничения сетевых взаимодействий с компонентом

Отсутствует

server.networkPolicy.enabled

Включение NetworkPolicy для ограничения сетевых взаимодействий. Возможные значения: true/false

false

server.networkPolicy.egress

Включение правила исходящего трафика. Возможные значения: «объект»/«массив»

[]

server.networkPolicy.ingress

Включение правила входящего трафика. Возможные значения: «объект»/«массив»

Отсутствует

server.networkPolicy.ingress[0]

Включение правила входящего трафика, устанавливая источники подключения в пределах сети

Значение по умолчанию параметра server.networkPolicy.ingress[0]

server.networkPolicy.ingress[0].from

Список источников (например, IP-адресов, pod или сетевых пространств), с которых разрешен входящий трафик. Возможные значения: «объект»/«массив»

- namespaceSelector: {}

server.networkPolicy.ingress[0].from[0]

Конкретный источник для входящего трафика в соответствии с первой позицией в списке from. Возможные значения: «объект»/«массив»

namespaceSelector: {}

server.networkPolicy.ingress[0].from[0].namespaceSelector

Ограничение разрешенного входящего трафика с pod, находящихся в определенном пространстве имен Возможные значения: «объект»/«массив»

{}

server.networkPolicy.ingress[0].ports

Список портов, на которых разрешен входящий трафик для pod

Отсутствует

server.networkPolicy.ingress[0].ports[0]

Конкретный порт, на который разрешен входящий трафик

Отсутствует

server.networkPolicy.ingress[0].ports[0].port

Конкретный номер порта, на который разрешен входящий трафик. Возможные значения: «объект»/«массив»

8200

server.networkPolicy.ingress[0].ports[0].protocol

Протокол для входящего трафика на указанный порт. Возможные значения: «объект»/«массив»

TCP

server.networkPolicy.ingress[0].ports[1]

Второй порт, на который разрешен входящий трафик. Возможные значения: «объект»/«массив»

Отсутствует

server.networkPolicy.ingress[0].ports[1].port

Номер второго порта, на который разрешен входящий трафик. Возможные значения: «объект»/«массив»

8201

server.networkPolicy.ingress[0].ports[1].protocol

Протокол для входящего трафика на второй порт. Возможные значения: «объект»/«массив»

TCP

server.priorityClassName

Класс приоритета для pod, определяющий приоритет при планировании. Возможные значения: YAML-объект

Отсутствует

server.extraLabels

Дополнительные метки для pod. Возможные значения: YAML-объект

{}

server.annotations

Дополнительные аннотации для pod. Возможные значения: строка

{}

server.configAnnotation

Аннотация с хешем конфигурации OpenBao. Возможные значения: true/false

false

server.service

Группа настроек для Kubernetes Service/ServiceAccount. Возможные значения: объект

Отсутствует

server.service.enabled

Создание сервиса для приложения, позволяя включить или отключить его доступность в сети. Возможные значения: true/false

true

server.service.active

Состоянием активности сервиса, включая его из маршрутизации трафика

Отсутствует

server.service.active.annotations

Аннотации к сервису, что может быть использовано для настройки дополнительных метаданных или поведения. Возможные значения: YAML-объект

Отсутствует

server.service.active.extraLabels

Дополнительные метки для активного сервиса. Возможные значения: YAML-объект

{}

server.service.standby

Состояние резервного (standby) сервиса OpenBao, позволяя временно отключить его от активного обслуживания трафика, но сохраняя возможность быстрого активации. Возможные значения: YAML-объект

{}

server.service.standby.enabled

Включение/выключение резервного (standby) сервиса OpenBao на уровне Helm-чарта. Возможные значения: true/false

true

server.service.standby.annotations

Аннотации к резервному сервису, что может быть использовано для настройки дополнительных метаданных или поведения. Возможные значения: «строка:строка»

{}

server.service.standby.extraLabels

Дополнительные метки для резервного сервиса. Возможные значения: YAML-объект

{}

server.service.instanceSelector

Конкретные pod для привязки к OpenBao, используя селектор меток для фильтрации целевых ресурсов. Возможные значения: YAML-объект

enabled: true

server.service.instanceSelector.enabled

Использование селектора экземпляров (instanceSelector) для привязки сервиса к определенным подам на уровне Helm-чарта. Возможные значения: true/false

true

server.service.ipFamilyPolicy

Семейства IP-адресов (IPv4 или IPv6), что использует OpenBao. Возможные значения: YAML-массив

clusterIP: None

server.service.ipFamilies

Поддерживаемые семейства IP (например, IPv4 или IPv6) для сервиса. Возможные значения: строка. Может указываться в формате Helm-шаблона

[]

server.service.publishNotReadyAddresses

Адреса pod, которые еще не готовы (NotReady), для того чтобы они были доступны через сервис, даже если не прошли проверку готовности. Возможные значения: true/false

true

server.service.externalTrafficPolicy

Определение обработки внешних трафиков для сервисов. Возможные значения: строка. Может указываться в формате Helm-шаблона

Cluster

server.service.port

Порт, на котором OpenBao будет слушать входящий трафик и перенаправлять его на соответствующие pod. Возможные значения: целое число

8200

server.service.targetPort

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

8200

server.service.annotations

Дополнительные аннотации для Kubernetes Service. Возможные значения: строка

{}

server.service.extraLabels

Дополнительные метки для Kubernetes Service. Возможные значения: YAML-объект

{}

server.dataStorage

Параметры хранения данных OpenBao

Отсутствует

server.dataStorage.enabled

Использование хранилища данных. Возможные значения: true/false

false

server.dataStorage.size

Размер хранилища данных для OpenBao. Возможные значения задаются в формате quantity: например 64Mi, 1Gi

10Gi

server.dataStorage.mountPath

Путь для монтирования хранилища данных OpenBao. Возможные значения: объект

/openbao/data

server.dataStorage.storageClass

Класс хранилища данных OpenBao. Возможные значения: объект

~

server.dataStorage.accessMode

Режим доступа к хранилищу данных OpenBao. Возможные значения: ReadWriteOnce, ReadOnlyMany или ReadWriteMany

ReadWriteOnce

server.dataStorage.annotations

Аннотации хранилища данных. Возможные значения: «строка:строка»

{}

server.dataStorage.labels

Метки хранилища данных. Возможные значения: «строка:строка»

{}

server.persistentVolumeClaimRetentionPolicy

Политика PersistentVolumeClaim (PVC) после удаления pod. Возможные значения: YAML-объект

{}

server.auditStorage

Параметры для хранения данных аудита OpenBao

Отсутствует

server.auditStorage.enabled

Использование аудита. Возможные значения: true/false

false

server.auditStorage.size

Размер хранилища данных аудита OpenBao. Возможные значения задаются в формате quantity: например 64Mi, 1Gi

10Gi

server.auditStorage.mountPath

Путь, по которому монтируется хранилище данных аудита. Возможные значения: объект

/openbao/audit

server.auditStorage.storageClass

Класс хранилища для данных аудита OpenBao. Возможные значения: объект

~

server.auditStorage.accessMode

Режим доступа для хранилища данных аудита OpenBao. Возможные значения: ReadWriteOnce, ReadOnlyMany или ReadWriteMany

ReadWriteOnce

server.auditStorage.annotations

Аннотации хранилища данных аудита. Возможные значения: «строка:строка»

{}

server.auditStorage.labels

Метки хранилища данных аудита. Возможные значения: «строка:строка»

{}

server.dev

Режим разработки, где OpenBao работает без дальнейшей настройки

Отсутствует

server.dev.enabled

Включение/выключение разработки режим для OpenBao. Возможные значения: true/false

false

server.dev.devRootToken

root-токен в режиме разработки, который предоставляет полномочия для доступа и управления компонентами Возможные значения: строка. Может указываться в формате Helm-шаблона

root

server.standalone

Запуск OpenBao в автономном режиме, без необходимости в других компонентах или зависимостях, которые обычно требуются в кластерной среде

Отсутствует

server.standalone.enabled

Включение/выключение автономного режима на уровне Helm-чарта. Возможные значения: true, false, -

-

server.standalone.config

Конфигурация для автономного режима работы OpenBao

Значение по умолчанию параметра server.standalone.config

server.ha

Запуск OpenBao в режиме высокой доступности (High Availability) с использованием внешнего хранилища для данных и аудита

Отсутствует

server.ha.enabled

Включение/выключение режима высокой доступности. Возможные значения: true/false

false

server.ha.replicas

Количество реплик при развертывании в режиме высокой доступности. Возможные значения: целое число

3

server.ha.apiAddr

Адрес API для конфигурации в режиме высокой доступности. Возможные значения: null/~ или «строка»/«значение» в зависимости от шаблонов чарта

~

server.ha.clusterAddr

Адрес кластера для конфигурации в режиме высокой доступности. Возможные значения: строка. Может указываться в формате Helm-шаблона

http://$(HOSTNAME).{{ template "openbao.fullname" . }}-internal:8201

server.ha.raft

Настройка алгоритма Raft для обеспечения согласованности и репликации состояния между несколькими экземплярами в режиме высокой доступности

Отсутствует

server.ha.raft.enabled

Включение/выключение Raft в режиме высокой доступности. Возможные значения: true/false

true

server.ha.raft.setNodeId

Принудительное указание уникального идентификатора узла в Raft-кластере, чтобы узлы корректно различались и не конфликтовали при перезапусках или миграциях. Возможные значения: true/false

true

server.ha.raft.config

Конфигурация Raft-кластера (список узлов и их адреса) для режима высокой доступности. Возможные значения: объект

Значение по умолчанию параметра server.ha.raft.config

server.ha.config

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

Значение по умолчанию параметра server.ha.config

server.ha.disruptionBudget

Настройка PodDisruptionBudget, ограничивающая количество pod в режиме высокой доступности, которые могут быть одновременно недоступны при прерываниях

Отсутствует

server.ha.disruptionBudget.enabled

Создание PodDisruptionBudget для pod. Возможные значения: true/false

true

server.ha.disruptionBudget.maxUnavailable

Максимальное количество pod, которые можно одновременно вывести из работы при прерываниях. Возможные значения: null/~ или «строка»/«значение» в зависимости от шаблонов чарта

~

server.serviceAccount

Настройки ServiceAccount, используемого для pod сервера

Отсутствует

server.serviceAccount.create

Создание ServiceAccount Helm-чартом автоматически. Возможные значения: true/false

true

server.serviceAccount.name

Имя ServiceAccount, который будет привязан к pod. Возможные значения: строка

Отсутствует

server.serviceAccount.createSecret

Создание секрета с долгоживущим токеном для ServiceAccount. Возможные значения: true/false

false

server.serviceAccount.annotations

Аннотации к ресурсу ServiceAccount для интеграции с механизмами Kubernetes и внешними системами. Возможные значения: «строка:строка»

{}

server.serviceAccount.extraLabels

Дополнительные метки к ServiceAccount. Возможные значения: YAML-объект

{}

server.serviceAccount.serviceDiscovery

Настройка RoleBinding для ServiceAccount. Возможные значения: YAML-объект

enabled: true

server.serviceAccount.serviceDiscovery.enabled

Создание RoleBinding и прав для ServiceAccount, необходимых серверу для регистрации и обнаружения сервисов. Возможные значения: true/false

true

server.statefulSet

Настройки StatefulSet, в котором запускаются pod OpenBao

Отсутствует

server.statefulSet.annotations

Аннотации к StatefulSet для интеграций. Возможные значения: «строка:строка»

{}

server.statefulSet.securityContext

Определение политик безопасности и контекст выполнения StatefulSet. Возможные значения: YAML-объект

Отсутствует

server.statefulSet.securityContext.pod

Определение securityContext на уровне pod для StatefulSet. Возможные значения: YAML-объект

{}

server.statefulSet.securityContext.container

Определение securityContext на уровне контейнера для StatefulSet. Возможные значения: YAML-объект

{}

server.hostNetwork

Использование сетевого стека напрямую. Возможные значения: true/false

false

Значение по умолчанию параметра server.ingress.tls#

Значение по умолчанию параметра server.ingress.tls openbao-value-3.yaml:

Значение по умолчанию параметра server.ingress.tls
- secretName: ingress-tls
  hosts:
  - openbao.{{ .Values.global.publicDomain | default "dapp.test" }}

Значение по умолчанию параметра server.affinity#

Значение по умолчанию параметра server.affinity openbao-value-4.yaml:

Значение по умолчанию параметра server.affinity
podAntiAffinity:
  requiredDuringSchedulingIgnoredDuringExecution:
    - labelSelector:
        matchLabels:
          app.kubernetes.io/name: {{ template "openbao.name" . }}
          app.kubernetes.io/instance: "{{ .Release.Name }}"
          component: server
      topologyKey: kubernetes.io/hostname

Значение по умолчанию параметра server.networkPolicy.ingress[0]#

Значение по умолчанию параметра server.networkPolicy.ingress[0] openbao-value-5.yaml:

Значение по умолчанию параметра server.networkPolicy.ingress[0]
from:
- namespaceSelector: {}
ports:
- port: 8200
  protocol: TCP
- port: 8201
  protocol: TCP

Значение по умолчанию параметра server.standalone.config#

Значение по умолчанию параметра server.standalone.config openbao-value-6.yaml:

Значение по умолчанию параметра server.standalone.config
ui = true

listener "tcp" {
  tls_disable = 1
  address = "[::]:8200"
  cluster_address = "[::]:8201"
  # Enable unauthenticated metrics access (necessary for Prometheus Operator)
  telemetry {
    unauthenticated_metrics_access = "true"
  }
}
storage "file" {
  path = "/openbao/data"
}

# Example configuration for using auto-unseal, using Google Cloud KMS. The
# GKMS keys must already exist, and the cluster must have a service account
# that is authorized to access GCP KMS.
#seal "gcpckms" {
#   project     = "openbao-helm-dev"
#   region      = "global"
#   key_ring    = "openbao-helm-unseal-kr"
#   crypto_key  = "openbao-helm-unseal-key"
#}

# Example configuration for enabling Prometheus metrics in your config.
telemetry {
  prometheus_retention_time = "30s"
  disable_hostname = true
}

Значение по умолчанию параметра server.ha.raft.config#

Значение по умолчанию параметра server.ha.raft.config openbao-value-7.yaml:

Значение по умолчанию параметра server.ha.raft.config
ui = true
api_addr     = "http://POD_IP:8200"
cluster_addr = "http://HOSTNAME.openbao-internal:8201"

listener "tcp" {
  tls_disable = 1
  address = "[::]:8200"
  cluster_address = "[::]:8201"
  # Enable unauthenticated metrics access (necessary for Prometheus Operator)
  telemetry {
    unauthenticated_metrics_access = "true"
  }
}

storage "raft" {
  path = "/openbao/data"
}

service_registration "kubernetes" {}

Значение по умолчанию параметра server.ha.config#

Значение по умолчанию параметра server.ha.config openbao-value-8.yaml:

Значение по умолчанию параметра server.ha.config
ui = true
api_addr     = "http://POD_IP:8200"
cluster_addr = "http://HOSTNAME.openbao-internal:8201"

listener "tcp" {
  tls_disable = 1
  address = "[::]:8200"
  cluster_address = "[::]:8201"
}
# storage "consul" {
#   path = "openbao"
#   address = "HOST_IP:8500"
# }

service_registration "kubernetes" {}

# Example configuration for using auto-unseal, using Google Cloud KMS. The
# GKMS keys must already exist, and the cluster must have a service account
# that is authorized to access GCP KMS.
#seal "gcpckms" {
#   project     = "openbao-helm-dev-246514"
#   region      = "global"
#   key_ring    = "openbao-helm-unseal-kr"
#   crypto_key  = "openbao-helm-unseal-key"
#}

# Example configuration for enabling Prometheus metrics.
# If you are using Prometheus Operator you can enable a ServiceMonitor resource below.
# You may wish to enable unauthenticated metrics in the listener block above.
telemetry {
  prometheus_retention_time = "30s"
  disable_hostname = true
}

ui - параметры web UI, публикуемого чартом#

Параметр

Описание

Значение по умолчанию

ui.enabled

Создание и публикация UI-сервиса OpenBao. Возможные значения: true/false

true

ui.publishNotReadyAddresses

Публикация адресов pod через Service, даже если pod еще не готовы. Возможные значения: true/false

true

ui.activeOpenbaoPodOnly

Ограничение Service, чтобы выбирался только активный pod OpenBao. Возможные значения: true/false

false

ui.serviceType

Тип Service для UI. Возможные значения: ClusterIP, NodePort или LoadBalancer

ClusterIP

ui.serviceNodePort

Конкретный порт на узлах (NodePort), через который Service UI будет доступен извне кластера. Возможные значения: null/~ или «строка»/«значение» в зависимости от шаблонов чарта

~

ui.externalPort

Внешний порт, через который UI будет доступен. Возможные значения: целое число

8200

ui.targetPort

Порт контейнера, на который Service будет перенаправлять трафик UI. Возможные значения: целое число

8200

ui.serviceIPFamilyPolicy

Семейства IP-адресов (IPv4 или IPv6), что использует OpenBao. Возможные значения: YAML-массив

Отсутствует

ui.serviceIPFamilies

Поддерживаемые семейства IP (например, IPv4 или IPv6). Возможные значения: строка. Может указываться в формате Helm-шаблона

[]

ui.externalTrafficPolicy

Определение обработки внешних трафиков для сервисов. Возможные значения: строка. Может указываться в формате Helm-шаблона

Cluster

ui.annotations

Аннотации к Kubernetes Service UI для интеграции. Возможные значения: «строка:строка»

{}

ui.extraLabels

Дополнительные метки к Kubernetes Service UI. Возможные значения: YAML-объект

{}

csi - настройки CSI-провайдера для выдачи секретов/агента через Kubernetes CSI#

Параметр

Описание

Значение по умолчанию

csi.enabled

Включение/выключение компонента CSI в Helm-чарте. Возможные значения: true/false

false

csi.image

Настройки образа контейнера для CSI. Возможные значения: YAML-объект

Отсутствует

csi.image.registry

Реестр для загрузки образа CSI. Возможные значения: строка, пустое значение. Используется значение, сформированное Helm-чартом

quay.io

csi.image.repository

Репозиторий образа контейнера CSI. Возможные значения: строка. Может указываться в формате Helm-шаблона

openbao/openbao-csi-provider

csi.image.tag

Тег образа контейнера CSI с версией и сборкой компонента. Возможные значения: строка

2.0.0

csi.image.pullPolicy

Политика загрузки образа для Kubelet. Возможные значения: Always, IfNotPresent, Never

IfNotPresent

csi.volumes

Список томов, доступных для всех контейнеров. Возможные значения: YAML-массив

[]

csi.volumeMounts

Список монтируемых томов для основного сервера контейнеров. Возможные значения: YAML-массив

[]

csi.resources

Ресурсы (CPU и память), которые будут выделены контейнеру. Возможные значения: объект

{}

csi.hmacSecretName

Имя секрета, содержащего HMAC-ключи, используемые CSI-драйвером для аутентификации и подписи запросов. Возможные значения: строка. Может указываться в формате Helm-шаблона

""

csi.daemonSet

Настройка DaemonSet для CSI провайдера

Отсутствует

csi.daemonSet.updateStrategy

Стратегия обновления DaemonSet. Возможные значения: YAML-объект

Отсутствует

csi.daemonSet.updateStrategy.type

Тип стратегии обновления DaemonSet. Возможные значения: RollingUpdate/OnDelete

RollingUpdate

csi.daemonSet.updateStrategy.maxUnavailable

Максимальное количество недоступных подов при обновлении. Возможные значения: строка. Может указываться в формате Helm-шаблона

""

csi.daemonSet.annotations

Аннотации для DaemonSet для интеграции. Возможные значения: «строка:строка»

{}

csi.daemonSet.providersDir

Путь к CSI-провайдерам на хосте. Возможные значения: строка. Может указываться в формате Helm-шаблона

/etc/kubernetes/secrets-store-csi-providers

csi.daemonSet.kubeletRootDir

Путь к Kubelet на хосте. Возможные значения: строка. Может указываться в формате Helm-шаблона

/var/lib/kubelet

csi.daemonSet.endpoint

Путь к конечной точке для провайдера. Возможные значения: строка. Может указываться в формате Helm-шаблона

/provider/openbao.sock

csi.daemonSet.extraLabels

Дополнительные метки для DaemonSet. Возможные значения: YAML-объект

{}

csi.daemonSet.securityContext

Политики безопасности для DaemonSet. Возможные значения: YAML-объект

pod: {}
container: {}

csi.daemonSet.securityContext.pod

Определение securityContext на уровне pod для StatefulSet. Возможные значения: YAML-объект

{}

csi.daemonSet.securityContext.container

Определение securityContext на уровне контейнера для StatefulSet. Возможные значения: YAML-объект

{}

csi.pod

Настройки pod для CSI

Отсутствует

csi.pod.annotations

Аннотации для pod. Возможные значения: «строка:строка»

{}

csi.pod.tolerations

Настройки pod для CSI-драйвера, чтобы работать на узлах с определенными taints. Возможные значения: YAML-объект

[]

csi.pod.nodeSelector

Соответствие меткам узлов, на которых могут запускаться pod. Возможные значения: YAML-объект

{}

csi.pod.affinity

Правила «привязки» (affinity) для pod. Возможные значения: YAML-объект

{}

csi.pod.extraLabels

Дополнительные метки для pod. Возможные значения: YAML-объект

{}

csi.agent

Настройки агента CSI

Отсутствует

csi.agent.enabled

Включение/выключение агента CSI. Возможные значения: true/false

true

csi.agent.extraArgs

Дополнительные аргументы для агента CSI. Возможные значения: YAML-массив

[]

csi.agent.image

Настройки образа агента CSI

Отсутствует

csi.agent.image.registry

Реестр для образа агента CSI. Возможные значения: строка, пустое значение. Используется значение, сформированное Helm-чартом

{{ .Values.global.image.registry }}

csi.agent.image.repository

Репозиторий образа агента CSI. Возможные значения: строка. Может указываться в формате Helm-шаблона

{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-openbao/dev/openbao

csi.agent.image.tag

Тег образа агента с версией и сборкой компонента. Возможные значения: строка

2.4.4-master

csi.agent.image.pullPolicy

Политика загрузки образа для Kubelet. Возможные значения: Always, IfNotPresent, Never

IfNotPresent

csi.agent.logFormat

Формат вывода логов. Доступные форматы: standard, json

standard

csi.agent.logLevel

Уровень детализации логов. Доступные уровни: trace, debug, info, warn, error

info

csi.agent.resources

Ресурсы (CPU и память), которые будут выделены контейнеру. Возможные значения: объект

{}

csi.priorityClassName

Класс приоритета для pod, определяющий приоритет при планировании. Возможные значения: YAML-объект

Отсутствует

csi.serviceAccount

Настройки ServiceAccount для CSI

Отсутствует

csi.serviceAccount.annotations

Аннотации для ServiceAccount. Возможные значения: «строка:строка»

{}

csi.serviceAccount.extraLabels

Дополнительные метки к ServiceAccount. Возможные значения: YAML-объект

{}

csi.readinessProbe

Конфигурация проверки готовности контейнера

Отсутствует

csi.readinessProbe.failureThreshold

Количество последовательных неудачных проверок готовности контейнера. Возможные значения: целое число

2

csi.readinessProbe.initialDelaySeconds

Время задержки в секундах перед выполнением первой проверки готовности контейнера после запуска. Возможные значения: целое число

5

csi.readinessProbe.periodSeconds

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

5

csi.readinessProbe.successThreshold

Количество последовательных успешных проверок готовности. Возможные значения: целое число

1

csi.readinessProbe.timeoutSeconds

Максимальное время в секундах для ответа готовности прежде чем считать проверку неудачной. Возможные значения: целое число

3

csi.livenessProbe

Определение пользовательских настроек работоспособности контейнера

Отсутствует

csi.livenessProbe.failureThreshold

Количество попыток при неуспешной проверке. Возможные значения: целое число

2

csi.livenessProbe.initialDelaySeconds

Время задержки в секундах перед выполнением первой liveness-проверки. Возможные значения: целое число

5

csi.livenessProbe.periodSeconds

Интервал времени в секундах между последовательными liveness-проверками. Возможные значения: целое число

5

csi.livenessProbe.successThreshold

Количество последовательных успешных liveness-проверок. Возможные значения: целое число

1

csi.livenessProbe.timeoutSeconds

Максимальное время в секундах для ответа от liveness-проверок, прежде чем считать проверку неуспешной. Возможные значения: целое число

3

csi.debug

Режим отладки для CSI-драйвера, увеличивая уровень логирования и подробность диагностических сообщений. Возможные значения: true/false

false

csi.extraArgs

Дополнительные аргументы для CSI-провайдера

[]

Параметр

Описание

Значение по умолчанию

serverTelemetry.serviceMonitor

Настройки ServiceMonitor

Отсутствует

serverTelemetry.serviceMonitor.enabled

Включение/выключение ServiceMonitor. Возможные значения: true / false

true

serverTelemetry.serviceMonitor.selectors

Метки селектора для ServiceMonitor. Если значение не задано, присваивается: release: prometheus. Возможные значения: YAML-объект

{}

serverTelemetry.serviceMonitor.interval

Интервал сбора метрик. Возможные значения: строка. Может указываться в формате Helm-шаблона

30s

serverTelemetry.serviceMonitor.scrapeTimeout

Время ожидания сбора метрик. Возможные значения: строка. Может указываться в формате Helm-шаблона

10s

serverTelemetry.serviceMonitor.tlsConfig

Настройки TLS для безопасного подключения. Возможные значения: YAML-объект

{}

serverTelemetry.serviceMonitor.authorization

Авторизационные данные. Возможные значения: YAML-объект

{}

serverTelemetry.serviceMonitor.scrapeClass

Значение scrapeClass для использования в ServiceMonitor. Возможные значения: строка. Может указываться в формате Helm-шаблона

Отсутствует

serverTelemetry.prometheusRules

Настройки конфигурации для правил Prometheus

Отсутствует

serverTelemetry.prometheusRules.enabled

Включение/выключение правил Prometheus. Возможные значения: true / false

false

serverTelemetry.prometheusRules.selectors

Метки селектора для PrometheusRules. Если значение не задано, присваивается: release: prometheus. Возможные значения: YAML-объект

{}

serverTelemetry.prometheusRules.rules

Правила мониторинга для Prometheus. Возможные значения: YAML-массив объектов

[]

serverTelemetry.grafanaDashboard

Настройки конфигурации дашборда. Возможные значения: YAML-объект

Отсутствует

serverTelemetry.grafanaDashboard.enabled

Включение/выключение дашборда. Возможные значения: true / false

false

serverTelemetry.grafanaDashboard.defaultLabel

Добавляет метку по умолчанию: grafana_dashboard: "1". Возможные значения: true / false

true

serverTelemetry.grafanaDashboard.extraLabel

Дополнительные метки для дашборда ConfigMap. Возможные значения: YAML-объект

{}

serverTelemetry.grafanaDashboard.extraAnnotations

Дополнительные аннотации для дашборда ConfigMap. Возможные значения: YAML-объект

{}

extraObjects - дополнительные Kubernetes-объекты, применяемые вместе с релизом#

Параметр

Описание

Значение по умолчанию

extraObjects

Список дополнительных манифестов, которые Helm применит вместе с чартом (CRD, RBAC, Secret, ConfigMap и др.). Возможные значения: YAML-массив объектов

[]

snapshotAgent - настройки агента снапшотов для обслуживания кластера OpenBao#

Параметр

Описание

Значение по умолчанию

snapshotAgent.enabled

Включение/выключение компонента или функции на уровне Helm-чарта. Возможные значения: true / false

false

snapshotAgent.annotations

Дополнительные аннотации агента. Используются для интеграций с политиками безопасности, мониторингом, аудитом и т.д. Возможные значения: YAML-строка

{}

snapshotAgent.schedule

Расписание запуска CronJob. Возможные значения: строка. Может указываться в формате Helm-шаблона

*/15 * * * *

snapshotAgent.restartPolicy

Настройка политики перезапуска. Возможные значения: строка. Может указываться в формате Helm-шаблона

OnFailure

snapshotAgent.serviceAccount

Учетные данные для Kubernetes Service/ServiceAccount

Отсутствует

snapshotAgent.serviceAccount.create

Создание нового сервисного аккаунта или использование уже существующего. Возможные значения: true / false

true

snapshotAgent.serviceAccount.name

Имя сервисного аккаунта. Если значение не указано, имя будет сгенерировано автоматически. Возможные значения: строка

Отсутствует

snapshotAgent.serviceAccount.annotations

Дополнительные аннотации для сервисного аккаунта. Используются для интеграций с политиками безопасности, мониторингом, аудитом и т.д. Возможные значения: YAML-строка

{}

snapshotAgent.serviceAccount.extraLabels

Дополнительные метки. Возможные значения: YAML-объект

{}

snapshotAgent.image

Настройки образа для агента снимков

Отсутствует

snapshotAgent.image.repository

Путь к репозиторию образа (включая пространство имен) для данного компонента. Возможные значения: строка. Может указываться в формате Helm-шаблона

ghcr.io/openbao/openbao-snapshot-agent

snapshotAgent.image.tag

Тег образа с версией и сборкой компонента. Возможные значения: строка

0.2.4

snapshotAgent.extraVolumes

Добавление дополнительных томов для CronJob агента снимков. Возможные значения: YAML-объект

{}

snapshotAgent.s3CredentialsSecret

Учетные данные S3 для доступа к бакетам. Возможные значения: строка. Может указываться в формате Helm-шаблона

my-s3-credentials

snapshotAgent.config

Настройки конфигурации для агента снимков

Отсутствует

snapshotAgent.config.s3Host

Хост S3-хранилища. Возможные значения: строка. Может указываться в формате Helm-шаблона

s3.eu-east-1.amazonaws.com

snapshotAgent.config.s3Bucket

Бакет S3-хранилища. Возможные значения: строка. Может указываться в формате Helm-шаблона

openbao-snapshots

snapshotAgent.config.s3Uri

Путь к бакету в S3-хранилище. Возможные значения: строка. Может указываться в формате Helm-шаблона

s3://openbao-snapshots

snapshotAgent.config.s3ExpireDays

Срок (в днях), после которого снепшоты будут удалены из S3-хранилища. Возможные значения: строка. Может указываться в формате Helm-шаблона

14

snapshotAgent.config.s3cmdExtraFlag

Дополнительные флаги для утилиты командной строки. Возможные значения: строка. Может указываться в формате Helm-шаблона

-v

snapshotAgent.config.baoAuthPath

Путь для аутентификации. Возможные значения: строка. Может указываться в формате Helm-шаблона

kubernetes

snapshotAgent.config.baoRole

Роль. Возможные значения: строка. Может указываться в формате Helm-шаблона

snapshot

snapshotAgent.resources

Ресурсы, которые будут выделены контейнерам. Возможные значения: объект resources (requests/limits по cpu/memory/ephemeral-storage)

{}

snapshotAgent.securityContext

Контекст безопасности для запуска контейнеров

snapshotAgent.securityContext.pod

Контекст безопасности на уровне pod. Возможные значения: YAML-объект

{}

snapshotAgent.securityContext.container

Контекст безопасности на уровне контейнера. Возможные значения: YAML-объект

{}