Kubernetes 配置
在 Kubernetes 配置页面中,可以管理用于连接 Kubernetes 集群的参数。上游绑定到 Kubernetes 服务,以及集群网关绑定 k8s,都需要先在此页面完成集群配置。

配置列表展示了所有已添加的 Kubernetes 集群,包括以下字段:
- ID / 名字:集群的唯一标识与名称
- 主机名 / 端口:集群的主机地址与端口
- 认证类型:鉴权方式,
静态 Token或AWS EKS 动态 Token。AWS EKS 动态 Token于26.6.1-1版本中首次引入。 - EKS 集群名 / AWS 区域 / AWS IAM 角色 ARN:仅在使用
AWS EKS 动态 Token时展示 - 启用 SSL 验证:是否启用 SSL 验证,选择
AWS EKS 动态 Token方式时,此开关需要保持关闭。 - 超时时间:连接、读取和发送超时时间
- 状态:当前连接状态(如未连接、错误 等)
添加 Kubernetes 集群
点击页面右上角的 添加 Kubernetes 集群 按钮,进入集群添加表单。
系统支持两种鉴权方式,根据实际情况选择。
方式一:静态 Token

填写以下字段:
| 字段 | 说明 |
|---|---|
| 名字 | 集群名称(必填) |
| 主机名 | Kubernetes API Server 的主机地址(必填) |
| 端口 | 端口号(必填) |
| 启用 SSL 验证 | 是否启用 SSL 证书验证,默认开启 |
| 认证类型 | 选择 静态 Token |
| Token | 用于连接 Kubernetes 服务的 Bearer Token(必填) |
| 验证 Token | 是否在保存前验证 Token 有效性,默认开启 |
| 连接超时 | 连接超时,默认 15 秒 |
| 读取超时 | 读取超时,默认 15 秒 |
| 发送超时 | 发送超时,默认 15 秒 |
填写完成后点击 创建 完成创建。
方式二:AWS EKS 动态 Token
适用于 Amazon EKS 集群,通过 AWS IAM 凭证动态获取访问 Token。

填写以下字段:
| 字段 | 说明 |
|---|---|
| 名字 | 集群名称(必填) |
| 主机名 | EKS API Server 地址(必填) |
| 端口 | 端口号(必填) |
| 启用 SSL 验证 | 是否启用 SSL 证书验证,默认开启 |
| 认证类型 | 选择 AWS EKS 动态 Token |
| EKS 集群名 | EKS 集群名称(必填) |
| AWS 区域 | 集群所在的 AWS 区域,如 us-east-1(必填) |
| AWS 访问密钥 ID | AWS IAM 用户的访问密钥 ID(必填) |
| AWS 秘密访问密钥 | AWS IAM 用户的秘密访问密钥(必填) |
| IAM 角色 ARN | 用于跨账号管理 EKS 的 IAM 角色 ARN(可选),格式为 arn:aws:iam::<account-id>:role/<role-name>,通过 STS AssumeRole 实现跨账号访问 |
| 验证认证信息 | 是否在保存前验证鉴权信息有效性,默认开启 |
| 连接超时 | 连接超时,默认 15 秒 |
| 读取超时 | 读取超时,默认 15 秒 |
| 发送超时 | 发送超时,默认 15 秒 |
填写完成后点击 创建 完成创建。
生成静态 Token
Kubernetes 使用 Token 进行鉴权。以下步骤介绍如何创建一个具备上述权限的 ServiceAccount 并获取其 Token。
第一步:创建 token.yaml 文件
apiVersion: v1
kind: ServiceAccount
metadata:
name: openresty-edge-serviceaccount
namespace: default
---
apiVersion: rbac.authorization.Kubernetes.io/v1
kind: ClusterRole
metadata:
name: openresty-edge-clusterrole
rules:
- apiGroups:
- ""
resources:
- namespaces
- services
- endpoints
- pods
verbs:
- get
- list
- watch
---
apiVersion: rbac.authorization.Kubernetes.io/v1
kind: ClusterRoleBinding
metadata:
name: openresty-edge-clusterrole-binding
roleRef:
apiGroup: rbac.authorization.Kubernetes.io
kind: ClusterRole
name: openresty-edge-clusterrole
subjects:
- kind: ServiceAccount
name: openresty-edge-serviceaccount
namespace: default
第二步:应用配置并获取 Token
$ kubectl apply -f token.yml
$ kubectl describe secret $(kubectl get secret | grep openresty-edge-serviceaccount | awk '{print $1}') | grep "token: " | awk '{print $2}'
eyJhbGciOiJSUzI1NiIsImtpZCI6InJOZkJvNWItMDhYOXBfUGw2czBleWxNWXZBWi1KOXFqQ05GdjVCWUdpc3cifQ...
将输出的 Token 填入添加集群表单的 Token 字段即可。
生成 AWS EKS 动态 Token
对于 Amazon EKS 集群,OpenResty Edge 通过 AWS IAM 凭证动态获取访问 Token。以下步骤介绍如何准备所需的 IAM 用户、IAM 角色以及集群访问权限。
以下命令中的
012345678901(AWS 账号 ID)、thoughtful-folk-mongoose(EKS 集群名称)、us-east-1(区域)、openresty-edge-user(用户名)等均为示例值,请替换为你的实际值。
第一步:创建 IAM 用户并生成访问密钥
创建一个专用的 IAM 用户,用于在 Edge 中作为基础凭证:
aws iam create-user --user-name openresty-edge-user
aws iam create-access-key --user-name openresty-edge-user
create-access-key 命令的输出中会包含 AccessKeyId 和 SecretAccessKey,请妥善保存,后续填入表单的 AWS 访问密钥 ID 和 AWS 秘密访问密钥 字段。
第二步:创建允许该用户 AssumeRole 的 IAM 角色
aws iam create-role \
--role-name EKSAccessRole \
--assume-role-policy-document '{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::012345678901:user/openresty-edge-user"
},
"Action": "sts:AssumeRole"
}]
}'
创建成功后的角色 ARN(形如 arn:aws:iam::012345678901:role/EKSAccessRole)即为表单中的 IAM 角色 ARN。
第三步:为 EKS 集群配置访问条目(推荐,EKS 1.23+)
通过 EKS 访问条目(Access Entries)将上一步创建的 IAM 角色绑定到目标集群,并授予 Kubernetes 层的访问权限:
# 为集群添加访问条目
aws eks create-access-entry \
--cluster-name thoughtful-folk-mongoose \
--principal-arn arn:aws:iam::012345678901:role/EKSAccessRole \
--region us-east-1
# 关联访问策略(此处示例为集群管理员权限,可按需选择更小粒度的策略)
aws eks associate-access-policy \
--cluster-name thoughtful-folk-mongoose \
--principal-arn arn:aws:iam::012345678901:role/EKSAccessRole \
--policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
--access-scope type=cluster \
--region us-east-1
第四步:验证配置(可选)
TOKEN=$(aws eks get-token --cluster-name thoughtful-folk-mongoose --region us-east-1 | jq -r '.status.token'
ENDPOINT=https://281CEF339BFD565BF8605A8A67EA6084.gr7.us-east-1.eks.amazonaws.com
curl -k -H "Authorization: Bearer $TOKEN" $ENDPOINT/api