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