如何给K8S配置一个具有永久有效的kubeconfig

背景与痛点分析

在AWS EKS环境中,默认的kubeconfig文件是动态生成的,依赖于IAM身份验证。这种机制虽然安全,但在某些场景下(如CI/CD流水线、第三方工具集成等)需要创建静态的、具有管理员权限的Kubernetes凭证。本文将详细介绍如何在EKS集群中创建永久有效的ServiceAccount Token,并生成稳定的kubeconfig文件。

方案概述

本方案通过以下步骤实现目标:

  1. 创建专用命名空间

  2. 创建ServiceAccount

  3. 绑定集群管理员权限

  4. 生成永久Token

  5. 构建kubeconfig文件

流程图

详细实施步骤

方法一:命令行快速创建

1. 创建专用命名空间
kubectl create ns vela-system
2. 创建ServiceAccount
kubectl create sa kubevela-vela-core -n vela-system
3. 绑定集群管理员权限
kubectl create clusterrolebinding default-sa-vela \
  --clusterrole=cluster-admin \
  --serviceaccount=vela-system:kubevela-vela-core
4. 生成临时Token(用于测试)

如果没有特别配置,kubectl create token 生成的 Token 有效期默认为 24 小时。这意味着 Token 在创建后的 24 小时内有效,之后将失效

kubectl create token kubevela-vela-core -n vela-system

5. 创建永久Token Secret

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
  name: kubevela-vela-core-token
  namespace: vela-system
  annotations:
    kubernetes.io/service-account.name: kubevela-vela-core
EOF
6. 获取Token值
kubectl describe secret kubevela-vela-core-token -n vela-system

7、配置kubeconfig

apiVersion: v1
kind: Config
clusters:
- cluster:
    certificate-authority-data: BASE64ENCODED_JWT_TOKEN_NO_PREFIX
    server: https://YOUR_KUBERNETES_API_SERVER
  name: my-cluster
contexts:
- context:
    cluster: my-cluster
    user: my-user
  name: my-context
current-context: my-context
users:
- name: my-user
  user:
    token: YOUR_SERVICE_ACCOUNT_TOKEN(把上面创建token的输出复制到此处)

方法二:YAML声明式创建(推荐)

# 创建命名空间
apiVersion: v1
kind: Namespace
metadata:
  name: vela-system
  labels:
    app.kubernetes.io/name: vela-system
    app.kubernetes.io/instance: vela-core

---
# 创建ServiceAccount
apiVersion: v1
kind: ServiceAccount
metadata:
  name: kubevela-vela-core
  namespace: vela-system
  labels:
    app.kubernetes.io/name: kubevela-vela-core
    app.kubernetes.io/instance: vela-core

---
# 绑定集群管理员角色
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kubevela-admin-binding
  labels:
    app.kubernetes.io/name: kubevela-admin-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: kubevela-vela-core
  namespace: vela-system

---
# 创建永久Token Secret
apiVersion: v1
kind: Secret
metadata:
  name: kubevela-vela-core-token
  namespace: vela-system
  annotations:
    kubernetes.io/service-account.name: kubevela-vela-core
  labels:
    app.kubernetes.io/name: kubevela-token
type: kubernetes.io/service-account-token

# 执行方法一的第七步 ---> 7、配置kubeconfig

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值