跳至內容

如何解決 Amazon EKS 叢集中的存取問題?

2 分的閱讀內容
0

當我嘗試授予對 Amazon Elastic Kubernetes Service (Amazon EKS) 叢集的存取權時發生問題。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

使用 Amazon EKS 存取項目,向 AWS Identity and Access Management (IAM) 使用者和角色授予對 Kubernetes API 的存取權

設定 IAM 主體權限

IAM 主體必須對您的叢集具有以下權限:

  • CreateAccessEntry
  • ListAccessEntries
  • DescribeAccessEntry
  • DeleteAccessEntry
  • UpdateAccessEntry
  • ListAccessPolicies
  • AssociateAccessPolicy
  • DisassociateAccessPolicy

如需 Amazon EKS 權限的更多資訊,請參閱 Amazon Elastic Kubernetes Service 定義的動作

設定存取政策權限

存取政策會設定允許使用者存取 Kubernetes API 的存取層級。請使用以下政策建立存取項目:

當您使用上述政策建立存取項目時,您將授予對 Kubernetes 叢集層級權限的命名空間存取權。

**注意:**您無法修改存取政策的內容,也無法建立自己的存取政策。

授予 IAM 使用者對您 Amazon EKS 叢集的存取權

變更驗證模式

**重要:**啟用存取項目方法後,您就無法再次將其關閉。

若要使用存取項目,請將 Amazon EKS 叢集的驗證模式更新為 APIAPI_AND_CONFIG_MAP。請執行以下 update-cluster-config AWS CLI 命令:

aws eks update-cluster-config \
   --name my-cluster \
   --access-config authenticationMode=API_AND_CONFIG_MAP

**注意:**將 my-cluster 替換為您的叢集名稱。若要永久停用 ConfigMap 方法,請將 API_AND_CONFIG_MAP 替換為 API

為 IAM 實體建立存取項目並附加存取政策

為 Amazon EKS 叢集提供叢集管理員存取權。首先,執行以下 create-access-entry 命令,為您的 IAM 使用者或角色建立存取項目:

aws eks create-access-entry --cluster-name my-cluster \
  --principal-arn arn:aws:iam::111122223333:user/example-user

**注意:**將 my-cluster 替換為您的叢集名稱,將 arn:aws:iam::111122223333:user/example-user 替換為您的 IAM 角色或使用者的 ARN。

然後,執行以下 associate-access-policy 命令,將 AmazonEKSClusterAdminPolicy 關聯到 IAM 使用者或角色:

aws eks associate-access-policy --cluster-name my-cluster\
  --principal-arn arn:aws:iam::111122223333:user/example-user \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
  --access-scope type=cluster

**注意:**將 my-cluster 替換為您的叢集名稱,將 arn:aws:iam::111122223333:user/example-user 替換為您的 IAM 角色或使用者的 ARN。

若要為 IAM 使用者或角色提供對特定命名空間的管理員存取權,請執行下列 associate-access-policy 命令:

aws eks associate-access-policy --cluster-name my-cluster\
  --principal-arn arn:aws:iam::111122223333:role/example-role \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSAdminPolicy \
  --access-scope type=namespace,namespaces=test*

**注意:**將 my-cluster 替換為您的叢集名稱,將 arn:aws:iam::111122223333:role/example-role 替換為您的 IAM 角色或使用者的 ARN。另外,將 test 替換為您的命名空間名稱。

若要將存取項目與 Kubernetes 角色型存取控制 (RBAC) 結合使用,請執行下列 create-access-entry 命令:

aws eks create-access-entry --cluster-name my-cluster \
  --principal-arn arn:aws:iam::111122223333:role/example-role-2 \
  --kubernetes-groups viewers

**注意:**將 my-cluster 替換為您的叢集名稱,將 arn:aws:iam::111122223333:user/example-role-2 替換為您的 IAM 角色或使用者的 ARN。將 viewers 替換為叢集上 Kubernetes RoleBindingClusterRoleBinding 物件中指定群組的名稱。

確認您的 IAM 實體憑證

若要檢查 AWS CLI 上使用的 IAM 使用者或角色憑證,請執行下列 get-caller-identity 命令:

aws sts get-caller-identity

命令輸出必須傳回您為其建立存取項目的 IAM 使用者或角色。如果您收到其他 IAM 角色或使用者,請確認您已正確設定該角色或使用者的憑證。

為您的 IAM 實體建立 Kubeconfig

若要為您的 IAM 角色或使用者建立 Kubeconfig,請執行下列 update-kubeconfig 命令:

aws eks update-kubeconfig --name my-cluster --region aws-region

**注意:**將 my-cluster 替換為您的叢集名稱,將 aws-region 替換為您的 AWS 區域。

檢查您的 Kubernetes 存取權

確認您的 IAM 實體已經過驗證,且您可以存取 Amazon EKS 叢集資源。

若要確認是否可以在任何命名空間中建立 Pod,請執行以下命令:

kubectl auth can-i create pods --all-namespaces

若要確認是否可以列出特定命名空間中的部署,請執行以下命令:

kubectl auth can-i list deployments.apps -n test

**注意:**將 test 替換為您命名空間的名稱。

AWS 官方已更新 1 年前