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

求助:生成不依赖AWS IAM的EKS静态kubeconfig配置方法

生成不依赖AWS IAM的EKS静态kubeconfig完整流程

核心思路

通过Kubernetes原生的ServiceAccount+RBAC机制生成静态kubeconfig,完全绕开AWS IAM认证,步骤如下:


1. 创建专用ServiceAccount

先创建一个用于静态认证的ServiceAccount(示例命名为eks-static-user,可自定义):

apiVersion: v1
kind: ServiceAccount
metadata:
  name: eks-static-user
  namespace: default

执行创建命令:

kubectl apply -f sa.yaml

2. 绑定ClusterRole(配置权限)

根据需求给ServiceAccount分配权限,示例绑定cluster-admin(全集群权限,生产环境建议自定义最小权限的ClusterRole):

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: eks-static-user-cluster-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: eks-static-user
  namespace: default

执行绑定命令:

kubectl apply -f crb.yaml

3. 提取ServiceAccount的认证信息

EKS会自动为ServiceAccount生成包含token和CA证书的Secret,用以下命令提取关键信息:

# 获取对应Secret名称
SECRET_NAME=$(kubectl get sa eks-static-user -n default -o jsonpath='{.secrets[0].name}')

# 解码token(直接可用)
KUBE_TOKEN=$(kubectl get secret $SECRET_NAME -o jsonpath='{.data.token}' | base64 -d)

# 提取CA证书(base64编码格式,直接填入kubeconfig)
KUBE_CA_CERT=$(kubectl get secret $SECRET_NAME -o jsonpath='{.data.ca\.crt}')

# 获取EKS集群API服务器地址
EKS_API_SERVER=$(kubectl cluster-info | grep 'Kubernetes control plane' | awk '{print $NF}')

4. 构造静态kubeconfig文件

创建static-kubeconfig.yaml,替换以下变量为实际值:

apiVersion: v1
kind: Config
clusters:
- cluster:
    certificate-authority-data: ${KUBE_CA_CERT}
    server: ${EKS_API_SERVER}
  name: eks-cluster
contexts:
- context:
    cluster: eks-cluster
    user: eks-static-user
  name: eks-static-context
current-context: eks-static-context
users:
- name: eks-static-user
  user:
    token: ${KUBE_TOKEN}

也可以用环境变量直接生成:

cat << EOF > static-kubeconfig.yaml
apiVersion: v1
kind: Config
clusters:
- cluster:
    certificate-authority-data: $KUBE_CA_CERT
    server: $EKS_API_SERVER
  name: eks-cluster
contexts:
- context:
    cluster: eks-cluster
    user: eks-static-user
  name: eks-static-context
current-context: eks-static-context
users:
- name: eks-static-user
  user:
    token: $KUBE_TOKEN
EOF

5. 验证kubeconfig可用性

用生成的静态kubeconfig测试集群访问:

kubectl --kubeconfig=./static-kubeconfig.yaml get nodes

关于你用到的脚本可能遗漏的环节

你提到的脚本大概率没帮你完成RBAC权限绑定步骤,或者默认使用的ServiceAccount权限不足。另外,脚本可能没有正确提取EKS集群的CA证书和API地址,导致kubeconfig无法正常连接集群。按照上面的完整流程补全配置后,应该就能正常生成可用的静态kubeconfig。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:37:50