Kubernetes/version upgrade

EBS CSI Driver 설치 방법

babbeolicoding 2023. 5. 28. 16:49

1. IAM 역할 생성

1. 해당 EKS의 정보확인

aws eks describe-cluster \
  --name {cluster_name} \
  --query "cluster.identity.oidc.issuer" \
  --output text

output 값
= > https://oidc.eks.{region}.amazonaws.com/id/{key}

2. json 파일 생성
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::{ID}:oidc-provider/oidc.eks.{region}.amazonaws.com/id/{key}"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "oidc.eks.{region}.amazonaws.com/id/{key}:aud": "sts.amazonaws.com",
          "oidc.eks.{region}.amazonaws.com/id/{key}:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa"
        }
      }
    }
  ]
}

3. IAM 역할 생성
aws iam create-role \
  --role-name {EBS_CSI_DRIVER_ROLE_NAME} \
  --assume-role-policy-document file://"aws-ebs-csi-driver-trust-policy.json"

 

2. IAM 정책 연결

role에 policy 연결

aws iam attach-role-policy \
  --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \
  --role-name {EBS_CSI_DRIVER_ROLE_NAME}

 

3-1. EBS CSI Driver 설치(Addon 사용)

aws eks create-addon --cluster-name {cluster_name} --addon-name aws-ebs-csi-driver \
  --service-account-role-arn arn:aws:iam::{계정ID}:role/{EBS_CSI_Driver_ROLE_NAME}

3-2. EBS CSI Driver 설치(Helm 사용)

$ helm repo add aws-ebs-csi-driver https://kubernetes-sigs.github.io/aws-ebs-csi-driver
$ helm repo update
$ helm upgrade --install aws-ebs-csi-driver \
    --namespace kube-system \
    aws-ebs-csi-driver/aws-ebs-csi-driver

 

4. EBS CSI Driver 버전 확인

aws eks describe-addon --cluster-name {cluster_name} --addon-name aws-ebs-csi-driver --query "addon.addonVersion" --output text

 

추가사항

- EBS CSI Driver가 정상적으로 작동하는지 확인할 수 있는 샘플 application이 있다
- 아래 스크립트를 실행하면 pv, pvc, pod가 생성되는데 3가지가 정상적으로 실행이 완료되면 정상적인 경우고
  pv가 생성되지 않고 pod가 pending 상태로 남아있다면 EBS CSI Driver가 정상적이지 않은 상태다.

git clone https://github.com/kubernetes-sigs/aws-ebs-csi-driver.git
cd aws-ebs-csi-driver/examples/kubernetes/dynamic-provisioning/
kubectl apply -f manifests/
kubectl exec -it app -- cat /data/out.txt