首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在openshift中部署没有持久存储的hashicorp库

在openshift中部署没有持久存储的hashicorp库
EN

Stack Overflow用户
提问于 2019-10-24 15:00:49
回答 1查看 535关注 0票数 0

如何使用持久卷(PV)部署openshift中的hashicorp库?

在openshift集群中,作为普通用户(而不是集群管理员),需要部署保险库服务器。我遵循了URL,但是它在vault.yaml文件中有持久的卷(/vault.yaml/ file ),这需要我的帐户创建持久容器的权限,但是我的帐户没有足够的权限。因此,我像下面一样删除了va-config.json中的pv挂载路径,但是我看到了下面的错误。

代码语言:javascript
复制
{"backend": 
    {"file": 
        {"path": "/tmp/file"}
    }, 
...
...
}

有没有可能在没有PV的情况下创建保险库服务器,比如使用本地文件路径(/tmp/ file )作为后端存储作为正常用户?

如果没有PV部署hashicorp库,在openshift中部署保险库的替代方法是什么?

下面是使用pv运行时的错误,

代码语言:javascript
复制
--> 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-31 09:24:16

如何使用持久卷(PV)部署openshift中的hashicorp库?

您可以使用在内存中存储后端,正如所提到的这里。因此,您的保险库配置如下所示:

代码语言:javascript
复制
$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"

但是有了这个,数据/秘密就不是持久的了。

另一种方法是将文件路径添加到存储中,以便将所有加密的秘密存储在上述路径上。

所以现在您的配置更改为

代码语言:javascript
复制
storage "file" {
    path = "ANY-PATH"
}

需要注意的点:

  1. 定义的路径应该具有权限来写入/读取数据/机密
  2. 这可能是容器中的任意路径,只是为了避免对持久性卷的依赖。

但是,这个模型的有什么问题?当容器重新启动时,所有数据都将丢失,因为容器不存储数据

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

那么,,什么是理想的解决方案,?任何使我们的数据高度可用的,这是通过使用数据库的专用后端存储器 来实现的。

为了简单起见,让我们以PostgreSQL作为后端存储。

代码语言:javascript
复制
storage "postgresql" {
  connection_url = "postgres://user123:secret123!@localhost:5432/vault"
}

现在,config看起来如下所示:

代码语言:javascript
复制
$ 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中解释的服务名称将其指向它。

希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58544098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档