在hasshift中没有持久存储的部署hashicorp保管库

问题描述 投票:0回答:1

如何在不使用持久卷(PV)的情况下在openshift中部署hashicorp保管库?

在openshift集群中,以普通用户(而非集群管理员)的身份,需要部署Vault服务器。我遵循了URL,但是它在vault.yaml文件中具有持久卷(/ vault / file),这需要我的帐户具有创建持久性容器的权限,但是我没有足够的权限来保护我的帐户。所以我删除了vault-config.json中的pv安装路径,如下所示,但我看到了以下错误。

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

是否有可能在没有PV的情况下创建Vault服务器,例如以本地用户身份使用本地文件路径(/ tmp / file)作为后端存储?

在没有PV的情况下在openshift中部署Vault的替代方法是什么,以部署hashicorp 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个回答
0
投票

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

您可以使用[[内存中的后端存储]],如here所述。因此,您的vault config看起来像这样:$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. 写入/读取数据/秘密的权限
这可能是
  • 容器内的任何路径
  • ,只是为了避免依赖于持久性卷。
    但是

    此模型有什么问题? 容器重新启动时,所有数据将丢失,因为容器不存储数据

    无高可用性–文件系统后端不支持高可用性可用性。

    那么

    什么是理想的解决方案

    ?使数据高度可用的任何事情,这可以通过使用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中解释的服务名称将其指向保管库。>希望这会有所帮助!
    © www.soinside.com 2019 - 2024. All rights reserved.