我正在尝试将RKE2集群中运行的存储类型为file
的Hashicorp Vault独立迁移到存储类型为raft
的Hashicorp Vault HA。但还是有一些问题。我们使用的是0.22.0版本的Helm图表。下面是我所遵循的步骤:
- 创建一个临时的Vault Raft在RKE2中运行,只有一个副本(不初始化Vault)
Exec
进入存储类型为file
的旧Vault容器- 进入
/vault/
文件夹并在其中创建一个raft
文件夹 - 执行
vault operator migrate --config migrate.hcl
命令迁移。hcl文件看起来像这样:
storage_source "file" {
path = "/vault/data/"
}
storage_destination "raft" {
path = "/vault/raft/"
node_id = "vault-raft-0"
}
cluster_addr="https://127.0.0.1:8201"
- 迁移完成,它创建了一个
vault.db
文件到/vault/raft/
和一个raft.db
文件到/vault/raft/raft/
,包括一个名为snapshots
的空文件夹。 然后我将整个 - 复制文件后,我重新部署了临时的Vault Raft,因为pvc不会被删除,并检查它是否仍然有复制的
.db
文件在里面。 - 最后我试图解开它,但在运行第三个命令后,它返回以下消息:
Error unsealing: context deadline exceeded
/vault/raft/
文件夹复制到我的本地pc,并再次复制到临时的Vault Raft容器中。它具有相同的数据存储挂载路径,因此:/vault/raft/
我做错了什么吗?
可能有点晚了,但是我的工作流程听起来是这样的:
- 创建迁移。hcl与内容:
storage_source "file" {
path = "/vault/data/"
}
storage_destination "raft" {
path = "/vault/data/"
}
cluster_addr = "https://vault-0.vault-internal:8201"
- 然后运行
vault operator migrate -config=migrate.hcl
- 卸载以前的部署。
- 安装启用了raft的部署
- 在vault-0运行
vault operator unseal
在其他pod上运行
vault operator raft join http://vault-0.vault-internal:8200
和vault operator unseal
。这个为我工作