【发布时间】:2020-07-20 04:33:03
【问题描述】:
我一直试图让 Vault 在 OpenShift 3.11 中使用 Raft 存储在 HA 模式下运行,但在尝试将第二个节点加入集群时总是出现以下错误:
- failed to join raft cluster: bootstrap init call during bootstrap init call: Put https://vault3.vault3.svc:8200/v1/sys/storage/raft/bootstrap/challenge: x509: certificate signed by unknown authority
我按照this 示例创建了证书和密钥,并将它们与 Kubernetes CA 一起存储为 Kubernetes 机密(名为 vault-server-tls)。
Helm 图表 values.yaml 有一个引用秘密的部分:
extraVolumes:
- type: secret
name: vault-server-tls
我相信它工作正常,因为我可以进入 pod 并且正在挂载 vault-server-tls 机密,并且 3 个文件按预期显示:
/ $ ls -l /vault/userconfig/vault-server-tls
total 0
lrwxrwxrwx 1 root root 15 Apr 7 19:26 vault.ca -> ..data/vault.ca
lrwxrwxrwx 1 root root 16 Apr 7 19:26 vault.crt -> ..data/vault.crt
lrwxrwxrwx 1 root root 16 Apr 7 19:26 vault.key -> ..data/vault.key
Helm 图表 values.yaml 监听器配置引用了 cert、key 和 ca 文件:
raft:
# Enables Raft integrated storage
enabled: false
config: |
ui = true
cluster_addr = "https://POD_IP:8201"
listener "tcp" {
tls_disable = 0
address = "[::]:8200"
cluster_address = "[::]:8201"
tls_cert_file = "/vault/userconfig/vault-server-tls/vault.crt"
tls_key_file = "/vault/userconfig/vault-server-tls/vault.key"
tls_client_ca_file = "/vault/userconfig/vault-server-tls/vault.ca"
}
storage "raft" {
path = "/vault/data"
}
第一个吊舱开封良好:
oc exec -ti vault3-0 -- vault operator unseal -tls-skip-verify
Key Value
--- -----
Seal Type shamir
Initialized true
Sealed false
Total Shares 1
Threshold 1
Version 1.3.4
Cluster Name vault-cluster-945d1fc5
Cluster ID 2ac97997-b596-4dcc-4926-2d8acec56ed5
HA Enabled true
HA Cluster n/a
HA Mode standby
Active Node Address <none>
但是当我尝试将第二个 pod 加入集群时,我得到一个 x509: certificate signed by unknown authority 消息:
oc exec -ti vault3-1 -- vault operator raft join -tls-skip-verify https://vault3.vault3.svc:8200
Error joining the node to the raft cluster: Error making API request.
URL: POST https://127.0.0.1:8200/v1/sys/storage/raft/join
Code: 500. Errors:
* failed to join raft cluster: error during bootstrap init call: Put https://vault3.vault3.svc:8200/v1/sys/storage/raft/bootstrap/challenge: x509: certificate signed by unknown authority
进入第二个 pod,我可以看到 VAULT_CACERT 环境值存在并且设置正确(如上所述,3 个文件按预期就位):
/ $ printenv VAULT_CACERT
/vault/userconfig/vault-server-tls/vault.ca
/ $ printenv VAULT_ADDR
https://127.0.0.1:8200
/ $
这是我的 CA:
-----BEGIN CERTIFICATE-----
MIIC6jCCAdKgAwIBAgIBATANBgkqhkiG9w0BAQsFADAmMSQwIgYDVQQDDBtvcGVu
c2hpZnQtc2lnbmVyQDE1NjcxNzQyODkwHhcNMTkwODMwMTQxMTI4WhcNMjQwODI4
MTQxMTI5WjAmMSQwIgYDVQQDDBtvcGVuc2hpZnQtc2lnbmVyQDE1NjcxNzQyODkw
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTE3YoGObzoRFLTcLR4Ocv
FPy8XrWvWxBGnb1U9ct2QUaTjxuubcazGZOr8QuovwnFzp3Is8xS3pz9wBDyZqpS
JX1Z3Ja/ngi9472aAPLZnalRnGWkrTl8pAargLTUmnAcS7eEfRs+NH6aZdpefhX5
PQ3Ll1xMuu3U/PVVtfwkLje85LsevlVs5VBjDdc36UOU0BhEJM4pXbvLDG2pLpnM
BhILR2RgOX5oca27K6YDVVTHwxw83EgWvUHwpeoZuyEMPBQqhHJ3fzPvxfx4rCgd
/iV8KO2zP+/3t/kmrkJM7avgWbc7QqWPeKbB7WkKOpaTMwhpe1U1ZNjTnt2tzo8f
AgMBAAGjIzAhMA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
SIb3DQEBCwUAA4IBAQC6hJ/74qvFztZ0YQBT5ZhGdwgUQtFYttcgLMRcv6QX8S+M
WK8TnmlMb6xgklzsc63nFzPl1pPHMQ7pEiclUUZCJdivzgVlDGLrjXUxYVLA2TGu
UqJJer9XAkAtrAPZ/ppx3iroinDWA+8mQBs4h9nmmFQS98et7A1Of0Josl/3UE6R
9jQDvadOLi01t3UPqSLvsYfpl5I4cuqpiCSnphTHLIl1AL5PNwuZAgLpOIVVsi9h
7OaIy285vYoGK12L3yUXYj5EixY94CmYMu6LDfiQdeN6P9nE78O4OXPS3uXm2M1/
Trm1rY3ulqyj6jwLwmvPQpwtO81A48GrNTvcoFq+
-----END CERTIFICATE-----
这是我的证书:
-----BEGIN CERTIFICATE-----
MIIDgjCCAmqgAwIBAgIUQ3RqBAahTzugd9PfQ29Y1nAT5EcwDQYJKoZIhvcNAQEL
BQAwJjEkMCIGA1UEAwwbb3BlbnNoaWZ0LXNpZ25lckAxNTc4NDI5MzQwMB4XDTIw
MDQwNzE3NDkwMFoXDTIxMDQwNzE3NDkwMFowHDEaMBgGA1UEAxMRdmF1bHQzLnZh
dWx0My5zdmMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC5/cyUmBJM
c3ngjqZmc5LDVp7Ft7UNeb2RF3GedRiefp5/S+0xTSGRItigv/qJ4QrGuujkFtcI
O9zwxPFAjXy+HFW3gjUzqqZKdY1aur9QYtVYeZxFHxSy67jLQIT2NIcN2c4HC8yk
FKDTY/sviv5LZy90w7Spw514sdy5bQZApfE9PWrhDMNHYbiU6aq2uWmvlkVTfXdB
v/5DMFE691WcH1x0kJxHW3TMp8vh9Y7N5tm7PTeFPuHc/OimHSvzuMPOqrCPmcoY
h8fvQTBmjOthIY9ATSELXPYnRsOmwqYEnHh2PLIugVRQ/iAT4zSuN0eoo8ja05Oa
hFpxeOfBZWWrAgMBAAGjgbEwga4wDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoG
CCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFO2ZvIrxIeG1BFYTMMhQ
T4VJALNjMFoGA1UdEQRTMFGCBnZhdWx0M4INdmF1bHQzLnZhdWx0M4IRdmF1bHQz
LnZhdWx0My5zdmOCH3ZhdWx0My52YXVsdDMuc3ZjLmNsdXN0ZXIubG9jYWyHBH8A
AAEwDQYJKoZIhvcNAQELBQADggEBAFzKuf7vGxowvEqCDLB044DWUFnx5iSJ3t9q
+xJTza3a7aIVZtbHy9wz8z2u/3WZKXKfepQJW8BvFfr1LkZd7bA73/RgysJkLclo
E2gPwRTqIcYdNc0za5GB5WV2HH6TM/Ybfvp+UdJ42YzvhdFr8FL8CZS9IOjJ/yyl
nRp77c4O10OFNwQIxGqsvhcDmKKw9/ISER5opWT9vRKoOlW7vDcsCgOg+td8m0//
WX6IOOQz5gYvBTQFXK4t8cNrA2P8Fb7LICdHD9v8yNshwa0ytYCgRhqoXmSR7fXf
Rw8c2ZjzLNlZbRJprkTafI9lDZBpoltKf0qpfDWfeeEXab2toyw=
-----END CERTIFICATE-----
这是我的钥匙:
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAuf3MlJgSTHN54I6mZnOSw1aexbe1DXm9kRdxnnUYnn6ef0vt
MU0hkSLYoL/6ieEKxrro5BbXCDvc8MTxQI18vhxVt4I1M6qmSnWNWrq/UGLVWHmc
RR8Usuu4y0CE9jSHDdnOBwvMpBSg02P7L4r+S2cvdMO0qcOdeLHcuW0GQKXxPT1q
4QzDR2G4lOmqtrlpr5ZFU313Qb/+QzBROvdVnB9cdJCcR1t0zKfL4fWOzebZuz03
hT7h3Pzoph0r87jDzqqwj5nKGIfH70EwZozrYSGPQE0hC1z2J0bDpsKmBJx4djyy
LoFUUP4gE+M0rjdHqKPI2tOTmoRacXjnwWVlqwIDAQABAoIBAGfn/1QAhTCKzssC
Rroz1QkmKjthP1fQ7HPTehlBZ8icCmYpf9CsO5V+tzFPL2O6ArA1mYhbrjQeZXdp
PzKGGOuInuaParN7ob01YQwQCnOZU4FDJ2eCTqkKgcmjOOTnQZAeXziWgfQkxhhy
4dCUwS5U7jE4aITzENVt4FcDLpwMZHNZBnfI9npB5/UhaDEl8X6DB/B3lDwB6lWf
mfA20FB3qaLA4tQYRL3DrhD2e5uKje7ajfd6IUHEnvCIfMrrjNrfTQY6I0YfubvB
scs2pr0pyVgZkt4vWZHpwlw2vjMrBy93HtCoAyPN+aSLD9CM4j+HXWJ4Bew5EjFQ
kBEcuCECgYEA6zVVwYWp92iOJ5lhH7tLgkTCBLDCOAdLMuPBJVhQdO1K0FaMwbHV
2Su/RmOPpgYZGAlicdgrm9MS77zsrhWneV3Oo82IpD8j/ah7bP0RGxS7BZDSy+cK
/QI7mYTrNG7Re8+4WdAL9seO4gcS6+bPOBuf5wR7cFeXacJHo72CLvsCgYEAym60
q3hLiC+RZifuK4z9KN3hMQ3MDtbYrjSGROzZF0SWEM1xJke4fX/jjSGt/IMK8p9N
HxcYWD1gVfeP5Vxnj297JdBbi/knmoKoDN075IVP6j1P7Q9UG4XVEK5qgvmYizU8
kd+IbyMa5OXT93M5aw2NgeEoe/JntfEA22cCJRECgYAVQd29PrpMvOtUEt2fQ4sg
e9xZFiyHaclXERRsrp2e469GQvw3qT3dgcGot+jMpXJxJK/8AAB49cuZVSbC2Pwo
0NyTG0lFJtu22hpFkF2SZ/47E4qpmPj6QtBmIIgtVfKi0PQlUdMy+3gjX2ZLYbHK
rVx3QYVycsgha8iTuNXiLwKBgQCwrYS0L27E8rdVUL53djsyIs07kg4qWWuOR7t0
hr9Gpo7PJW9++JPVvPvunpmKzRiN/2lBHFgcE510Cnilt0uPjb4Ol9Z+yTu+iBCC
AckXPx8rks2iWoGO7/Sw9XlyzMNNpG4z5sPeM+ZyJwEkdIWFoLODyu8Zlszbp/eW
hkYB8QKBgQDp9x7rWaWUAeCFTUkEUWNiVXGp/BrTfGGkunZFJXgZrqJHHKSmdeRI
VarplRVJzyeD8qf7qyoS34oaXB/3o+ZdPHxM1+bLp2tQtqwgQtcX36FmyimHggym
71YkHfWj9ABUX0Gczdwj8atJcBrNSiHzbpDvdi1F5vNFymOvfqI9hA==
-----END RSA PRIVATE KEY-----
我已经按照 Helm TLS 示例中的示例(在这篇文章的顶部)进行了操作,可能有 10 次不同的时间,但仍然得到相同的错误。
我不确定我做错了什么,但我们将不胜感激。
【问题讨论】:
-
您好。我遇到了和你一样的问题。遵循“standalone-tls”文档和几次,总是遇到像你一样的错误。因此,出于调试原因,我从 vault:1.4.0 映像构建了自己的 Docker 映像,并在构建时将 kubernetes ca 证书添加到 alpine 证书存储中。有了这个自定义图像,筏连接就起作用了。所以我猜在 Vault 或 helm 图表中存在某种关于 ca 文件标志的错误。不是真正的解决方案,但至少我现在知道它不是“我”或我的证书。
标签: hashicorp-vault raft