協助改進此頁面
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
部署適用於 Amazon S3 的掛載點驅動程式
使用適用於 Amazon S3 的掛載點容器儲存介面 (CSI) 驅動程式
此程序將向您展示如何部署適用於 Amazon S3 的掛載點 CSI Amazon EKS 驅動程式。請先檢閱考量事項再繼續操作。
先決條件
-
叢集的現有 AWS Identity and Access Management (IAM) OpenID Connect (OIDC) 提供商。若要判定您是否已經擁有一個,或是要建立一個,請參閱 為您的叢集建立 IAM OIDC 身分提供者。
-
已在裝置或 AWS CloudShell 上安裝和設定 AWS CLI 2.12.3 版或更新版本。
-
已在裝置或 AWS CloudShell 上安裝
kubectl命令列工具。版本可以與您的叢集 Kubernetes 版本相同,或是為最多比該版本更舊一版或更新一版的次要版本。例如,如果您的叢集版本為1.29,則可以搭配使用kubectl1.28、1.29或1.30版。若要安裝或升級kubectl,請參閱 設定 kubectl 和 eksctl。
步驟 1:建立 IAM 政策
適用於 Amazon S3 的掛載點 CSI 驅動程式需要 Amazon S3 許可才能與檔案系統互動。此節將介紹如何建立可授予必要許可的 IAM 政策。
下列範例政策遵循掛載點的 IAM 許可建議。或者,您可以使用 AWS 受管政策 AmazonS3FullAccess
若要了解掛載點建議許可的相關詳細資訊,請參閱 GitHub 上的掛載點 IAM 許可
-
前往 https://console.aws.amazon.com/iam/
開啟 IAM 主控台。 -
在左側導覽窗格中選擇 Policies (政策)。
-
在政策頁面上,選擇建立政策。
-
對於政策編輯器,選擇 JSON。
-
在政策編輯器下,複製並貼上以下內容:
重要
將
amzn-s3-demo-bucket1取代為您自己 Amazon S3 儲存貯體的名稱。{ "Version": "2012-10-17", "Statement": [ { "Sid": "MountpointFullBucketAccess", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1" ] }, { "Sid": "MountpointFullObjectAccess", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:AbortMultipartUpload", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*" ] } ] }Amazon S3 Express One Zone 儲存類別推出目錄儲存貯體,可使用與一般用途儲存貯體不同的驗證機制。您應使用
s3express:CreateSession動作,而非s3:*動作。若要了解目錄儲存貯體的相關詳細資訊,請參閱Amazon S3 使用者指南中的目錄儲存貯體。下面介紹了您將用於目錄儲存貯體的最低權限政策範例。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3express:CreateSession", "Resource": "arn:aws:s3express:us-west-2:111122223333:bucket/amzn-s3-demo-bucket1--usw2-az1--x-s3" } ] } -
選擇下一步。
-
在檢閱與建立頁面上,為您的政策命名。本範例逐步教學使用的名稱是
AmazonS3CSIDriverPolicy。 -
選擇建立政策。
步驟 2:建立 IAM 角色
適用於 Amazon S3 的掛載點 CSI 驅動程式需要 Amazon S3 許可才能與檔案系統互動。此節將介紹如何建立 IAM 角色以委派這些許可。如需建立此角色,您可使用以下其中一個工具:
注意
IAM 政策 AmazonS3CSIDriverPolicy 於上一節建立。
eksctl
使用 eksctl 建立適用於 Amazon S3 的掛載點 CSI 驅動程式 IAM 角色
執行以下命令來建立 IAM 角色和 Kubernetes 服務帳戶。這些命令也會將 AmazonS3CSIDriverPolicy IAM 政策連接至角色、使用 IAM 角色 Amazon Resource Name (ARN) 標註 Kubernetes 服務帳戶 (s3-csi-controller-sa),並將 Kubernetes 服務帳戶名稱新增至 IAM 角色的信任政策。
CLUSTER_NAME=my-cluster REGION=region-code ROLE_NAME=AmazonEKS_S3_CSI_DriverRole POLICY_ARN=AmazonEKS_S3_CSI_DriverRole_ARN eksctl create iamserviceaccount \ --name s3-csi-driver-sa \ --namespace kube-system \ --cluster $CLUSTER_NAME \ --attach-policy-arn $POLICY_ARN \ --approve \ --role-name $ROLE_NAME \ --region $REGION \ --role-only
AWS 管理主控台
-
前往 https://console.aws.amazon.com/iam/
開啟 IAM 主控台。 -
在左側導覽窗格中,選擇 Roles (角色)。
-
在 Roles (角色) 頁面上,選擇 Create role (建立角色)。
-
在 Select trusted entity (選取信任的實體) 頁面上,執行以下作業:
-
在 Trusted entity type (信任的實體類型) 區段中,選擇 Web identity (Web 身分)。
-
對於 Identity provider (身分提供者),為您的叢集選擇 OpenID Connect provider URL (OpenID Connect 供應商 URL)(如 Amazon EKS Overview (概觀) 下所示)。
若 URL 未顯示,則檢閱先決條件。
-
針對 Audience (對象),選擇
sts.amazonaws.com。 -
選擇下一步。
-
-
在 Add permissions (新增許可) 頁面上,執行以下作業:
-
請在篩選政策方塊中,輸入 AmazonS3CSIDriverPolicy。
注意
此政策於上一節建立。
-
勾選在搜尋中傳回的
AmazonS3CSIDriverPolicy結果左側的核取方塊。 -
選擇下一步。
-
-
在 Name, review, and create (命名、檢閱和建立) 頁面上,執行以下作業:
-
針對角色名稱,為您的角色輸入唯一名稱 (例如 AmazonEKS_S3_CSI_DriverRole)。
-
藉由連接標籤做為鍵值對,在新增標籤 (選用) 下將中繼資料新增至角色。如需有關在 IAM 中使用標籤的詳細資訊,請參閱《IAM 使用者指南》中的標記 IAM 資源。
-
選擇建立角色。
-
-
建立角色之後,在主控台中選擇角色,以開啟角色進行編輯。
-
選擇 Trust Relationships (信任關係) 標籤,然後選擇 Edit Trust Relationship (編輯信任政策)。
-
查找與下列相似的行:
"oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com"在上一行的末尾新增一個逗號,然後在上一行之後新增下一行。使用叢集所在的 AWS 區域取代
region-code。使用叢集的 OIDC 提供商 ID 取代EXAMPLED539D4633E53DE1B71EXAMPLE。"oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:s3-csi-driver-sa" -
確認
Condition運算子已設定為"StringEquals"。 -
選擇 Update policy (更新政策) 以完成操作。
AWS CLI
-
檢視叢集的 OIDC 提供者 URL。使用您叢集的名稱取代
my-cluster。如果來自命令的輸出是None,則請檢閱先決條件。aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output text範例輸出如下。
https://oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE -
建立 IAM 角色,將 Kubernetes 服務帳戶授予
AssumeRoleWithWebIdentity動作。-
將下列內容複製到名為
aws-s3-csi-driver-trust-policy.json的檔案。使用您的帳戶 ID 取代111122223333。使用前一個步驟傳回的值取代EXAMPLED539D4633E53DE1B71EXAMPLE和region-code。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:s3-csi-driver-sa", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com" } } } ] } -
建立角色。您可以將
AmazonEKS_S3_CSI_DriverRole變更為不同的名稱,但如果這樣做,請務必在稍後的步驟中進行變更。aws iam create-role \ --role-name AmazonEKS_S3_CSI_DriverRole \ --assume-role-policy-document file://"aws-s3-csi-driver-trust-policy.json"
-
-
使用以下命令將先前建立的 IAM 政策連接至角色。
aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonS3CSIDriverPolicy \ --role-name AmazonEKS_S3_CSI_DriverRole注意
IAM 政策
AmazonS3CSIDriverPolicy於上一節建立。 -
如果您要將驅動程式安裝為 Amazon EKS 附加元件,請略過此步驟。若為驅動程式的自我管理安裝,請建立使用您所建立的 IAM 角色之 ARN 予以註釋的 Kubernetes 服務帳戶。
-
將下列內容儲存到名為
mountpoint-s3-service-account.yaml的檔案中。使用您的帳戶 ID 取代111122223333。--- apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/name: aws-mountpoint-s3-csi-driver name: mountpoint-s3-csi-controller-sa namespace: kube-system annotations: eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole -
在您的叢集上建立 Kubernetes 服務帳戶。Kubernetes 服務帳戶 (
mountpoint-s3-csi-controller-sa) 使用您建立的名稱為AmazonEKS_S3_CSI_DriverRole的 IAM 角色進行註解。kubectl apply -f mountpoint-s3-service-account.yaml注意
當您在此程序中部署外掛程式時,其會建立並設定為使用名為
s3-csi-driver-sa的服務帳戶。
-
步驟 3:安裝適用於 Amazon S3 的掛載點 CSI 驅動程式
您可透過 Amazon EKS 附加元件安裝適用於 Amazon S3 的掛載點 CSI 驅動程式。您可使用下面的工具,新增附加元件至您的叢集:
或者以自我管理安裝的方式,安裝適用於 Amazon S3 的掛載點 CSI 驅動程式。若要了解執行自我管理安裝的說明,請參閱 GitHub 上的安裝
從 v1.8.0 開始,您可設定能夠容忍 CSI 驅動程式 Pod 的污點。如需這樣做,則指定自訂的污點集來容忍 node.tolerations,或者透過 node.tolerateAllTaints 來容忍所有污點。如需詳細資訊,請參閱 Kubernetes 文件中的污點和容差
eksctl
使用 eksctl 來新增 Amazon S3 CSI 附加元件
執行下列命令。使用您的叢集名稱取代 my-cluster、使用您的帳戶 ID 取代 111122223333,再以先前建立的 IAM 角色名稱取代 AmazonEKS_S3_CSI_DriverRole。
eksctl create addon --name aws-mountpoint-s3-csi-driver --cluster my-cluster \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole --force
如果您移除 --force 選項,且任何 Amazon EKS 附加元件設定與現有設定衝突,然後更新 Amazon EKS 附加元件失敗,則您會收到錯誤訊息以協助您解決衝突。指定此選項之前,請確定 Amazon EKS 附加元件未管理您需要管理的設定,因為這些設定會被此選項覆寫。如需有關此設定之其他選項的詳細資訊,請參閱 eksctl 文件中的 Addons
您可透過組態檔案來自訂 eksctl。如需詳細資訊,請參閱 eksctl 文件中的使用組態值
# config.yaml ... addons: - name: aws-mountpoint-s3-csi-driver serviceAccountRoleARN: arn:aws:iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole configurationValues: |- node: tolerateAllTaints: true
AWS 管理主控台
-
開啟 Amazon EKS 主控台
。 -
在左側導覽窗格中選擇叢集。
-
選擇要為其設定適用於 Amazon S3 的掛載點 CSI 附加元件的叢集名稱。
-
選擇附加元件索引標籤。
-
選擇取得更多附加元件。
-
在選取附加元件頁面上,執行下列動作:
-
在 Amazon EKS-外掛程式區段中,選取適用於 Amazon S3 的掛載點 CSI 驅動程式核取方塊。
-
選擇下一步。
-
-
在設定選取的附加元件設定頁面上,執行以下操作:
-
選取您要使用的版本。
-
針對選取 IAM 角色,選取已連接適用於 Amazon S3 的掛載點 CSI 驅動程式 IAM 政策的 IAM 角色名稱。
-
(選用) 展開選用的組態設定之後,更新衝突解決方法。如果您選取覆寫,就能使用 Amazon EKS 附加元件的設定來覆寫現有附加元件的一種或多種設定。若未啟用此選項,而且有設定與現有設定發生衝突,則操作會失敗。您可以使用產生的錯誤訊息對此衝突進行疑難排解。在選取此選項之前,請確認 Amazon EKS 附加元件未管理您需要自我管理的設定。
-
(選用) 展開選用的組態設定之後,在組態值欄位中設定容差。
-
選擇下一步。
-
-
在檢閱並新增頁面上,選擇建立。附加元件安裝完成後,您會看到已安裝的附加元件。
AWS CLI
使用 AWS CLI 新增適用於 Amazon S3 的掛載點 CSI 附加元件
執行下列命令。使用您的叢集名稱取代 my-cluster、使用您的帳戶 ID 取代 111122223333,再以先前建立的角色名稱取代 AmazonEKS_S3_CSI_DriverRole。
aws eks create-addon --cluster-name my-cluster --addon-name aws-mountpoint-s3-csi-driver \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole
您可使用 --configuration-values 標誌來自訂命令。以下替代範例說明了如何容忍所有污點。
aws eks create-addon --cluster-name my-cluster --addon-name aws-mountpoint-s3-csi-driver \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole \ --configuration-values '{"node":{"tolerateAllTaints":true}}'
步驟 4:設定適用於 Amazon S3 的掛載點
在大多數情況下,您只能使用儲存貯體名稱來設定適用於 Amazon S3 的掛載點。若要了解設定適用於 Amazon S3 的掛載點的相關說明,請參閱 GitHub 上的設定適用於 Amazon S3 的掛載點
步驟 5:部署範例應用程式
您可以將靜態佈建部署到現有 Amazon S3 儲存貯體上的驅動程式。如需詳細資訊,請參閱 GitHub 上的靜態佈建