Бенчмарк производительности StarVault
Эффективная работа StarVault для поддержки ваших сценариев использования требует, чтобы вы могли точно измерить его производительность. В идеале для получения реалистичных результатов необходимо проводить сравнительный анализ и измерять производительность в средах, которые напоминают производственные сценарии использования.
1. Задача
Вам нужно измерить производительность StarVault значимым способом и в среде, которая также похожа на ту, что используется в вашем предполагаемом сценарии использования в отношении вычислительных ресурсов.
На тестируемом сервере StarVault должны быть включены те же методы аутентификации и механизмы секретов, а также представлены примеры секретов, аренд и токенов для точного моделирования ваших сценариев использования.
2. Решение
Orion soft предоставляет утилиту с открытым исходным кодом vault-benchmark, чтобы помочь вам измерить производительность StarVault на гранулированном уровне, используя несколько доступных методов авторизации и механизмов секретов.
Вы можете использовать vault-benchmark как интерфейс командной строки, как образ Docker или как рабочую нагрузку Kubernetes, чтобы соответствовать инфраструктуре, которую вы используете для StarVault.
3. Пользователи
В сквозном сценарии и практической лаборатории, описанных в этом руководстве, задействована один пользователь.
Этот пользователь - оператор хранилища с привилегированными правами на включение и отключение методов аутентификации и секретных механизмов. Все задачи в практическом сценарии выполняются от имени этого пользователя.
4. Предпосылки
Для выполнения практического сценария вам понадобятся следующие ресурсы в зависимости от того, будете ли вы использовать версию StarVault с CLI, Docker или Kubernetes.
4.1. Self-hosted StarVault
Для выполнения практического задания с использованием CLI-версий StarVault и vault-benchmark вам потребуется следующее:
-
Бинарный файл StarVault, установленный и находящийся в системном PATH.
-
Бинарный файл vault-benchmark, установленный и находящийся в системном PATH.
5. Версии, используемые в руководстве
Это руководство было последний раз проверено 21 мая 2025 года на AlmaLinux с использованием следующих версий программного обеспечения.
| ПО | Версия |
|---|---|
Operating System |
|
StarVault |
|
vault-benchmark |
|
Docker server |
|
Curl |
|
jq |
|
helm |
|
Minikube |
|
6. Настройка лаборатории
Настройка практической лаборатории в этом руководстве отличается в зависимости от того, хотите ли вы экспериментировать с vault-benchmark в CLI с сервером dev mode, в CLI с сервером StarVault Dedicated, в Docker или в Kubernetes.
6.1. Создание локальной практической лаборатории
Вы можете создать временный каталог, в котором будет храниться все содержимое, необходимое для этой практической работы, а затем присвоить его путь переменной среды для последующего использования.
-
Откройте терминал и создайте каталог
/tmp/learn-vault-pgp.$ mkdir /tmp/learn-vault-benchmark -
Экспортируйте путь к каталогу практической лаборатории в качестве значения переменной среды
HC_LEARN_LAB.$ export HC_LEARN_LAB=/tmp/learn-vault-benchmark
Теперь выберите рабочий процесс настройки лаборатории, который соответствует среде, которую вы хотите использовать для этой практической работы.
6.1.1. Self-hosted StarVault
Запустите сервер StarVault dev mode в качестве фонового процесса из терминальной сессии, чтобы проследить за рабочим процессом самостоятельной установки StarVault в этой практике.
-
Откройте терминал и запустите сервер StarVault dev с
rootв качестве начального значения корневого токена.$ starvault server \ -dev \ -dev-root-token-id root \ > "$HC_LEARN_LAB"/starvault-server.log 2>&1 &По умолчанию сервер StarVault dev работает по адресу
127.0.0.1:8200. Сервер регистрируется в файлеstarvault-server.logв рабочем каталоге практической лаборатории, автоматически инициализируется и снимает печать.Режим Dev не предназначен для производстваНе запускайте сервер StarVault dev в производстве. При таком подходе сервер StarVault запускается с базой данных in-memory, и все содержимое будет потеряно, когда процесс сервера StarVault будет остановлен.
-
Экспортируйте переменную окружения для
starvaultCLI, чтобы обратиться к серверу StarVault.$ export STARVAULT_ADDR='http://127.0.0.1:8200' -
Экспортируйте переменную окружения для
starvaultCLI, чтобы аутентифицироваться на сервере StarVault.$ export VAULT_TOKEN=root -
Проверьте состояние StarVault.
$ starvault statusПример вывода: Key Value ---
----
Seal TypeshamirInitializedtrueSealedfalseTotal Shares1Threshold1Version1.5.0Build Date2025-03-14T20:50:17ZStorage TypeinmemCluster Namevault-cluster-becc609eCluster ID96babf60-d3e2-0ea0-4879-f78763ac595cHA Enabledfalse -
Сервер StarVault готов к продолжению практической работы.
6.1.2. Docker
Запустите Docker-контейнер StarVault dev mode из терминала, чтобы проследить за рабочим процессом Docker в этой практической работе.
Создайте сеть Docker с именем learn-vault, которую будут использовать все контейнеры в этой практике.
-
Создайте сеть.
$ docker network create --attachable --subnet 172.30.0.0/24 learn-starvault -
Запустите контейнер StarVault dev mode.
$ docker run \ --ip 172.30.0.2 \ --name learn-starvault \ --network learn-starvault \ --cap-add=IPC_LOCK \ --env 'VAULT_DEV_ROOT_TOKEN_ID=root' \ --env 'VAULT_DEV_LISTEN_ADDRESS=0.0.0.0:8200' \ --publish 8200:8200 \ --detach \ --rm \ hub.orionsoft.ru/public/starvault:v1.5.0 server -devЕсли вы никогда раньше не использовали образ StarVault, Docker создаст его, а затем запустит контейнер с этим образом.
Режим Dev не предназначен для производстваНе запускайте сервер StarVault dev в производстве. При таком подходе сервер StarVault запускается с базой данных in-memory, и все содержимое будет потеряно, когда процесс сервера StarVault будет остановлен.
-
Проверьте состояние StarVault.
$ docker run \ --cap-add IPC_LOCK \ --ip 172.30.0.3 \ --name learn-starvault-client \ --network learn-starvault \ --env 'STARVAULT_ADDR=http://172.30.0.2:8200' \ --rm \ hub.orionsoft.ru/public/starvault:v1.5.0 statusПример вывода: Key Value ---
----
Seal TypeshamirInitializedtrueSealedfalseTotal Shares1Threshold1Version1.5.0Build Date2025-03-14T20:50:17ZStorage TypeinmemCluster Namevault-cluster-bcfbdbc6Cluster IDa38f6679-03fd-af38-5d7b-a2baad820c35HA EnabledfalseDocker-контейнер сервера StarVault dev mode готов для продолжения практической работы.
6.1.3. Kubernetes
Разверните StarVault в Minikube с помощью диаграммы Helm из терминальной сессии, чтобы проследить за рабочим процессом Kubernetes в этой практической работе.
|
Погрузитесь глубже
Если вы не знакомы с этим процессом или хотите углубиться в него, просмотрите руководство по установке StarVault на minikube через Helm с интегрированным хранилищем. |
-
Запустите Minikube.
$ minikube startПример вывода:* minikube v1.35.0 on Almalinux 8.10 (kvm/amd64) * Automatically selected the kvm2 driver * Downloading driver docker-machine-driver-kvm2: > docker-machine-driver-kvm2-...: 65 B / 65 B [---------] 100.00% ? p/s 0s > docker-machine-driver-kvm2-...: 14.14 MiB / 14.14 MiB 100.00% 53.03 MiB * Downloading VM boot image ... > minikube-v1.35.0-amd64.iso....: 65 B / 65 B [---------] 100.00% ? p/s 0s > minikube-v1.35.0-amd64.iso: 345.38 MiB / 345.38 MiB 100.00% 33.43 MiB p * Starting "minikube" primary control-plane node in "minikube" cluster * Downloading Kubernetes v1.32.0 preload ... > preloaded-images-k8s-v18-v1...: 333.57 MiB / 333.57 MiB 100.00% 32.87 M * Creating kvm2 VM (CPUs=2, Memory=2200MB, Disk=20000MB) ... * Preparing Kubernetes v1.32.0 on Docker 27.4.0 ... - Generating certificates and keys ... - Booting up control plane ... - Configuring RBAC rules ... * Configuring bridge CNI (Container Networking Interface) ... * Verifying Kubernetes components... - Using image gcr.io/k8s-minikube/storage-provisioner:v5 * Enabled addons: storage-provisioner, default-storageclass * Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default -
Проверьте состояние Minikube.
$ minikube statusПример вывода:minikube type: Control Plane host: Running kubelet: Running apiserver: Running kubeconfig: Configured -
Залогиньтесь в репозиторий StarVault Helm.
$ helm registry login -u USER -p PASSWORD https://hub.orionsoft.ru/public -
Установите диаграмму Helm сервера StarVault, чтобы запустить сервер в режиме dev.
$ helm install starvault oci://hub.orionsoft.ru/public/starvault \ --set "server.dev.enabled=true" \ --set "server.dev.devRootToken=root"Пример вывода:NAME: starvault LAST DEPLOYED: Tue Oct 24 15:11:26 2023 NAMESPACE: default STATUS: deployed REVISION: 1 NOTES: Thank you for installing StarVault. ...snip...Режим Dev не для производстваНе запускайте сервер StarVault dev в производстве. При таком подходе сервер StarVault запускается с базой данных in-memory, и все содержимое теряется, когда процесс сервера StarVault останавливается.
-
Отобразите все поды в пространстве имен по умолчанию.
$ kubectl get podsПример вывода: NAME READY STATUS RESTARTS AGE starvault-00/1Running067sСервер StarVault dev mode запущен в поде с именем
starvault-0. При необходимости проверьте статус и убедитесь, что под имеет статус Running, прежде чем продолжить. -
Проверьте статус сервера StarVault
$ kubectl exec starvault-0 -- starvault statusПример вывода: Key Value ---
----
Seal TypeshamirInitializedtrueSealedfalseTotal Shares1Threshold1Version1.5.0Build Date2025-03-14T20:50:17ZStorage TypeinmemCluster Namevault-cluster-f0037191Cluster ID1f788714-7dcc-39f9-65a4-adcf8dc90c15HA EnabledfalseDocker-контейнер сервера StarVault dev mode готов для продолжения практической работы.
7. Изучение vault-benchmark
Цель в этом разделе - изучить vault-benchmark с помощью терминала. В конце раздела приведены ресурсы для более глубокого погружения.
7.1. Self-hosted-Vault
-
Проверьте версию вашего vault-benchmark.
$ vault-benchmark versionПример вывода:vault-benchmark v0.3.0 -
Вы можете получить помощь, чтобы узнать о доступных командах.
$ vault-benchmark --helpПример вывода:Usage: vault-benchmark <command> [args] Command list: run Run vault-benchmark test(s) review Review previous test results -
Эта практическая лабораторная работа посвящена использованию команды
run. Получите справку по командеrun.$ vault-benchmark run --helpПример вывода:Usage: vault-benchmark run [options] This command will run a vault-benchmark test. Run a vault-benchmark test with a configuration file: $ vault-benchmark run -config=/etc/vault-benchmark/test.hcl For a full list of examples, please see the documentation. Command Options: -annotate=<string> Comma-separated name=value pairs include in bench_running prometheus metric. Try name 'testname' for dashboard example. -audit_path=<string> Path to file for audit log. -ca_pem_file=<string> Path to PEM encoded CA file to verify external Vault. This can also be specified via the VAULT_CACERT environment variable. -cleanup Cleanup benchmark artifacts after run. The default is false. -cluster_json=<string> Path to cluster.json file -config=<string> Path to a vault-benchmark test configuration file. -debug Run vault-benchmark in Debug mode. The default is false. -disable_http2 Force HTTP/1.1 The default is false. -duration=<duration> Test Duration. The default is 10s. -log_level=<string> Level to emit logs. Options are: INFO, WARN, DEBUG, TRACE. The default is INFO. This can also be specified via the VAULT_BENCHMARK_LOG_LEVEL environment variable. -pprof_interval=<duration> Collection interval for vault debug pprof profiling. -random_mounts Use random mount names. The default is true. -report_mode=<string> Reporting Mode. Options are: terse, verbose, json. The default is terse. -rps=<int> Requests per second. Setting to 0 means as fast as possible. -vault_addr=<string> Target Vault API Address. The default is http://127.0.0.1:8200. This can also be specified via the VAULT_ADDR environment variable. -vault_namespace=<string> Vault Namespace to create test mounts. This can also be specified via the VAULT_NAMESPACE environment variable. -vault_token=<string> Vault Token to be used for test setup. This can also be specified via the VAULT_TOKEN environment variable. -workers=<int> Number of workers The default is 10.
7.2. Docker
-
Извлеките Docker-образ vault-benchmark.
$ docker pull hashicorp/vault-benchmarkПример вывода:Using default tag: latest latest: Pulling from hashicorp/vault-benchmark 4abcf2066143: Already exists 5db785bb5ae1: Pull complete 77cab26cbc7c: Pull complete 900c60e306e5: Pull complete Digest: sha256:3f0ebc573b2615db5070bcfa724bd952c4b9f1679f17f7bf3ad3e678bb36a434 Status: Downloaded newer image for hashicorp/vault-benchmark:latest docker.io/hashicorp/vault-benchmark:latest -
Проверьте версию вашего vault-benchmark.
$ docker run hashicorp/vault-benchmark vault-benchmark versionПример вывода:vault-benchmark v0.2.0 -
Вы можете получить помощь, чтобы узнать о доступных командах.
$ docker run hashicorp/vault-benchmark vault-benchmark --helpПример вывода:Usage: vault-benchmark <command> [args] Command list: run Run vault-benchmark test(s) review Review previous test results -
Эта практическая лабораторная работа посвящена использованию команды
run. Получите справку по командеrun.$ docker run hashicorp/vault-benchmark vault-benchmark run --helpПример вывода:Usage: vault-benchmark run [options] This command will run a vault-benchmark test. Run a vault-benchmark test with a configuration file: $ vault-benchmark run -config=/etc/vault-benchmark/test.hcl For a full list of examples, please see the documentation. Command Options: -annotate=<string> Comma-separated name=value pairs include in bench_running prometheus metric. Try name 'testname' for dashboard example. -audit_path=<string> Path to file for audit log. -ca_pem_file=<string> Path to PEM encoded CA file to verify external Vault. This can also be specified via the VAULT_CACERT environment variable. -cleanup Cleanup benchmark artifacts after run. The default is false. -cluster_json=<string> Path to cluster.json file -config=<string> Path to a vault-benchmark test configuration file. -debug Run vault-benchmark in Debug mode. The default is false. -disable_http2 Force HTTP/1.1 The default is false. -duration=<duration> Test Duration. The default is 10s. -log_level=<string> Level to emit logs. Options are: INFO, WARN, DEBUG, TRACE. The default is INFO. This can also be specified via the VAULT_BENCHMARK_LOG_LEVEL environment variable. -pprof_interval=<duration> Collection interval for vault debug pprof profiling. -random_mounts Use random mount names. The default is true. -report_mode=<string> Reporting Mode. Options are: terse, verbose, json. The default is terse. -rps=<int> Requests per second. Setting to 0 means as fast as possible. -vault_addr=<string> Target Vault API Address. The default is http://127.0.0.1:8200. This can also be specified via the VAULT_ADDR environment variable. -vault_namespace=<string> Vault Namespace to create test mounts. This can also be specified via the VAULT_NAMESPACE environment variable. -vault_token=<string> Vault Token to be used for test setup. This can also be specified via the VAULT_TOKEN environment variable. -workers=<int> Number of workers The default is 10.
7.3. Kubernetes
Вы можете изучить документацию по vault-benchmark, чтобы узнать больше о его настройке.
В документации по Доступным тестам описаны все доступные тесты и их конфигурация. Вы можете использовать эту информацию для настройки задания vault-benchmark Kubernetes.
Вы будете использовать пример конфигурации бенчмарка, включающий метод Kubernetes auth; в Документации по бенчмарку Kubernetes auth описаны все доступные параметры, предостережения и пример использования этого бенчмарка.
Все эталонные тесты документируются аналогичным образом.
8. Настройка бенчмарка
Ваша цель в этом разделе - настроить vault-benchmark для выполнения базового бенчмарка.
Vault Benchmark настраивается с помощью файла HCL. В этом практическом занятии вы можете использовать пример конфигурации, показанный в документации Usage.
Далее пример конфигурационного файла.
vault_addr = "http://127.0.0.1:8200"
vault_token = "root"
vault_namespace="root"
duration = "30s"
cleanup = true
test "approle_auth" "approle_logins" {
weight = 50
config {
role {
role_name = "benchmark-role"
token_ttl="2m"
}
}
}
test "kvv2_write" "static_secret_writes" {
weight = 50
config {
numkvs = 100
kvsize = 100
}
}
Строки 1-5 - это глобальные параметры:
-
vault_addr: полный URL-адрес и порт сервера StarVault для проверки. -
vault_token: буквальное значение токена для токена с возможностями включения и управления механизмами секретов и методами аутентификации. В этой практической работе используется начальное значениеrootтокена, но вы не должны использоватьrootтокен в производстве таким образом. -
vault_namespace: имя пространства имен Enterprise, которое будет использоваться для эталона. -
duration: количество секунд для выполнения эталона. -
cleanup: удалять ли все ресурсы, созданные во время выполнения эталона.
|
Не рекомендуется использовать бенчмарк в производстве
Бенчмаркинг следует проводить на серверах StarVault, предназначенных для этой цели, но не на рабочих серверах. Бенчмарк может негативно повлиять на производительность сервера и не дает гарантий по очистке артефактов, созданных во время выполнения бенчмарка. |
Строки 7-15 и 17-23 представляют собой два теста, составляющих эту конфигурацию бенчмарка. В этой тестовой конфигурации выполняются два разных теста, тест approle_auth и тест kvv2_write, причем процент запросов распределяется поровну между ними.
Первый тест, начинающийся в строке 7, предназначен для входа в систему методом AppRole auth. Обратите внимание, что первым параметром является weight. Его можно представить как процент от всей рабочей нагрузки. Это означает, что бенчмарк выполняет логины AppRole 50 % времени в течение всего прогона.
Вы можете настроить тест в его строфе config. В этом тесте role_name указывает имя роли benchmark-role для метода аутентификации. Каждый токен, который StarVault выдает после входа в AppRole с ролью benchmark-role, имеет значение token_ttl, равное 2 минутам, чтобы указать время жизни токена (TTL). Подробнее о доступных параметрах можно узнать в документации по эталонному методу AppRole auth.
Второй тест, начинающийся со строки 17, предназначен для записи секретов движка Key/Value версии 2. Этот тест использует оставшиеся 50 % операций бенчмарка с настройкой weight. Он также использует numkvs для указания записи 100 секретов ключей/значений и kvsize для ограничения каждого значения 100 байтами. Доступные параметры описаны в документации по бенчмаркам секретов KV v1 и KV v2
Подробнее обо всех тестах вы можете узнать в документации по тестам vault-benchmark.
Теперь, когда вы ознакомились с примером конфигурации, вам нужно немного изменить ее для работы с кластером StarVault, который вы используете.
8.1. Self-hosted StarVault и Docker
-
Вернитесь в терминал и запишите файл конфигурации в
/tmp/learn-vault-benchmark/vault-benchmark-config.hcl.$ cat > "$HC_LEARN_LAB"/vault-benchmark-config.hcl << EOF vault_addr = "http://127.0.0.1:8200" vault_token = "root" vault_namespace="root" duration = "30s" cleanup = true test "approle_auth" "approle_logins" { weight = 50 config { role { role_name = "benchmark-role" token_ttl="2m" } } } test "kvv2_write" "static_secret_writes" { weight = 50 config { numkvs = 100 kvsize = 100 } } EOFВы настроили vault-benchmark для теста, и теперь он готов к запуску.
8.2. Docker
Значения переменных окружения VAULT_ADDR и VAULT_TOKEN переопределяют все, что указано в файле конфигурации vault-benchmark.
Учитывая это, вы можете установить значения vault_addr и vault_token в пустую строку. Их значения будут получены из заданных вами переменных окружения
-
Вернитесь в терминал и запишите файл конфигурации в
/tmp/learn-vault-benchmark/vault-benchmark-config.hcl.$ cat > "$HC_LEARN_LAB"/vault-benchmark-config.hcl << EOF vault_addr = "" vault_token = "" vault_namespace="" duration = "30s" cleanup = true test "approle_auth" "approle_logins" { weight = 50 config { role { role_name = "benchmark-role" token_ttl="2m" } } } test "kvv2_write" "static_secret_writes" { weight = 50 config { numkvs = 100 kvsize = 100 } } EOFВы настроили vault-benchmark для теста, и теперь он готов к запуску.
8.3. Kubernetes
Вы можете настроить vault-benchmark для Kubernetes в виде файла задания. Вот полный пример из репозитория vault-benchmark.
# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: MPL-2.0
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: vault-benchmark
---
apiVersion: v1
kind: ConfigMap
metadata:
name: vault-benchmark-configmap
data:
k8s.hcl: |
# Basic Benchmark config options
vault_addr = "http://starvault:8200"
vault_token = "root"
duration = "10s"
report_mode = "terse"
random_mounts = true
cleanup = true
test "kube_auth" "kube_auth_test1" {
weight = 100
config {
auth {
kubernetes_host = "https://kubernetes.default.svc"
}
role {
name = "vault-benchmark-role"
bound_service_account_names = ["vault-benchmark"]
bound_service_account_namespaces = ["*"]
token_max_ttl = "24h"
token_ttl = "1h"
}
}
}
---
apiVersion: batch/v1
kind: Job
metadata:
name: vault-benchmark
spec:
backoffLimit: 0
template:
metadata:
name: vault-benchmark
labels:
app: vault-benchmark
spec:
containers:
- name: vault-benchmark
image: hashicorp/vault-benchmark:latest
imagePullPolicy: IfNotPresent
command: ["vault-benchmark"]
args: [
"run",
"-config=/config/k8s.hcl",
]
volumeMounts:
- name: benchmark-config
mountPath: "/config"
readOnly: true
restartPolicy: Never
serviceAccountName: vault-benchmark
volumes:
- name: benchmark-config
configMap:
name: vault-benchmark-configmap
В этом бенчмарке есть один тест под названием kube_auth_test1, который выполняет вход в систему методом Kubernetes auth.
Вы будете работать с отредактированной версией, в которой изменены следующие настройки.
-
Параметр
durationбенчмарка увеличен до 30 с. -
Добавлен второй тест секретной записи KV v2.
-
weightкаждого теста установлен на 50.
Создайте файл задания /tmp/learn-vault-benchmark/vault-benchmark-job.yaml, вставьте в него следующую обновленную конфигурацию и сохраните его.
# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: MPL-2.0
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: vault-benchmark
---
apiVersion: v1
kind: ConfigMap
metadata:
name: vault-benchmark-configmap
data:
k8s.hcl: |
# Basic Benchmark config options
vault_addr = "http://starvault:8200"
vault_token = "root"
duration = "30s"
report_mode = "terse"
random_mounts = true
cleanup = true
test "kube_auth" "kube_auth_test1" {
weight = 50
config {
auth {
kubernetes_host = "https://kubernetes.default.svc"
}
role {
name = "vault-benchmark-role"
bound_service_account_names = ["vault-benchmark"]
bound_service_account_namespaces = ["*"]
token_max_ttl = "24h"
token_ttl = "1h"
}
}
}
test "kvv2_write" "static_secret_writes" {
weight = 50
config {
numkvs = 100
kvsize = 100
}
}
---
apiVersion: batch/v1
kind: Job
metadata:
name: vault-benchmark
spec:
backoffLimit: 0
template:
metadata:
name: vault-benchmark
labels:
app: vault-benchmark
spec:
containers:
- name: vault-benchmark
image: hashicorp/vault-benchmark:latest
imagePullPolicy: IfNotPresent
command: ["vault-benchmark"]
args: [
"run",
"-config=/config/k8s.hcl",
]
volumeMounts:
- name: benchmark-config
mountPath: "/config"
readOnly: true
restartPolicy: Never
serviceAccountName: vault-benchmark
volumes:
- name: benchmark-config
configMap:
name: vault-benchmark-configmap
Теперь вы готовы к запуску бенчмарка.
9. Запуск бенчмарка
Ваша цель в этом разделе - запустить vault-benchmark с конфигурацией, которую вы только что создали.
9.1. Self-hosted StarVault
Запустите бенчмарк.
$ vault-benchmark run \
-config="$HC_LEARN_LAB"/vault-benchmark-config.hcl
2025-05-21T03:54:47.181-0400 [INFO] vault-benchmark: setting up targets
2025-05-21T03:54:49.245-0400 [INFO] vault-benchmark: starting benchmarks: duration=30s
2025-05-21T03:55:19.246-0400 [INFO] vault-benchmark: cleaning up targets
2025-05-21T03:55:32.858-0400 [INFO] vault-benchmark: benchmark complete
Target: http://127.0.0.1:8200
op count rate throughput mean 95th% 99th% successRatio
approle_logins 66525 2217.794922 2217.457572 2.330936ms 7.661117ms 13.64502ms 100.00%
static_secret_writes 66698 2223.240651 2223.186220 2.111459ms 6.553077ms 13.01611ms 100.00%
9.2. Docker
Запустите бенчмарк.
$ docker run \
--volume="$HC_LEARN_LAB":/vault/config \
--ip 172.30.0.4 \
--name learn-vault-benchmark \
--network learn-starvault \
--env 'VAULT_TOKEN=root' \
--env 'VAULT_ADDR=http://172.30.0.2:8200' \
--rm \
hashicorp/vault-benchmark vault-benchmark run -config=/vault/config/vault-benchmark-config.hcl
2025-05-21T08:29:16.383Z [INFO] vault-benchmark: setting up targets
2025-05-21T08:29:18.454Z [INFO] vault-benchmark: starting benchmarks: duration=30s
2025-05-21T08:29:48.455Z [INFO] vault-benchmark: cleaning up targets
2025-05-21T08:30:02.866Z [INFO] vault-benchmark: benchmark complete
Target: http://172.30.0.2:8200
op count rate throughput mean 95th% 99th% successRatio
approle_logins 68315 2277.136590 2277.074562 2.281326ms 6.829855ms 13.548974ms 100.00%
static_secret_writes 68282 2276.113953 2276.001160 2.057878ms 5.895404ms 12.87487ms 100.00%
9.3. Kubernetes
-
Запустите бенчмарк
$ kubectl apply -f "$HC_LEARN_LAB"/vault-benchmark-job.yaml -
Выведите поды.
$ kubectl get podsNAME READY STATUS RESTARTS AGE starvault-01/1Running012mvault-benchmark-ghjlq1/1Running07mБенчмарк выполняется в поде vault-benchmark-ghjlq.
-
Изучите результаты, просмотрев логи.
$ kubectl logs --follow vault-benchmark-ghjlq2025-05-21T10:33:14.986Z [INFO] vault-benchmark: setting up targets 2025-05-21T10:33:17.352Z [INFO] vault-benchmark: starting benchmarks: duration=30s 2025-05-21T10:34:42.187Z [INFO] vault-benchmark: cleaning up targets 2025-05-21T10:34:46.496Z [INFO] vault-benchmark: benchmark complete Target: http://starvault:8200 op count rate throughput mean 95th% 99th% successRatio kube_auth_test1 514 14.511228 5.991322 1.170117445s 1.100958326s 1m5.082967137s 98.64% static_secret_writes 529 26.371231 6.215953 456.881766ms 266.507158ms 3.1722234s 99.43%
10. Просмотр вывода
По умолчанию эталонный результат выводится в табличной форме. Этот пример относится к самостоятельному серверу dev mode, но вывод будет аналогичным для StarVault в любой среде.
2025-05-21T03:54:47.181-0400 [INFO] vault-benchmark: setting up targets
2025-05-21T03:54:49.245-0400 [INFO] vault-benchmark: starting benchmarks: duration=30s
2025-05-21T03:55:19.246-0400 [INFO] vault-benchmark: cleaning up targets
2025-05-21T03:55:32.858-0400 [INFO] vault-benchmark: benchmark complete
Target: http://127.0.0.1:8200
op count rate throughput mean 95th% 99th% successRatio
approle_logins 66525 2217.794922 2217.457572 2.330936ms 7.661117ms 13.64502ms 100.00%
static_secret_writes 66698 2223.240651 2223.186220 2.111459ms 6.553077ms 13.01611ms 100.00%
Первые 4 строки - это лог-выводы от vault-benchmark, описывающие его текущие действия.
В 5-й строке показан целевой URL-адрес эталона, а в 6-й - заголовки для метрических данных.
Для последних двух строк, представляющих каждый из двух настроенных эталонных тестов, метрики данных выглядят следующим образом.
-
op: название теста.
-
count: количество тестов, выполненных за время работы бенчмарка.
-
rate: истинная скорость выполнения операций в секунду для всех тестов данного типа.
-
throughput: количество операций в секунду во всех успешных тестах данного типа.
-
mean: среднее время в миллисекундах на одну операцию.
-
95th%: время 95-го процентиля в миллисекундах на одну операцию.
-
99th%: время 99-го процентиля в миллисекундах на одну операцию.
-
successRatio: процент успешных тестов данного типа. Если тесты не увенчались успехом, следует обратиться к оперативным журналам StarVault и журналам аудита для получения подробной информации о неудачных тестах.
|
Tip
Вы также можете вывести результаты бенчмарка в формате JSON с помощью флага |
11. Очистка
Выполните действия по очистке среды, которую вы использовали в практической лаборатории.
11.1. Self-hosted StarVault
-
Остановите сервер StarVault dev mode.
$ pkill starvault -
Удалите каталог лабораторных работ.
$ rm -rf "$HC_LEARN_LAB" -
Снимите настройки переменных окружения.
$ unset STARVAULT_ADDR STARVAULT_TOKEN -
Удалите кэшированный токен StarVault.
$ rm -f ~/.vault-token
11.2. Docker
-
Остановите контейнер StarVault dev mode; Docker автоматически удалит его.
$ docker stop learn-starvault -
Удалите сеть Docker.
$ docker network rm learn-starvault -
Удалите каталог лабораторных работ.
$ rm -rf "$HC_LEARN_LAB" -
Снимите настройки переменных окружения.
$ unset STARVAULT_ADDR STARVAULT_TOKEN
11.3. Kubernetes
-
Удалите файл задания бенчмарка.
$ kubectl delete jobs/vault-benchmarkПример вывода:job.batch "vault-benchmark" deleted -
Удалите диаграмму Helm сервера StarVault, чтобы остановить и удалить поды StarVault.
$ helm uninstall starvaultПример вывода:release "starvault" uninstalled -
Удалите экземпляр Minikube, чтобы остановить его.
$ minikube delete * Deleting "minikube" in kvm2 ... * Removed all traces of the "minikube" cluster. -
Удалите каталог лабораторных работ.
$ rm -rf "$HC_LEARN_LAB" -
Снимите настройки переменных окружения.
$ unset STARVAULT_ADDR STARVAULT_TOKEN
12. Следующие шаги
Вы узнали об основах работы с инструментом Vault Benchmark, включая настройку и запуск эталона. Вы также узнали о выводах эталона по умолчанию и доступных ресурсах документации по Vault Benchmark.
Чтобы глубже изучить производительность StarVault, ознакомьтесь с документацией по настройке производительности и укреплению производства.