развернуть хранилище hashicorp без постоянного хранилища в openshift

Как развернуть хранилище hashicorp в openshift без использования постоянных томов (PV)?

В кластере openshift в качестве обычного пользователя (не администратора кластера) необходимо развернуть сервер хранилища. Я перешел по URL, но у него есть постоянные тома (/ vault / file ) в файле vault.yaml, который требует разрешения для моей учетной записи на создание постоянного контейнера, но у меня недостаточно прав для моей учетной записи. поэтому я удалил пути монтирования pv в vault-config.json, как показано ниже, но я вижу ошибку ниже.

{"backend": 
    {"file": 
        {"path": "/tmp/file"}
    }, 
...
...
}

Можно ли создать сервер хранилища без PV, например, используя путь к локальному файлу (/ tmp / file) в качестве внутреннего хранилища от имени обычного пользователя?

Какой альтернативный способ развернуть хранилище в openshift без PV для развертывания хранилища hashicorp?

Ниже приведена ошибка при запуске с pv,

--> Scaling vault-1 to 1
-->  FailedCreate: vault-1 Error creating: pods "vault-1-" is forbidden: unable to validate against any security context constraint: [spec.containers[0].securityContext.privileged: Invalid value: true: Privileged containers are not allowed]
error: update acceptor rejected vault-1: pods for rc 'dev-poc-environment/vault-1' took longer than 600 seconds to become available

person intechops6    schedule 24.10.2019    source источник
comment
Вместо этого вы можете использовать плот, но он только в предварительной версии: vaultproject.io/docs/ конфигурация / хранилище / raft.html.   -  person sethvargo    schedule 29.10.2019


Ответы (1)


Как развернуть хранилище hashicorp в openshift без использования постоянных томов (PV)?

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

$cat config.hcl
disable_mlock = true
storage "inmem" {}

listener "tcp" {
  address = "0.0.0.0:8200"
  tls_disable = 0
  tls_cert_file = "/etc/service/vault-server/vault-server.crt"
  tls_key_file = "/etc/service/vault-server/vault-server.key"
}

ui = true
max_lease_ttl = "7200h"
default_lease_ttl = "7200h"
api_addr = "http://127.0.0.1:8200"

Но при этом данные / секреты не являются постоянными.

Другой способ - добавить путь к файлу в хранилище, чтобы все зашифрованные секреты хранились по указанному пути.

так что теперь ваша конфигурация изменится на

storage "file" {
    path = "ANY-PATH"
}

ЗДЕСЬ СЛЕДУЕТ ЗАМЕТИТЬ:

  1. Определенный путь должен иметь разрешения на запись / чтение данных / секретов.
  2. Это может быть любой путь внутри контейнера, чтобы избежать зависимости от постоянного тома.

Но в чем проблема этой модели? При перезапуске контейнера все данные будут потеряны, поскольку контейнер не хранит данные.

Нет высокой доступности - серверная часть файловой системы не поддерживает высокую доступность.

Итак, какое должно быть идеальное решение? Все, что делает наши данные высокодоступными, что достигается с помощью выделенное внутреннее хранилище с использованием базы данных.

Для простоты возьмем PostgreSQL в качестве внутреннего хранилища.

storage "postgresql" {
  connection_url = "postgres://user123:secret123!@localhost:5432/vault"
}

Итак, теперь конфигурация выглядит примерно так:

$ cat config.hcl
disable_mlock = true

storage "postgresql" {
  connection_url = "postgres://vault:vault@vault-postgresql:5432/postgres?sslmode=disable"
}

listener "tcp" {
  address = "0.0.0.0:8200"
  tls_disable = 0
  tls_cert_file = "/etc/service/vault-server/vault-server.crt"
  tls_key_file = "/etc/service/vault-server/vault-server.key"
}

ui = true
max_lease_ttl = "7200h"
default_lease_ttl = "7200h"
api_addr = "http://127.0.0.1:8200"

Таким образом, выбор внутреннего хранилища поможет вам сохранить данные даже после перезапуска контейнера.

Поскольку вы специально ищете решение в openshift, создайте контейнер postgresSQL, используя предоставленный шаблон и сделайте так, чтобы хранилище указывало на него, используя имя службы, как объяснено в приведенной выше конфигурации. hcl

Надеюсь это поможет!

person Here_2_learn    schedule 31.10.2019
comment
спасибо за подробный ответ. Я попробую ваше решение, используя postgresSQL. - person intechops6; 06.11.2019