本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。
建立 IAM 角色和 AWS 密碼
貢獻者
您可以將 Kubernetes Pod 設定為以 AWS IAM 角色進行驗證、而非提供明確的 AWS 認證、以存取 AWS 資源。
|
若要使用 AWS IAM 角色進行驗證、您必須使用 EKS 部署 Kubernetes 叢集。 |
建立 AWS Secrets Manager 密碼
由於 Trident 將針對 FSX Vserver 發行 API ,以便為您管理儲存設備,因此需要認證才能這麼做。傳遞這些認證的安全方法是透過 AWS Secrets Manager 密碼。因此,如果您還沒有,就必須建立 AWS Secrets Manager 密碼,其中包含 vsadmin 帳戶的認證。
此範例建立 AWS Secrets Manager 密碼來儲存 Trident CSI 認證:
aws secretsmanager create-secret --name trident-secret --description "Trident CSI credentials"\
--secret-string "{\"username\":\"vsadmin\",\"password\":\"<svmpassword>\"}"
建立 IAM 原則
Trident 也需要 AWS 權限才能正確執行。因此,您需要建立一個原則,讓 Trident 擁有所需的權限。
下列範例使用 AWS CLI 建立 IAM 原則:
aws iam create-policy --policy-name AmazonFSxNCSIDriverPolicy --policy-document file://policy.json
--description "This policy grants access to Trident CSI to FSxN and Secrets manager"
-
政策 JSON 範例 * :
{
"Statement": [
{
"Action": [
"fsx:DescribeFileSystems",
"fsx:DescribeVolumes",
"fsx:CreateVolume",
"fsx:RestoreVolumeFromSnapshot",
"fsx:DescribeStorageVirtualMachines",
"fsx:UntagResource",
"fsx:UpdateVolume",
"fsx:TagResource",
"fsx:DeleteVolume"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Action": "secretsmanager:GetSecretValue",
"Effect": "Allow",
"Resource": "arn:aws:secretsmanager:<aws-region>:<aws-account-id>:secret:<aws-secret-manager-name>*"
}
],
"Version": "2012-10-17"
}
為服務帳戶建立 IAM 角色
建立原則之後,請在建立將指派給 Trident 將在下列情況下執行的服務帳戶的角色時使用:
AWS CLI
aws iam create-role --role-name AmazonEKS_FSxN_CSI_DriverRole \ --assume-role-policy-document file://trust-relationship.json
-
信任關係 .json 檔案: *
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::<account_id>:oidc-provider/<oidc_provider>"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"<oidc_provider>:aud": "sts.amazonaws.com",
"<oidc_provider>:sub": "system:serviceaccount:trident:trident-controller"
}
}
}
]
}
更新檔案中的下列值 trust-relationship.json
:
-
* <account_id> * - 您的 AWS 帳戶 ID
-
* <oidc_provider> * - EKS 叢集的 OIDC 。您可以執行下列項目來取得 oidc_provider :
aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer"\ --output text | sed -e "s/^https:\/\///"
-
使用 IAM 原則附加 IAM 角色 * :
建立角色後,請使用以下命令將原則(在上述步驟中建立)附加至角色:
aws iam attach-role-policy --role-name my-role --policy-arn <IAM policy ARN>
-
驗證 OICD 提供者是否已關聯 * :
確認您的 OIDC 供應商與您的叢集相關聯。您可以使用下列命令來驗證:
aws iam list-open-id-connect-providers | grep $oidc_id | cut -d "/" -f4
如果輸出為空,請使用下列命令將 IAM OIDC 與叢集建立關聯:
eksctl utils associate-iam-oidc-provider --cluster $cluster_name --approve
eksctl
以下範例為 EKS 中的服務帳戶建立 IAM 角色:
eksctl create iamserviceaccount --name trident-controller --namespace trident \
--cluster <my-cluster> --role-name AmazonEKS_FSxN_CSI_DriverRole --role-only \
--attach-policy-arn <IAM-Policy ARN> --approve