具有 KMS 自动解封功能的 EKS 上的 Vault:“http://127.0.0.1:8200/v1/sys/seal-status”:拨打 tcp 127.0.0.1:8200:连接:连接被拒

Posted

技术标签:

【中文标题】具有 KMS 自动解封功能的 EKS 上的 Vault:“http://127.0.0.1:8200/v1/sys/seal-status”:拨打 tcp 127.0.0.1:8200:连接:连接被拒绝【英文标题】:Vault on EKS with KMS auto-unseal: "http://127.0.0.1:8200/v1/sys/seal-status": dial tcp 127.0.0.1:8200: connect: connection refused 【发布时间】:2022-01-16 06:10:32 【问题描述】:

我已经在我的带有 kubernetes 1.21.0 的 AWS EKS 集群中使用 Vault Helm Chart 版本 0.18.0 安装了 Vault 1.9.1,但我无法通过键入以下命令来初始化它:

kubectl --namespace=vault exec vault-0 -- vault operator init

我得到了错误

Error initializing: Put "http://127.0.0.1:8200/v1/sys/init": dial tcp 127.0.0.1:8200: 
connect: connection refused

pod 正在运行但未处于 READY 状态,就绪探测失败,原因是:

Error checking seal status: Get "http://127.0.0.1:8200/v1/sys/seal-status": dial tcp 127.0.0.1:8200: connect: connection refused

这是我的图表值:

vault:
  injector:
    enabled: false
  csi:
    enabled: true
  server:
    enabled: true
    extraVolumes:
      - name: vault-storage-config
        type: secret
    extraArgs: -config=/vault/userconfig/vault-storage-config/config.hcl
    ha:
      enabled: true
      replicas: 3

还有config.hcl

ui = true

storage "postgresql" 
  connection_url = "postgres://<user>:<pwd>@<rds.url>/vault"
  table="vault_kv_store"
  ha_enabled="true"
  ha_table="vault_ha_locks"


service_registration "kubernetes" 

seal "awskms" 
  kms_key_id = <my_kms_key_id>

我已启用自动解封功能,利用与 AWS KMS 的集成。 我已经检查过 EKS 工作节点是否能够访问 postgres RDS 实例并能够调用 AWS KMS 服务,它们被授予


    "Version": "2012-10-17",
    "Statement": [
        
          "Action": [
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:DescribeKey",
            "ec2:DescribeInstances"
          ],
          "Effect": "Allow",
          "Resource": "*"
        
    ]

有什么帮助吗?

【问题讨论】:

【参考方案1】:

我自己找到了解决方案。我专注于假设权限问题的自动解封功能,实际上后来我发现这是与 postgres 数据存储有关的问题。 由于重新启动,我丢失了后来可以输入的日志

kubectl logs vault-0 -n mynamespace --previous

所以我注意到了错误

Error initializing storage of type postgresql: 
failed to check for native upsert: dial tcp <rds_ip_instance>:5342: connect: connection timed 

早期我使用 psql 从主机检查 rds 实例的可达性,但我没有注意到我错误配置了 postgres 端口 5343 而不是 5432

基本上,我一直是混词效应的受害者,这让我疯狂了 2 天!

【讨论】:

以上是关于具有 KMS 自动解封功能的 EKS 上的 Vault:“http://127.0.0.1:8200/v1/sys/seal-status”:拨打 tcp 127.0.0.1:8200:连接:连接被拒的主要内容,如果未能解决你的问题,请参考以下文章

在 EKS 中使用其他账户的 ECR 图像

EKS中的UDP负载平衡替代方案

如何将 IAM OIDC 身份提供者与带有 CDK 的 EKS 集群相关联?

EKS 上的 AWS NLB 粘性会话

SSH 隧道到 EKS 上的 FushionAuth

EKS:在特定 AWS 自动缩放组上运行特定服务(pod)