Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- EC2
- aws SAA-c03
- aws saa
- SAA-C03
- Firewall
- Troubleshooting
- DNS
- 3 TIER
- linux
- tftp
- EC2 인스턴스
- NLB
- vyos
- NAT
- ALB
- 네트워크
- aws cloud shcool 8
- Kubernetes
- vmware
- eks
- aws cloud
- AWS 자격증
- AWS
- GNS3
- Ebs
- docker
- aws cloud school
- IAM
- FTP
- aws cloud school 8
Archives
- Today
- Total
나의 공부기록
[Kubernetes] 15. EKS - Dynamic Provisioning, Secrets Manager 본문
➕ 사전 준비 : Private 클러스터 생성
💡 EBS 🆚 EFS 차이
[ EBS(Block Storage) - 하드웨어(디스크) ]
➡️ 단일 인스턴스에 attach 해야 함
➡️ 파일 시스템이 구성되어 있지❌(= 사용자가 구성해야 함)
➡️ 특정 노드(attach 된)에 존재하는 Pod만 접근 가능
[ EFS(File Storage) - NFS ]
➡️ 다수 인스턴스에서 접근 가능
➡️ 여러 노드에 존재하는 다수의 Pod들이 접근 가능
👉 EKS환경에서 동적 프로비저닝을 할 때는 EFS를 사용해야 함
EKS환경에서 Dynamic Provisioning(동적 프로비저닝)
더보기




CSI(Container Storage Interface)
- 다이나믹 프로비저닝을 위한 애드온(Addon)
➡️ALB 생성을 위해 LB Controller를 설치했던 것과 유사
1. 환경 변수 등록
export CLUSTER_NAME=pri-cluster
export ACCOUNT_ID=<내 계정 ID>
export VPC_ID=<내 VPC ID>
export REGION=ap-northeast-2
export ROLE_NAME=AmazonEKS_EFS_CSI_DriverRole
2. OIDC 활성화
eksctl utils associate-iam-oidc-provider --cluster $CLUSTER_NAME --approve
- 정책은 이미 AWS에 구성된 관리형 정책 사용

3. IRSA & AWS SA 생성
3-1. IAM Role 생성
- IRSA = ROLE_NAME = AmazonEKS_EFS_CSI_DriverRole 생성
- IAM SA = efs-csi-controller-sa 생성
- 정책은 이미 존재하는 관리형 정책 = AmazonEFSCSIDriverPolicy
eksctl create iamserviceaccount \
--name efs-csi-controller-sa \
--namespace kube-system \
--cluster $CLUSTER_NAME \
--role-name $ROLE_NAME \
--role-only \
--attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \
--approve
3-2. IAM Role 생성 확인

4. Addon(애드온) 설치
eksctl create addon --cluster $CLUSTER_NAME --name aws-efs-csi-driver --version latest \
--service-account-role-arn arn:aws:iam::$ACCOUNT_ID:role/$ROLE_NAME --force
# 결과
2025-05-07 02:45:12 [ℹ] Kubernetes version "1.32" in use by cluster "pri-cluster"
2025-05-07 02:45:12 [ℹ] IRSA is set for "aws-efs-csi-driver" addon; will use this to configure IAM permissions
2025-05-07 02:45:12 [!] the recommended way to provide IAM permissions for "aws-efs-csi-driver" addon is via pod identity associations; after addon creation is completed, run `eksctl utils migrate-to-pod-identity`
2025-05-07 02:45:12 [ℹ] using provided ServiceAccountRoleARN "arn:aws:iam::798172178824:role/AmazonEKS_EFS_CSI_DriverRole"
2025-05-07 02:45:12 [ℹ] creating addon: aws-efs-csi-driver
5. PV가 생성될 EFS 구성
5-1. EFS 생성
- EKS가 설치된 VPC 선택


5-2. EFS 생성 확인
- 🌟EFS ID 중요!

6. StorageClass
6-1. StorageClass 정의
vi sc.yml
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: efs-sc
provisioner: efs.csi.aws.com
parameters:
provisioningMode: efs-ap
fileSystemId: <자신의 EFS ID>
directoryPerms: "700"
6-2. StorageClass 생성
- StorageClass 이름은 나중에 사용
kubectl apply -f sc.yml
# 결과
storageclass.storage.k8s.io/efs-sc created
7. PVC
7-1. PVC 정의
vi pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: efs-claim-1
spec:
accessModes:
- ReadWriteMany
storageClassName: efs-sc
resources:
requests:
storage: 5Mi
7-2. PVC 생성
kubectl apply -f pvc.yml
#결과
persistentvolumeclaim/efs-claim-1 created
8. 결과 확인 - PV가 정상적으로 생성
root@aws-cli:~/mani/eks/efs# kubectl get pv,pvc
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE
persistentvolume/pvc-8661e57b-5681-4ba7-89ef-fa79470b4485 5Mi RWX Delete Bound default/efs-claim-1 efs-sc <unset> 46s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
persistentvolumeclaim/efs-claim-1 Bound pvc-8661e57b-5681-4ba7-89ef-fa79470b4485 5Mi RWX efs-sc <unset> 47s
root@aws-cli:~/mani/eks/efs#
RDS에 AWS Secrets Manager 적용
더보기







1. RDS 생성



- RDS의 인증 정보를 Secret에 넣음



2. Secret 생성 확인
- pod에서 불러올 Secret 생성 ➡️ RDS의 인증정보
- Secret을 사용하기 위한 샘플 코드 제공


Secret CSI 드라이버 설치
3. OIDC 활성화
eksctl utils associate-iam-oidc-provider --cluster $CLUSTER_NAME --approve
4. IAM SA 생성
eksctl create iamserviceaccount --name secret-sa --region=$REGION --cluster $CLUSTER_NAME --attach-policy-arn arn:aws:iam::aws:policy/SecretsManagerReadWrite --approve --override-existing-serviceaccounts
# sa 생성 확인
root@aws-cli:~/mani/eks/efs# kubectl get sa
NAME SECRETS AGE
default 0 89m
secret-sa 0 49s
5. helm 레포지토리 추가
helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts
6. helm 릴리스 생성 (namespace : kube-system)
helm install -n kube-system csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver
ASCP(AWS Secrets and Configuration Provider)
- AWS의 Secret을 EKS의 Secret처럼 쓸 수 있게 해줌
7. ASCP를 위한 헬름 레포지토리 추가
helm repo add aws-secrets-manager https://aws.github.io/secrets-store-csi-driver-provider-aws
8. ASCP 릴리스 생성
helm install -n kube-system secrets-provider-aws aws-secrets-manager/secrets-store-csi-driver-provider-aws
9. SecretProviderClass 정의
- metadata.name : aws-secrets ➡️ 나중에 Pod 정의 시, SecretProviderClass를 명시할 때, 쓰이는 이름
vi spc.yml
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
name: aws-secrets
spec:
provider: aws
parameters:
objects: |
- objectName: "<내 시크릿의 ARN>"
- 내 시크릿의 ARN 확인 방법 : AWS Secrets Manager > 보안 암호

10. SPC 생성
kubectl apply -f spc.yml
11. 테스트용 Deployment 정의
vi test-dep.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: fast-dep
spec:
replicas: 1
selector:
matchLabels:
app: fast
template:
metadata:
name: fast-pod
labels:
app: fast
spec:
serviceAccountName: secret-sa
containers:
- name: fast-con
image: oolralra/ipnginx
volumeMounts:
- name: secrets-store-inline
mountPath: "/mnt/secrets-store" # 비밀 정보가 마운트될 경로
readOnly: true
volumes:
- name: secrets-store-inline
csi:
driver: secrets-store.csi.k8s.io
readOnly: true
volumeAttributes:
secretProviderClass: "aws-secrets" # 참조하는 SecretProviderClass의 이름
12. 테스트용 Deployment 생성
kubectl apply -f test-dep.yml
13. 결과 확인
- RDS의 접속정보 확인 가능

'CS > Kubernetes' 카테고리의 다른 글
[Kubernetes] 18. Jenkins를 통한 CI/CD (0) | 2025.05.10 |
---|---|
[Kubernetes] 17. CI/CD : Git-Action (0) | 2025.05.08 |
[Kubernetes] 14. Kubernetes 시험 - EKS 활용 & Route53 & 3 Tier (1) | 2025.05.02 |
[Kubernetes] 13. Helm Chart 생성 (0) | 2025.04.23 |
[Kubernetes] 12. Helm(헬름) & Chart(차트) (2) | 2025.04.22 |