You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vault初始化容器无法通过Kubernetes认证问题求助

排查Vault Agent注入Pod时Kubernetes认证403权限拒绝问题

以下是针对你遇到的403错误的分步排查方案,重点聚焦ServiceAccount和Kubernetes认证配置环节:

1. 验证Vault侧Kubernetes认证方法的基础配置

首先确认Vault中Kubernetes auth的核心参数是否正确指向你的EKS集群:

vault read auth/kubernetes/config

重点检查:

  • kubernetes_host:必须是EKS集群的API Server端点(格式如https://xxxx.eks.amazonaws.com)
  • kubernetes_ca_cert:必须是EKS集群的CA证书内容(可从本地kubeconfig文件中提取certificate-authority-data字段并解码)

如果这两个参数配置错误,Vault将无法验证EKS ServiceAccount的JWT令牌,直接返回403。

2. 手动测试ServiceAccount的JWT登录流程

绕过Injector,直接用目标ServiceAccount的JWT向Vault发起登录请求,定位问题环节:

  1. 在目标命名空间创建测试Pod,使用copper ServiceAccount:
apiVersion: v1
kind: Pod
metadata:
  name: test-sa-auth
  namespace: <你的部署命名空间>
spec:
  serviceAccountName: copper
  containers:
  - name: curl
    image: curlimages/curl
    command: ["sleep", "3600"]
  1. 进入Pod提取ServiceAccount的JWT令牌:
kubectl exec -it test-sa-auth -n <目标命名空间> -- cat /var/run/secrets/kubernetes.io/serviceaccount/token
  1. 用该令牌手动调用Vault登录接口:
curl -X POST https://vault.REDACTED.net:8200/v1/auth/kubernetes/login \
  -H "Content-Type: application/json" \
  -d '{"jwt": "<提取到的JWT>", "role": "<你的Vault角色名称>"}'
  • 如果此请求仍返回403:问题出在Vault角色绑定或EKS与Vault的信任关系
  • 如果请求成功:问题出在Vault Injector的配置或Pod注解

3. 检查Vault角色的绑定规则

确认你的Vault角色是否正确绑定了目标ServiceAccount和命名空间:

vault read auth/kubernetes/role/<你的Vault角色名>

必须满足:

  • bound_service_account_names精确匹配copper
  • bound_service_account_namespaces精确匹配你的部署所在命名空间(大小写敏感)

4. 清理不必要的ClusterRoleBinding

Kubernetes认证仅需要ServiceAccount具备默认的获取自身JWT令牌权限,无需额外的ClusterRoleBinding。你之前创建的ClusterRoleBinding可能干扰了默认权限,建议先删除后测试:

kubectl delete clusterrolebinding <你的ClusterRoleBinding名称>

5. 核对Pod注入注解的正确性

确认部署的Pod注解无拼写错误,重点检查:

annotations:
  vault.hashicorp.com/agent-inject: "true"
  vault.hashicorp.com/role: "<你的Vault角色名>"  # 必须与Vault中创建的角色完全一致
  vault.hashicorp.com/secret-path: "apps/env/service-copper"  # 对应密钥存储路径

6. 确认Vault策略的路径匹配(辅助检查)

虽然当前是登录阶段报错,但仍需确保策略路径与密钥存储路径一致:

  • 若使用K/V v1引擎:策略路径应为apps/env/service-copper/*
  • 若使用K/V v2引擎:策略路径需添加data/前缀,即apps/data/env/service-copper/*

内容的提问来源于stack exchange,提问作者Node One

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 07:52:41