【问题标题】:deploy hashicorp vault without persistent storage in openshift在 openshift 中部署没有持久存储的 hashcorp vault
【发布时间】:2019-10-31 17:24:16
【问题描述】:

如何在不使用持久卷 (PV) 的情况下在 openshift 中部署 hashcorp vault?

在openshift集群中作为普通用户(不是集群管理员),需要部署vault server。我关注了URL,但它在 vault.yaml 文件中有持久卷(/vault/file),这需要我的帐户创建持久容器的权限,但我的帐户没有足够的权限。所以我删除了 vault-config.json 中的光伏安装路径,如下所示,但我看到了以下错误。

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

是否可以在没有 PV 的情况下创建 vault 服务器,比如像普通用户一样使用本地文件路径(/tmp/file)作为后端存储?

在没有 PV 的情况下在 openshift 中部署 vault 以部署 hashcorp vault 的替代方法是什么?

下面是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

【问题讨论】:

标签: openshift hashicorp-vault persistent-volumes openshift-enterprise


【解决方案1】:

如何在不使用的情况下在 openshift 中部署 hashcorp vault 持久卷 (PV)?

您可以使用here 中提到的内存中存储后端。所以您的 保险库配置 看起来像这样:

$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. 这可以是容器内的任何路径,只是为了避免对持久性卷的依赖。

但是这个模型有什么问题容器重启后,由于容器不存储数据,所有数据都会丢失

没有高可用性——文件系统后端不支持高可用性 可用性。

那么理想的解决方案应该是什么?任何使我们的数据高度可用的东西,这是通过使用dedicated backend storage和数据库来实现的。

为简单起见,让我们将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 容器,并使用服务名称将它指向它,如以上config.hcl

希望这会有所帮助!

【讨论】:

  • 感谢您的详细回答。我将使用 postgresSQL 尝试您的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-24
  • 2016-12-29
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
相关资源
最近更新 更多