为AWS EKS安装EFS CSI驱动

EFS CSI驱动安装

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

权限设置

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

查看当前集群的OIDC信息

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

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

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::11xxxx3333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMxxxxx4633E53DE1B71EXAMPLE"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringLike": {
          "oidc.eks.region-code.amazonaws.com/id/EXAMxxxxx4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:efs-csi-*",
          "oidc.eks.region-code.amazonaws.com/id/EXAMxxxxx4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com"
        }
      }
    }
  ]
}

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

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

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

CSI addon安装

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

aws eks create-addon --cluster-name poc-cluster --addon-name aws-efs-csi-driver --service-account-role-arn arn:aws:iam::843245141269:role/AmazonEKS_EFS_CSI_DriverRole

执行完成后,我们可以在AWS控制台上看到EFS CSI驱动正在被安装,只需要略微等待即可完成
为AWS EKS安装EFS CSI驱动-每日运维
我们会看到CSI驱动安装完成,并使用了AmazonEKS_EFS_CSI_DriverRole
为AWS EKS安装EFS CSI驱动-每日运维
此外我们使用eksctl也可以进行快速的查询,语句为eksctl get addon --name aws-efs-csi-driver --cluster xxx-cluster

测试

后面你可以自行参考Create an Amazon EFS file system for Amazon EKS来对我们前面安装好的EFS CSI驱动进行功能测试