为AWS EKS安装EBS CSI驱动

2023年 9月 23日 32.9k 0

EBS CSI驱动安装

Amazon EBS CSI驱动程序允许EKS集群管理EBS卷的生命周期,当我们运行在EKS中的pod需要挂载EBS盘进行持久化存储时,必须先安装好EBS CSI驱动,具体可以参考Amazon EBS CSI driver。

权限设置

为EBS CSI Driver创建IAM role
Amazon EBS CSI 驱动需要 IAM 权限才能代表您调用 AWS API,所以我们需要先创建EBS CSI Driver的IAM Role

查看当前集群的OIDC信息

aws eks describe-cluster --name xxx-cluster --query "cluster.identity.oidc.issuer" --output text

将上一步读取到的OIDC信息补充下下面的json模板中,并保存为aws-ebs-csi-driver-trust-policy.json

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::84xxxxxx69:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/E1B76xxxxxxxxxx5BF660EA09C"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringEquals": {
                    "oidc.eks.us-east-1.amazonaws.com/id/E1B76xxxxxxxxxx5BF660EA09C:aud": "sts.amazonaws.com",
                    "oidc.eks.us-east-1.amazonaws.com/id/E1B76xxxxxxxxxx5BF660EA09C:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa"
                }
            }
        }
    ]
}

其中需要系替换的是aws account id、aws region和OIDC的ID,如图中红色部分

进行EBS CSI Driver的IAM Role的创建,role名称为AmazonEKS_EBS_CSI_DriverRole,执行下面的命令:

# 设置role名称为AmazonEKS_EBS_CSI_DriverRole
aws iam create-role --role-name AmazonEKS_EBS_CSI_DriverRole  --assume-role-policy-document file://"aws-ebs-csi-driver-trust-policy.json"
# 为AmazonEKS_EBS_CSI_DriverRole附加policy
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy --role-name AmazonEKS_EBS_CSI_DriverRole

如果你不需要使用自定义的KMS对EBS盘进行静态加密,那么role到这里就完成了。否则你需要额外的创建policy并继续附加到AmazonEKS_EBS_CSI_DriverRole,详情请看csi-iam-role。

CSI addon安装

我们可以直接使用命令行进行addon安装,其中role arn需要填写我们刚才创建的AmazonEKS_EBS_CSI_DriverRole

aws eks create-addon --cluster-name poc-cluster --addon-name aws-ebs-csi-driver --service-account-role-arn arn:aws:iam::843xxxx1269:role/AmazonEKS_EBS_CSI_DriverRole

执行完成后,我们可以在AWS控制台上看到EBS CSI驱动正在被安装,只需要略微等待即可完成

我们会看到CSI驱动安装完成,并使用了AmazonEKS_EBS_CSI_DriverRole

此外我们使用eksctl也可以进行快速的查询,语句为eksctl get addon --name aws-ebs-csi-driver --cluster xxx-cluster

测试

后面你可以自行参考Deploy a sample application and verify that the CSI driver is working来对我们前面安装好的EBS CSI驱动进行功能测试

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论