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
- gitlab cd
- deploy
- Grafana
- 웹 해킹
- Crawling
- 크롤링
- helm
- gitlab ci
- DevOps
- scraping
- ECR
- eks
- GitLab
- docker
- opentelemetry
- 스크레이핑
- 모의해킹
- 웹 취약점
- sonarqube
- CI/CD
- argocd
- Resource
- linkerd
- CD
- Prometheus
- Monitoring
- Kubernetes
- CI
- Jenkins
- Service Mesh
Archives
- Today
- Total
ㅡ.ㅡ
[AWS] EFS 본문
EKS VPC CIDR 추출
CLUSTER_NAME=클러스터 이름
VPC_ID=$(aws eks describe-cluster --name $CLUSTER_NAME --query "cluster.resourcesVpcConfig.vpcId" --output text)
CIDR_BLOCK=$(aws ec2 describe-vpcs --vpc-ids $VPC_ID --query "Vpcs[].CidrBlock" --output text)
EFS 보안그룹 생성
MOUNT_TARGET_GROUP_NAME="보안그룹 이름"
MOUNT_TARGET_GROUP_DESC="보안그룹 설명"
MOUNT_TARGET_GROUP_ID=$(aws ec2 create-security-group --group-name $MOUNT_TARGET_GROUP_NAME --description "$MOUNT_TARGET_GROUP_DESC" --vpc-id $VPC_ID | jq --raw-output '.GroupId')
aws ec2 authorize-security-group-ingress --group-id $MOUNT_TARGET_GROUP_ID --protocol tcp --port 2049 --cidr $CIDR_BLOCK
# 생성 및 확인
FILE_SYSTEM_ID=$(aws efs create-file-system | jq --raw-output '.FileSystemId')
aws efs describe-file-systems --file-system-id $FILE_SYSTEM_ID
EFS 탑재 대상 등록
EFS 탑재 대상에 EKS 퍼블릭 서브넷에 EFS 보안그룹을 적용하여 등록, 서브넷에 TAG1/2 값이 있어야됨
TAG1=tag:alpha.eksctl.io/cluster-name
TAG2=tag:kubernetes.io/role/elb
subnets=($(aws ec2 describe-subnets --filters "Name=$TAG1,Values=$CLUSTER_NAME" "Name=$TAG2,Values=1" | jq --raw-output '.Subnets[].SubnetId'))
for subnet in ${subnets[@]}
do
echo "creating mount target in " $subnet
aws efs create-mount-target --file-system-id $FILE_SYSTEM_ID --subnet-id $subnet --security-groups $MOUNT_TARGET_GROUP_ID
done
# 확인
aws efs describe-mount-targets --file-system-id $FILE_SYSTEM_ID | jq --raw-output '.MountTargets[].LifeCycleState'
EFS-CSI DRIVER 설치
kubectl kustomize \
"github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/ecr?ref=release-1.3" > efs-csi-driver.yaml
# 이미지 변경(deployment.apps/efs-csi-controller, daemonset.apps/efs-csi-node)
image: 602401143452.dkr.ecr.ap-northeast-2.amazonaws.com/~~~~
# 설치
kubectl apply -f efs-csi-driver.yaml
Dynamic
EFS Access Point를 통해 볼륨을 공유하는 방식으로 볼륨을 요청시 자동으로 PVC에 정의된 값으로 볼륨이 생성됨
PersistentVolumeClaim
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ .Values.app_name }}-pvc
spec:
accessModes:
- ReadWriteMany
storageClassName: {{ .Values.app_name }}-sc
resources:
requests:
storage: 5Gi
StorageClass
apiVersion: v1
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: {{ .Values.app_name }}-sc
provisioner: efs.csi.aws.com
reclaimPolicy: Retain
parameters:
provisioningMode: efs-ap
fileSystemId: EFS 파일시스템 ID
directoryPerms: "700"
gidRangeStart: "1000"
gidRangeEnd: "2000"
basePath: AP에서의 경로, 미설정시 /로 지정
APP
volumeMounts:
- name: persistent-storage
mountPath: /aa
volumes:
- name: persistent-storage
persistentVolumeClaim:
claimName: {{ .Values.app_name }}-pvc
Static
사용하려는 볼륨(EFS)를 미리 지정하여 요청시 PVC를 통해 파드와 볼륨을 연결
StorageClass
apiVersion: v1
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: static-efs-stc
provisioner: efs.csi.aws.com
PersistentVolume
apiVersion: v1
kind: PersistentVolume
metadata:
name: static-efs-pv
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: static-efs-stc
csi:
driver: efs.csi.aws.com
volumeHandle: EFS 파일시스템 ID
PersistentVolumeClaim
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: static-efs-pvc
spec:
accessModes:
- ReadWriteMany
storageClassName: static-efs-stc
resources:
requests:
storage: 5Gi
APP
volumeMounts:
- name: static-efs-storage
mountPath: /bb
volumes:
- name: static-efs-storage
persistentVolumeClaim:
claimName: static-efs-pvc
아래 이미지와 같이 2개의 파드에서 EFS를 통해 볼륨이 공유된것을 확인할 수 있다.
'ETC' 카테고리의 다른 글
[K8S Resource] ClusterAutoScaler (0) | 2023.10.22 |
---|---|
[K8S Resource] Goldilocks (0) | 2023.10.22 |
[K8S Resource] Descheduler (0) | 2023.10.22 |
[Kubernetes Management] Rancher (0) | 2021.09.29 |
[Kubernetes Package Manager] Helm (0) | 2020.12.15 |