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: <key1>
    Unseal Key 2: <key2>
    Unseal Key 3: <key3>
    Unseal Key 4: <key4>
    Unseal Key 5: <key5>
    
    Initial Root Token: <token>
    
  2. Распечатайте (разблокируйте) OpenBao:

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

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

    Примечание

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

    Важно

    Перед командой unseal присоедините OpenBao-реплику к общему raft, используйте команду сначала для openbao-0, потом openbao-1 и openbao-2:

    kubectl -n dapp-security exec -ti openbao-1 -- bao operator raft join http://openbao-0.openbao-internal:8200

    Замените значение параметра команды -ti для каждой реплики.

  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-0 -o jsonpath='{.spec.serviceAccountName}')"; echo "$OPENBAO_SA"
    
  3. Создайте ClusterRoleBinding:

    kubectl create clusterrolebinding openbao-tokenreview --clusterrole=system:auth-delegator --serviceaccount="$OPENBAO_NS:$OPENBAO_SA"
    
  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 через значение параметра global → externalBaoAddr.

Пример конфигурации подключения к внешнему 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 для инструментов приведено в разделе «Конфигурации инструментов дополнительных компонентов».

injector – настройки внедрения агента OpenBao в pod#

Параметр

Описание

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

injector.enabled

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

-

injector.replicas

Количество реплик pod

1

injector.port

Порт, на котором инжектор принимает запросы

8080

injector.leaderElector.enabled

Включение определения «лидера» среди нескольких реплик для создания TLS-сертификатов

true

injector.metrics.enabled

Включение конечной точки метрик экспортера узла на /metrics

false

injector.externalVaultAddr

Адрес внешнего сервера Vault для инжектора. Параметр устарел, используйте injector.externalBaoAddr

""

injector.externalBaoAddr

Адрес внешнего сервера OpenBao для инжектора. Указание значения отключает развертывание встроенного сервера

""

injector.image.registry

Реестр загрузки образа контейнера vault-k8s

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

injector.image.repository

Репозиторий контейнерного образа

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

injector.image.tag

Тег образа контейнера

1.7.5

injector.image.pullPolicy

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

IfNotPresent

injector.agentImage.registry

Реестр загрузки образа агента OpenBao

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

injector.agentImage.repository

Путь к репозиторию образа агента OpenBao

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

injector.agentImage.tag

Тег образа агента OpenBao

2.5.5

injector.agentImage.pullPolicy

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

IfNotPresent

injector.agentDefaults.cpuLimit

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

"500m"

injector.agentDefaults.cpuRequest

Запрос CPU для контейнера агента.
Возможные значения: в формате 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.exitOnRetryFailure

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

true

injector.agentDefaults.templateConfig.staticSecretRenderInterval

Интервал повторной генерации статических секретов

""

injector.livenessProbe.failureThreshold

Количество неудачных попыток до перевода контейнера в статус NotReady

2

injector.livenessProbe.initialDelaySeconds

Задержка в секундах перед первой проверкой работоспособности

5

injector.livenessProbe.periodSeconds

Интервал в секундах между проверками работоспособности

2

injector.livenessProbe.successThreshold

Количество успешных попыток для подтверждения работоспособности

1

injector.livenessProbe.timeoutSeconds

Тайм-аут (в секундах) ожидания ответа проверки работоспособности

5

injector.readinessProbe.failureThreshold

Количество неудачных попыток до перевода контейнера в статус NotReady

2

injector.readinessProbe.initialDelaySeconds

Задержка в секундах перед первой проверкой готовности

5

injector.readinessProbe.periodSeconds

Интервал в секундах между проверками готовности

2

injector.readinessProbe.successThreshold

Количество успешных попыток для подтверждения готовности

1

injector.readinessProbe.timeoutSeconds

Тайм-аут (в секундах) ожидания ответа проверки готовности

5

injector.startupProbe.failureThreshold

Количество неудачных попыток проверки запуска

12

injector.startupProbe.initialDelaySeconds

Задержка в секундах перед первой стартовой проверкой

5

injector.startupProbe.periodSeconds

Интервал в секундах между проверками запуска

5

injector.startupProbe.successThreshold

Количество успешных проверок запуска, необходимое для перевода контейнера в состояние «запущен»

1

injector.startupProbe.timeoutSeconds

Тайм-аут (в секундах) ожидания ответа при проверке запуска

5

injector.authPath

Путь монтирования метода аутентификации OpenBao через Kubernetes

auth/kubernetes

injector.logLevel

Уровень детализации логов.
Возможные значения: trace, debug, info, warn, error

info

injector.logFormat

Формат вывода логов.
Возможные значения: standard, json

standard

injector.revokeOnShutdown

Отзыв токена агента OpenBao при завершении работы контейнера

false

injector.webhook.failurePolicy

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

Ignore

injector.webhook.matchPolicy

Правило выбора ресурсов для вебхука.
Возможные значения: Exact, Equivalent

Exact

injector.webhook.timeoutSeconds

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

30

injector.webhook.namespaceSelector

Пространства имен, к которым применяется вебхук.
Пример конфигурации:

namespaceSelector:
   matchLabels:
     sidecar-injector: enabled

{}

injector.webhook.objectSelector

Фильтр по меткам объектов, к которым применяется вебхук

matchExpressions:
- key: app.kubernetes.io/name
  operator: NotIn
  values:
  - {{ template "openbao.name" . }}-agent-injector

injector.webhook.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

injector.failurePolicy

Поведение вебхука при ошибке. Параметр устарел, используйте injector.webhook.failurePolicy

Ignore

injector.namespaceSelector

Фильтр по пространствам имен. Параметр устарел, используйте injector.webhook.namespaceSelector

{}

injector.objectSelector

Фильтр по меткам объектов. Параметр устарел, используйте injector.webhook.objectSelector

{}

injector.webhookAnnotations

Аннотации вебхука. Параметр устарел, используйте injector.webhook.annotations

{}

injector.certs.secretName

Имя Secret с TLS-сертификатом и ключом для вебхука; при пустом значении сертификаты создаются автоматически

~

injector.certs.caBundle

Пакет сертификатов CA (Certificate Authority) в формате base64 PEM (Privacy-Enhanced Mail) для проверки TLS-сертификата вебхука

""

injector.certs.certName

Имя файла TLS-сертификата внутри Secret

tls.crt

injector.certs.keyName

Имя файла приватного TLS-ключа внутри Secret

tls.key

injector.securityContext.pod

Контекст безопасности на уровне pod

{}

injector.securityContext.container

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

{}

injector.resources

Запросы и ограничения ресурсов для контейнера.
Пример конфигурации:

resources:
  requests:
    memory: 256Mi
    cpu: 250m
  limits:
    memory: 256Mi
    cpu: 250m

{}

injector.extraEnvironmentVars

Дополнительные переменные окружения для инжектора.
Пример конфигурации:

KUBERNETES_SERVICE_HOST: kubernetes.default.svc

{}

injector.affinity

Настройки правила привязки (affinity и anti-affinity) pod к узлам

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

injector.topologySpreadConstraints

Ограничения топологии для равномерного распределения pod по зонам доступности и узлам

[]

injector.tolerations

Toleration для размещения pod на узлах с ограничениями (taints)

[]

injector.nodeSelector

Селектор узлов для планирования pod.
Пример конфигурации:

nodeSelector:
  beta.kubernetes.io/arch: amd64

{}

injector.priorityClassName

Имя PriorityClass для pod

""

injector.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

injector.extraLabels

Дополнительные метки для pod инжектора

{}

injector.hostNetwork

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

false

injector.service.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

injector.service.extraLabels

Дополнительные метки Service инжектора

{}

injector.serviceAccount.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

injector.podDisruptionBudget

Настройки PodDisruptionBudget для ограничения количества одновременно недоступных pod.
Пример конфигурации:

podDisruptionBudget:
  maxUnavailable: 1

{}

injector.strategy

Стратегия обновления Deployment инжектора.
Пример конфигурации:

strategy: |
  rollingUpdate:
    maxSurge: 25%
    maxUnavailable: 25%
  type: RollingUpdate

{}

server – параметры развертывания OpenBao Server#

Параметр

Описание

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

server.enabled

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

-

server.image.registry

Реестр загрузки образа контейнера сервера OpenBao

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

server.image.repository

Репозиторий контейнерного образа

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

server.image.tag

Тег образа контейнера

"2.5.5"

server.image.pullPolicy

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

IfNotPresent

server.updateStrategyType

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

"OnDelete"

server.podManagementPolicy

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

"OrderedReady"

server.logLevel

Уровень детализации логов сервера.
Возможные значения: trace, debug, info, warn, error

""

server.logFormat

Формат вывода логов сервера.
Возможные значения: standard, json

""

server.resources

Запросы и ограничения ресурсов для контейнера.
Пример конфигурации:

resources:
  requests:
    memory: 256Mi
    cpu: 250m
  limits:
    memory: 256Mi
    cpu: 250m

{}

server.consoleLink.enabled

Включение создания ресурса ConsoleLink для перехода в Open WebUI из консоли платформы

true

server.ingress.enabled

Включение Ingress для компонента сервера …

true

server.ingress.labels

Дополнительные метки Ingress

{}

server.ingress.annotations

Аннотации Ingress.
Пример конфигурации:

kubernetes.io/ingress.class: nginx
kubernetes.io/tls-acme: "true"

{}

server.ingress.ingressClassName

Имя класса контроллера Ingress

"nginx"

server.ingress.pathType

Тип пути Ingress.
Возможные значения: Prefix, Exact

Prefix

server.ingress.activeService

Направление трафика через Ingress на активный сервис OpenBao при включенном режиме высокой доступности (HA) и регистрации сервисов в Kubernetes

true

server.ingress.hosts.host

Список доменных имен для фильтрации входящих запросов

openbao.{{ include "ingress.domain" . }}

server.ingress.hosts.paths

Дополнительные пути для конфигурации каждого хоста Ingress

[]

server.ingress.extraPaths

Дополнительные пути для конфигурации каждого хоста Ingress.
Пример конфигурации:

- path: /*
  backend:
    service:
      name: ssl-redirect
      port:
        number: use-annotation

[]

server.ingress.tls.secretName

Имя существующего Secret, содержащего данные для базовой аутентификации

ingress-tls

server.ingress.tls.hosts

Массив хостов Ingress

openbao.{{ include "ingress.domain" . }}

server.gateway.tlsRoute.enabled

Включение TLSRoute для сервера OpenBao; доступно независимо от Ingress для сценариев миграции

false

server.gateway.tlsRoute.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

server.gateway.tlsRoute.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

server.gateway.tlsRoute.hosts

Список хостов, для которых применяется TLSRoute.
Пример конфигурации:

- chart-example.local

[]

server.gateway.tlsRoute.apiVersion

Версия ресурса интерфейса прикладного программирования (API) TLSRoute для переопределения установленной версии Gateway API

gateway.networking.k8s.io/v1alpha3

server.gateway.tlsRoute.activeService

Направление трафика через TLSRoute на активный сервис OpenBao

true

server.gateway.tlsRoute.parentRefs

Список родительских ресурсов (ParentRefs) для TLSRoute; должен содержать хотя бы один шлюз с TLS-слушателями, так как чарт не создает шлюзы.
Пример конфигурации:

- name: my-gw
  namespace: gateway-namespace
  # sectionName is optional to fix to a specific listener
  sectionName: listener-name

[]

server.gateway.httpRoute.enabled

Включение HTTPRoute для сервера OpenBao; завершение TLS до сервера не рекомендуется, предпочтительно использование TLSRoute

false

server.gateway.httpRoute.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

server.gateway.httpRoute.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

server.gateway.httpRoute.hosts

Список хостов для HTTPRoute

- chart-example.local

server.gateway.httpRoute.apiVersion

Версия API-ресурса HTTPRoute для переопределения установленной версии Gateway API

gateway.networking.k8s.io/v1

server.gateway.httpRoute.activeService

Направление трафика через HTTPRoute на активный сервис OpenBao

true

server.gateway.httpRoute.parentRefs

Список родительских ресурсов (ParentRefs) для HTTPRoute; должен содержать хотя бы один шлюз с HTTP-слушателями (протокол передачи гипертекста), так как чарт не создает шлюзы.
Пример конфигурации:

- name: my-gw
  namespace: gateway-namespace
  sectionName: listener-name

[]

server.gateway.httpRoute.matches.path.type

Тип сопоставления пути запроса.
Возможные значения: PathPrefix, Exact

PathPrefix

server.gateway.httpRoute.matches.path.value

Значение пути запроса, задаваемое в HTTPRoute

'/'

server.gateway.httpRoute.matches.timeouts

Тайм-ауты обработки запросов шлюзом.
Пример конфигурации:

request: 10s
backendRequest: 10s

{}

server.gateway.httpRoute.filters

Фильтры обработки запросов в HTTPRoute.
Пример конфигурации:

- type: RequestHeaderModifier
  requestHeaderModifier:
    set:
      - name: X-Forwarded-Proto
        value: https

[]

server.gateway.tlsPolicy.enabled

Включение BackendTLSPolicy для корректной обработки TLS-соединений с сервером при завершении TLS на шлюзе

false

server.gateway.tlsPolicy.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

server.gateway.tlsPolicy.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

server.gateway.tlsPolicy.apiVersion

Версия API-ресурса BackendTLSPolicy для переопределения установленной версии Gateway API

gateway.networking.k8s.io/v1

server.gateway.tlsPolicy.activeService

Применение BackendTLSPolicy к активному сервису OpenBao

true

server.gateway.tlsPolicy.targetRefs

Список объектов, к которым применяется политика; при пустом значении политика применяется к сервису OpenBao

[]

server.gateway.tlsPolicy.validation

Параметры проверки сертификатов CA для BackendTLSPolicy.
Пример конфигурации:

caCertificateRefs:
- kind: ConfigMap
  group: ""
  name: vault-ca

{}

server.hostAliases

Список псевдонимов хостов для добавления в /etc/hosts.
Пример конфигурации:

- ip: 127.0.0.1
  hostnames:
    - chart-example.local

[]

server.route.enabled

Создание маршрута Gateway API для внешнего доступа

false

server.route.activeService

Направление трафика через Route на активный сервис OpenBao

true

server.route.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

server.route.annotations

Аннотации для HTTPRoute

{}

server.route.host

Доменное имя Route для внешнего доступа к серверу

chart-example.local

server.route.tls.termination

Метод завершения TLS для Route.
Возможные значения: passthrough, edge, reencrypt

passthrough

server.authDelegator.enabled

Включение привязки роли кластера к ServiceAccount, используемой при настройке метода аутентификации Kubernetes

true

server.extraInitContainers

Дополнительные init-контейнеры для pod.
Пример конфигурации:

- name: oauthapp
  image: "alpine"
  command: [sh, -c]
  args:
    - cd /tmp &&
      wget https://github.com/puppetlabs/vault-plugin-secrets-oauthapp/releases/download/v1.2.0/vault-plugin-secrets-oauthapp-v1.2.0-linux-amd64.tar.xz -O oauthapp.xz &&
      tar -xf oauthapp.xz &&
      mv vault-plugin-secrets-oauthapp-v1.2.0-linux-amd64 /usr/local/libexec/vault/oauthapp &&
      chmod +x /usr/local/libexec/vault/oauthapp
  volumeMounts:
    - name: plugins
      mountPath: /usr/local/libexec/vault

[]

server.extraContainers

Список дополнительных sidecar-контейнеров в pod

~

server.shareProcessNamespace

Включение общего пространства имен процессов между контейнерами pod. Позволяет контейнерам видеть процессы друг друга и взаимодействовать через сигналы (например, с sidecar-контейнерами)

false

server.extraArgs

Дополнительные аргументы команды запуска сервера OpenBao

""

server.extraPorts

Дополнительные порты StatefulSet.
Пример конфигурации:

- containerPort: 8300
  name: http-monitoring

[]

server.readinessProbe.enabled

Включение проверки готовности контейнера

true

server.readinessProbe.port

Порт, на котором выполняется проверка готовности

8200

server.readinessProbe.failureThreshold

Количество неудачных попыток до перевода контейнера в статус NotReady

2

server.readinessProbe.initialDelaySeconds

Задержка в секундах перед первой проверкой готовности

5

server.readinessProbe.periodSeconds

Интервал в секундах между проверками готовности

5

server.readinessProbe.successThreshold

Количество успешных попыток для подтверждения готовности

1

server.readinessProbe.timeoutSeconds

Тайм-аут (в секундах) ожидания ответа проверки готовности

3

server.livenessProbe.enabled

Включение проверки работоспособности контейнера

false

server.livenessProbe.execCommand

Команда проверки работоспособности через exec; при указании команды обработчик exec предпочтительнее httpGet.
Пример конфигурации:

- /bin/sh
- -c
- /openbao/userconfig/mylivenessscript/run.sh

[]

server.livenessProbe.path

HTTP-путь для проверки работоспособности через обработчик httpGet

"/v1/sys/health?standbyok=true"

server.livenessProbe.port

Порт, на котором выполняется проверка работоспособности

8200

server.livenessProbe.failureThreshold

Количество неудачных попыток до перевода контейнера в статус NotReady

2

server.livenessProbe.initialDelaySeconds

Задержка в секундах перед первой проверкой работоспособности

60

server.livenessProbe.periodSeconds

Интервал в секундах между проверками работоспособности

5

server.livenessProbe.successThreshold

Количество успешных попыток для подтверждения работоспособности

1

server.livenessProbe.timeoutSeconds

Тайм-аут (в секундах) ожидания ответа проверки работоспособности

3

server.terminationGracePeriodSeconds

Время, отведенное на корректное завершение работы pod

10

server.preStopSleepSeconds

Длительность ожидания на этапе preStop перед завершением работы pod

5

server.postStart

Команды, выполняемые после готовности pod; применяются для автоматизации инициализации или настройки методов аутентификации.
Пример конфигурации:

- /bin/sh
- -c
- /openbao/userconfig/myscript/run.sh

[]

server.extraEnvironmentVars

Дополнительные переменные окружения StatefulSet, например для параметров автоматического распечатывания.
Пример конфигурации:

GOOGLE_REGION: global
GOOGLE_PROJECT: myproject
GOOGLE_APPLICATION_CREDENTIALS: /openbao/userconfig/myproject/myproject-creds.json

{}

server.extraSecretEnvironmentVars

Дополнительные переменные окружения, значения которых берутся из существующих Secret.
Пример конфигурации:

- envName: key
  secretName: openbao
  secretKey: key

[]

server.extraVolumes

Дополнительные тома для монтирования в путь /openbao/userconfig/<name>/. Параметр устарел, используйте server.volumes.
Пример конфигурации:

- type: secret (or "configMap")
  name: my-secret
  path: null

[]

server.volumes

Дополнительные тома (Volume) для pod.
Пример конфигурации:

- name: plugins
  emptyDir: {}

~

server.volumeMounts

Дополнительные точки монтирования томов (VolumeMount).
Пример конфигурации:

- mountPath: /usr/local/libexec/vault
  name: plugins
  readOnly: true

~

server.affinity

Настройки правила привязки (affinity и anti-affinity) pod к узлам

podAntiAffinity:
  requiredDuringSchedulingIgnoredDuringExecution:
    - labelSelector:
        matchLabels:
          app.kubernetes.io/name: {{ template "openbao.name" . }}
          app.kubernetes.io/instance: "{{ .Release.Name }}"
          component: server
      topologyKey: kubernetes.io/hostname

server.topologySpreadConstraints

Ограничения топологии для равномерного распределения pod по зонам доступности и узлам

[]

server.tolerations

Toleration для размещения pod на узлах с ограничениями (taints)

[]

server.nodeSelector

Селектор узлов для планирования pod.
Пример конфигурации:

nodeSelector:
  beta.kubernetes.io/arch: amd64

{}

server.networkPolicy.enabled

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

false

server.networkPolicy.egress

Правила исходящего трафика NetworkPolicy.
Пример конфигурации:

egress:
- to:
  - ipBlock:
      cidr: 10.0.0.0/24
  ports:
  - protocol: TCP
    port: 443

[]

server.networkPolicy.ingress

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

- from:
    - namespaceSelector: {}
  ports:
    - port: 8200
      protocol: TCP
    - port: 8201
      protocol: TCP

server.priorityClassName

Имя PriorityClass для pod

""

server.extraLabels

Дополнительные метки для pod сервера

{}

server.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

server.configAnnotation

Добавление аннотации vaultproject.io/config-checksum (хеш конфигурации OpenBao) к ConfigMap и pod; применяется со стратегией обновления OnDelete для выявления pod с устаревшей конфигурацией

false

server.service.enabled

Активация создания Service

true

server.service.active.enabled

Включение сервиса openbao-active, выбирающего pod-лидеров с меткой openbao-active: "true"

true

server.service.active.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

server.service.active.extraLabels

Дополнительные метки активного сервиса

{}

server.service.standby.enabled

Включение резервного сервиса openbao-standby, выбирающего pod-последователей с меткой openbao-active: "false"

true

server.service.standby.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

server.service.standby.extraLabels

Дополнительные метки резервного сервиса

{}

server.service.headless.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

server.service.instanceSelector.enabled

Включение селектора экземпляра app.kubernetes.io/instance в селекторах сервисов; при отключении сервисы могут выбирать pod, развернутые вне чарта

true

server.service.ipFamilyPolicy

Политика IP-семейств (Internet Protocol) сервиса в окружении с двойным стеком.
Возможные значения: SingleStack, PreferDualStack, RequireDualStack

""

server.service.ipFamilies

Список IP-семейств, поддерживаемых Service

[]

server.service.publishNotReadyAddresses

Публикация адресов pod, еще не прошедших проверку готовности, в таргетах сервиса; не применяется к headless-сервису

true

server.service.externalTrafficPolicy

Политика внешнего трафика для сервисов типов LoadBalancer и NodePort.
Возможные значения: Cluster, Local

Cluster

server.service.port

Порт, на котором сервер OpenBao принимает входящий трафик

8200

server.service.targetPort

Целевой порт, на который Service перенаправляет трафик

8200

server.service.extraPorts

Дополнительные порты сервиса.
Пример конфигурации:

- name: metrics
  port: 9101
  targetPort: 9101

[]

server.service.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

server.service.extraLabels

Дополнительные метки Service

{}

server.dataStorage.enabled

Включение создания запроса на постоянный том (PVC) для хранения данных при использовании хранилища file или raft

false

server.dataStorage.size

Размер PVC.
Возможные значения: в формате quantity, например 64Mi, 1Gi

10Gi

server.dataStorage.mountPath

Путь монтирования PVC

"/openbao/data"

server.dataStorage.storageClass

Имя класса хранилища; при пустом значении используется класс хранилища по умолчанию

~

server.dataStorage.accessMode

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

ReadWriteOnce

server.dataStorage.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

server.dataStorage.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

server.persistentVolumeClaimRetentionPolicy

Политика сохранения PVC при удалении pod или уменьшении числа реплик StatefulSet.
Пример конфигурации:

persistentVolumeClaimRetentionPolicy:
  whenDeleted: Retain
  whenScaled: Retain

{}

server.auditStorage.enabled

Включение создания PVC для логов аудита

false

server.auditStorage.size

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

10Gi

server.auditStorage.mountPath

Путь монтирования PVC для логов аудита

"/openbao/audit"

server.auditStorage.storageClass

Имя класса хранилища; при пустом значении используется класс хранилища по умолчанию

~

server.auditStorage.accessMode

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

ReadWriteOnce

server.auditStorage.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

server.auditStorage.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

server.dev.enabled

Включение режима разработки без инициализации и распечатывания; данные теряются при перезапуске, режим не предназначен для эксплуатации

false

server.dev.devRootToken

Значение переменной VAULT_DEV_ROOT_TOKEN_ID

"root"

server.standalone.enabled

Включение автономного режима без высокой доступности; для хранения используется PVC, режим не масштабируется более чем на одну реплику. Знак - предполагает наследование значения от server.enabled.
Возможные значения: true, false, -

-

server.standalone.config

Конфигурация автономного режима в формате HCL (HashiCorp Configuration Language): listener, хранилище и telemetry; конфигурационные файлы хранятся в ConfigMap, поэтому чувствительные данные передаются через extraSecretEnvironmentVars или Secret

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.enabled

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

false

server.ha.replicas

Количество реплик pod

3

server.ha.apiAddr

Адрес API для конфигурации OpenBao в режиме высокой доступности; при пустом значении используется IP-адрес pod

~

server.ha.clusterAddr

Адрес кластера для конфигурации OpenBao в режиме высокой доступности

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

server.ha.raft.enabled

Включение встроенного хранилища Raft; при включении создаются постоянные тома согласно server.dataStorage, а выборы лидера выполняются внутри кластера

true

server.ha.raft.setNodeId

Принудительное указание имени pod в качестве идентификатора узла Raft

true

server.ha.raft.config

Конфигурация Raft-режима в формате HCL: listener, встроенное хранилище raft и регистрация сервисов в Kubernetes

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

Общая конфигурация режима высокой доступности в формате HCL: listener и регистрация сервисов в Kubernetes; по умолчанию предполагается хранилище Consul

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
}

server.ha.disruptionBudget.enabled

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

true

server.ha.disruptionBudget.maxUnavailable

Максимальное количество одновременно недоступных pod; при пустом значении вычисляется как (n/2)-1, где n — количество реплик

~

server.serviceAccount.create

Активация автоматического создания ServiceAccount

true

server.serviceAccount.name

Имя ServiceAccount; при пустом значении и create: true имя генерируется автоматически

""

server.serviceAccount.createSecret

Создание Secret с неистекающим токеном для ServiceAccount (доступно при serviceAccount.create: true; рекомендуется использование короткоживущих токенов TokenRequest или проектируемых томов)

false

server.serviceAccount.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

server.serviceAccount.extraLabels

Дополнительные метки ServiceAccount

{}

server.serviceAccount.serviceDiscovery.enabled

Включение создания RoleBinding с правами, необходимыми для регистрации сервисов в Kubernetes (опция service_registration "kubernetes")

true

server.statefulSet.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

server.statefulSet.securityContext.pod

Параметры контекста безопасности pod; при пустом значении для OpenShift применяются значения по умолчанию платформы, для прочих кластеров — настройки из комментариев чарта

{}

server.statefulSet.securityContext.container

Параметры контекста безопасности контейнера; при пустом значении для OpenShift применяются значения по умолчанию платформы, для прочих кластеров — настройки из комментариев чарта

{}

server.hostNetwork

Использование сети хоста для pod сервера

false

ui – параметры веб-интерфейса#

Параметр

Описание

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

ui.enabled

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

true

ui.publishNotReadyAddresses

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

true

ui.activeOpenbaoPodOnly

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

false

ui.serviceType

Тип Service для веб-интерфейса.
Возможные значения: ClusterIP, NodePort, LoadBalancer

"ClusterIP"

ui.serviceNodePort

Порт узла (NodePort), через который веб-интерфейс доступен извне кластера; актуален при типе Service NodePort

~

ui.externalPort

Внешний порт Service, через который веб-интерфейс доступен

8200

ui.targetPort

Порт контейнера, на который Service перенаправляет трафик веб-интерфейса

8200

ui.serviceIPFamilyPolicy

Политика IP-семейств Service в окружении с двойным стеком.
Возможные значения: SingleStack, PreferDualStack, RequireDualStack

""

ui.serviceIPFamilies

Список поддерживаемых IP-семейств Service

[]

ui.externalTrafficPolicy

Политика внешнего трафика Service для типов LoadBalancer и NodePort.
Возможные значения: Cluster, Local

Cluster

ui.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

ui.extraLabels

Дополнительные метки Service веб-интерфейса

{}

csi – настройки CSI-провайдера#

Параметр

Описание

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

csi.enabled

Установка openbao-csi-provider в виде DaemonSet для монтирования секретов OpenBao в тома и синхронизации их в Secret; требуется отдельная установка драйвера secrets-store-csi-driver

false

csi.image.registry

Реестр загрузки образа контейнера провайдера CSI (Container Storage Interface)

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

csi.image.repository

Репозиторий контейнерного образа

"{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-openbao-csi-provider/openbao-csi-provider"

csi.image.tag

Тег образа контейнера

"2.0.2"

csi.image.pullPolicy

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

IfNotPresent

csi.volumes

Дополнительные тома (Volume) для pod.
Пример конфигурации:

- name: tls
  secret:
    secretName: openbao-tls

[]

csi.volumeMounts

Дополнительные точки монтирования томов (VolumeMount).
Пример конфигурации:

- name: tls
  mountPath: "/openbao/tls"
  readOnly: true

[]

csi.resources

Запросы и ограничения ресурсов для контейнера.
Пример конфигурации:

resources:
  requests:
    cpu: 50m
    memory: 128Mi
  limits:
    cpu: 50m
    memory: 128Mi

{}

csi.hmacSecretName

Имя Secret с HMAC-ключом (Hash-Based Message Authentication Code), используемым провайдером для генерации версий секретов

""

csi.daemonSet.updateStrategy.type

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

RollingUpdate

csi.daemonSet.updateStrategy.maxUnavailable

Максимальное количество недоступных pod при обновлении

""

csi.daemonSet.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

csi.daemonSet.providersDir

Путь к каталогу провайдеров CSI на хосте (должен совпадать с путем, настроенным в драйвере)

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

csi.daemonSet.kubeletRootDir

Путь к корневому каталогу kubelet на хосте

"/var/lib/kubelet"

csi.daemonSet.endpoint

Путь конечной точки (unix-сокет) провайдера

"/provider/openbao.sock"

csi.daemonSet.extraLabels

Дополнительные метки DaemonSet

{}

csi.daemonSet.securityContext.pod

Параметры контекста безопасности pod

{}

csi.daemonSet.securityContext.container

Параметры контекста безопасности контейнера

{}

csi.pod.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

csi.pod.tolerations

Toleration для размещения pod на узлах с ограничениями (taints)

[]

csi.pod.nodeSelector

Селектор узлов для планирования pod.
Пример конфигурации:

nodeSelector:
  beta.kubernetes.io/arch: amd64

{}

csi.pod.affinity

Настройки правила привязки (affinity и anti-affinity) pod к узлам

{}

csi.pod.extraLabels

Дополнительные метки pod провайдера

{}

csi.agent.enabled

Включение sidecar-агента OpenBao в pod провайдера CSI

true

csi.agent.extraArgs

Дополнительные аргументы команды запуска агента

[]

csi.agent.image.registry

Реестр загрузки образа контейнера агента

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

csi.agent.image.repository

Репозиторий контейнерного образа

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

csi.agent.image.tag

Тег образа контейнера

"2.5.5"

csi.agent.image.pullPolicy

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

IfNotPresent

csi.agent.logFormat

Формат вывода логов агента.
Возможные значения: standard, json

standard

csi.agent.logLevel

Уровень детализации логов агента.
Возможные значения: trace, debug, info, warn, error

info

csi.agent.resources

Запросы и ограничения ресурсов для контейнера.
Пример конфигурации:

resources:
  requests:
    memory: 256Mi
    cpu: 250m
  limits:
    memory: 256Mi
    cpu: 250m

{}

csi.priorityClassName

Имя PriorityClass для pod

""

csi.serviceAccount.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

csi.serviceAccount.extraLabels

Дополнительные метки ServiceAccount

{}

csi.readinessProbe.failureThreshold

Количество неудачных попыток до перевода контейнера в статус NotReady

2

csi.readinessProbe.initialDelaySeconds

Задержка в секундах перед первой проверкой готовности

5

csi.readinessProbe.periodSeconds

Интервал в секундах между проверками готовности

5

csi.readinessProbe.successThreshold

Количество успешных попыток для подтверждения готовности

1

csi.readinessProbe.timeoutSeconds

Тайм-аут (в секундах) ожидания ответа проверки готовности

3

csi.livenessProbe.failureThreshold

Количество неудачных попыток до перевода контейнера в статус NotReady

2

csi.livenessProbe.initialDelaySeconds

Задержка в секундах перед первой проверкой работоспособности

5

csi.livenessProbe.periodSeconds

Интервал в секундах между проверками работоспособности

5

csi.livenessProbe.successThreshold

Количество успешных попыток для подтверждения работоспособности

1

csi.livenessProbe.timeoutSeconds

Тайм-аут (в секундах) ожидания ответа проверки работоспособности

3

csi.debug

Включение режима отладки провайдера CSI с повышенной детализацией логов

false

csi.extraArgs

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

[]

serverTelemetry – интеграция метрик с Prometheus Operator#

Параметр

Описание

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

serverTelemetry.serviceMonitor.enabled

Активация создания ServiceMonitor для Prometheus Operator.
Возможные значения: true, false

true

serverTelemetry.serviceMonitor.selectors

Метки селектора, добавляемые к ServiceMonitor; при пустом значении применяются метки release: prometheus

{}

serverTelemetry.serviceMonitor.port

Порт, который Prometheus использует при сборе метрик; при пустом значении определяется чартом

""

serverTelemetry.serviceMonitor.scheme

Схема подключения

""

serverTelemetry.serviceMonitor.interval

Интервал сбора метрик.
Возможные значения: в формате длительности, например 30s, 1m

30s

serverTelemetry.serviceMonitor.scrapeTimeout

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

10s

serverTelemetry.serviceMonitor.tlsConfig

Настройки TLS-параметров для безопасного сбора метрик Prometheus по протоколу HTTP

{}

serverTelemetry.serviceMonitor.authorization

Параметры авторизации при сборе метрик

{}

serverTelemetry.serviceMonitor.scrapeClass

Значение scrapeClass для ServiceMonitor.
Возможные значения: строка

""

serverTelemetry.prometheusRules.enabled

Развертывание ресурса PrometheusRule для оповещений Alertmanager; требуется предварительная установка Prometheus Operator.
Возможные значения: true, false

false

serverTelemetry.prometheusRules.selectors

Метки селектора, добавляемые к PrometheusRule; при пустом значении применяются метки release: prometheus

{}

serverTelemetry.prometheusRules.rules

Список правил оповещений для Prometheus.
Пример конфигурации:

- alert: vault-HighResponseTime
  annotations:
    message: The response time of OpenBao is over 500ms on average over the last 5 minutes.
  expr: vault_core_handle_request{quantile="0.5", namespace="mynamespace"} > 500
  for: 5m
  labels:
    severity: warning
- alert: vault-HighResponseTime
  annotations:
    message: The response time of OpenBao is over 1s on average over the last 10 minutes.
  expr: vault_core_handle_request{quantile="0.5", namespace="mynamespace"} > 1000
  for: 10m
  labels:
    severity: critical

[]

serverTelemetry.grafanaDashboard.enabled

Развертывание ConfigMap дашборда Grafana для сервера OpenBao.
Возможные значения: true, false

false

serverTelemetry.grafanaDashboard.namespace

Пространство имен для ConfigMap дашборда; при пустом значении используется пространство имен чарта

""

serverTelemetry.grafanaDashboard.defaultLabel

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

true

serverTelemetry.grafanaDashboard.extraLabel

Дополнительные метки ConfigMap дашборда

{}

serverTelemetry.grafanaDashboard.extraAnnotations

Дополнительные аннотации ConfigMap дашборда

{}

extraObjects – дополнительные объекты Helm-чарта#

Параметр

Описание

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

extraObjects

Добавление дополнительных динамических объектов в Helm-чарте.
Пример конфигурации:

# structured object
- apiVersion: v1
  kind: ConfigMap
  metadata:
    name: cert-manager-configmap-{{ .Release.Name }}
# templated string
- |
  apiVersion: v1
  kind: ConfigMap
  metadata:
    name: cert-manager-configmap-{{ include "some-other-template" }}

[]

snapshotAgent – настройки агента снепшотов#

Параметр

Описание

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

snapshotAgent.enabled

Включение агента снепшотов, выполняющего создание резервных копий кластера OpenBao по расписанию через CronJob.
Возможные значения: true, false

false

snapshotAgent.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

snapshotAgent.schedule

Расписание запуска CronJob в формате cron-выражения

"*/15 * * * *"

snapshotAgent.restartPolicy

Политика перезапуска контейнера CronJob.
Возможные значения: OnFailure, Never

OnFailure

snapshotAgent.serviceAccount.create

Активация автоматического создания ServiceAccount

true

snapshotAgent.serviceAccount.name

Имя ServiceAccount; при пустом значении и create: true имя генерируется автоматически

""

snapshotAgent.serviceAccount.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

snapshotAgent.serviceAccount.extraLabels

Дополнительные метки ServiceAccount

{}

snapshotAgent.image.repository

Путь к репозиторию образа контейнера агента снепшотов

ghcr.io/openbao/openbao-snapshot-agent

snapshotAgent.image.tag

Тег образа контейнера

0.3.0

snapshotAgent.extraVolumes

Список дополнительных томов (Volume) для контейнера CronJob.
Пример конфигурации:

- name: openbao-tls
  secret:
    defaultMode: 420
    secretName: openbao-tls

[]

snapshotAgent.extraVolumeMounts

Список дополнительных точек монтирования томов (VolumeMounts) в контейнере.
Пример конфигурации:

- mountPath: /openbao/tls/ca.crt
  name: openbao-tls
  readOnly: true
  subPath: ca.crt

[]

snapshotAgent.s3CredentialsSecret

Имя Secret с учетными данными S3 (Simple Storage Service)

"my-s3-credentials"

snapshotAgent.config.s3Host

Хост S3-хранилища

"s3.eu-east-1.amazonaws.com"

snapshotAgent.config.s3Bucket

Бакет S3-хранилища

"openbao-snapshots"

snapshotAgent.config.s3Uri

URI бакета (Uniform Resource Identifier) в S3-хранилище

"s3://openbao-snapshots"

snapshotAgent.config.s3ExpireDays

Срок хранения снепшотов в S3-хранилище (в днях), после которого они удаляются

"14"

snapshotAgent.config.s3cmdExtraFlag

Дополнительные флаги командной строки утилиты s3cmd

"-v"

snapshotAgent.config.baoAuthPath

Путь монтирования метода аутентификации OpenBao через Kubernetes

"kubernetes"

snapshotAgent.config.baoRole

Роль для получения токена OpenBao агентом снепшотов

"snapshot"

snapshotAgent.resources

Запросы и ограничения ресурсов для контейнера

{}

snapshotAgent.extraEnvironmentVars

Дополнительные переменные окружения для CronJob агента снепшотов.
Пример конфигурации:

BAO_CACERT: /openbao/tls/ca.crt

{}

snapshotAgent.extraSecretEnvironmentVars

Дополнительные переменные окружения, значения которых берутся из существующих Secret.
Пример конфигурации:

- envName: key
  secretName: openbao
  secretKey: key

[]

snapshotAgent.securityContext.pod

Параметры контекста безопасности pod

{}

snapshotAgent.securityContext.container

Параметры контекста безопасности контейнера

{}

snapshotAgent.tolerations

Toleration для размещения pod на узлах с ограничениями (taints)

[]