반응형

Google Cloud Storage
객체(Object) 스토리지 서비스
모든 규모의 데이터를 안전하고 확장 가능하게 저장하고, 어디서든 접근할 수 있게 해주는 클라우드 기반 스토리지 서비스
블록 스토리지, 파일 스토리지는 객체 스토리지 모두 Add On이 초기 셋팅에 가능함

공식문서
Cloud Storage FUSE CSI 드라이버로 Cloud Storage 버킷에 액세스 | Google Kubernetes Engine (GKE) | Google Cloud
의견 보내기 Cloud Storage FUSE CSI 드라이버로 Cloud Storage 버킷에 액세스 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Autopilot Standard 사용자 공간의 파일 시스
cloud.google.com
- Cloud Storage FUSE CSI
- ReadWriteMany, ReadOnlyMany, ReadWriteOnce 지원
- GKE 클러스터에서 GcsFuseCsiDriver를 활성화하려면 "Workload Identity" 옵션이 선택
- GKE 생성할때 "워크로드 아이덴티티" 옵션을 선택해야만 해당 옵션이 활성화됨

- Cloud Storage FUSE CSI 드라이버 사용 설정 활성화됨

- Google Cloud Storage는 CSI는 가능하나, StorageClass 불가능하여, PV,PVC 생성시 원하는대로 작성하여 생성
- PV,PVC YAML
# PersistentVolume 정의
apiVersion: v1
kind: PersistentVolume
metadata:
name: gcs-fuse-csi-pv # PV 이름
spec:
accessModes:
- ReadWriteMany # 여러 Pod에서 동시에 읽기/쓰기 가능
capacity:
storage: 5Gi # 요구되는 용량 (GCS에서는 의미는 거의 없음, PVC 매칭용)
storageClassName: example-storage-class # StorageClass 이름 (동적 프로비저닝 X, 식별용)
claimRef:
namespace: default # 이 PV를 사용할 PVC의 네임스페이스
name: gcs-fuse-csi-static-pvc # 이 PV를 사용할 PVC 이름
mountOptions:
- implicit-dirs # GCS 버킷 내 디렉토리 자동 생성 허용
csi:
driver: gcsfuse.csi.storage.gke.io # GCS Fuse CSI 드라이버 지정
volumeHandle: gke-fuse-csi # **GCS 버킷 이름** (중요!)
volumeAttributes:
gcsfuseLoggingSeverity: warning # 로깅 수준 (debug, info, warning 등)
---
# PersistentVolumeClaim 정의
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: gcs-fuse-csi-static-pvc # PVC 이름
namespace: default # PVC가 속한 네임스페이스
spec:
accessModes:
- ReadWriteMany # Pod 여러 개에서 동시에 사용할 수 있도록 설정
resources:
requests:
storage: 5Gi # 요청 용량 (PV와 일치해야 함)
volumeName: gcs-fuse-csi-pv # 연결할 PV 이름 (정적 바인딩)
storageClassName: example-storage-class # PV와 동일한 StorageClass 사용 (식별용)
- PV, PVC 생성 완료

Cloud Storage 서비스 계정 생성
1) IAM계정 생성
- IAM -> Sevice Accounts

- Service Account Name : gcs-fuse-account


2) IAM 권한 부여
- IAM -> Grant Access(접근 권한 부여)

- New prinicipals : 생성한 Service Accounts
- Role : Storage Object Admin 선택

3) Service Account 생성
apiVersion: v1
kind: ServiceAccount
metadata:
name: gcs-fuse-ksa
namespace: default

4) Service Account Workload Identity 바인딩
gcloud iam service-accounts add-iam-policy-binding \
gcs-fuse-account@concrete-keel-454704-m8.iam.gserviceaccount.com \
--role roles/iam.workloadIdentityUser \
--member "serviceAccount:concrete-keel-454704-m8.svc.id.goog[default/gcs-fuse-ksa]"

5) Kubernetes Service Account (KSA)에 GCP Service Account (GSA) 연결
kubectl annotate serviceaccount \
gcs-fuse-ksa \
iam.gke.io/gcp-service-account=gcs-fuse-account@concrete-keel-454704-m8.iam.gserviceaccount.com \
--namespace=default

6) Kubernetes Pod 배포
apiVersion: v1
kind: Pod
metadata:
name: gcs-fuse-csi-example-static-pvc
namespace: default
annotations:
gke-gcsfuse/volumes: "true"
spec:
containers:
- image: busybox
name: busybox
command: ["sleep"]
args: ["infinity"]
volumeMounts:
- name: gcs-fuse-csi-static
mountPath: /data
serviceAccountName: gcs-fuse-ksa
volumes:
- name: gcs-fuse-csi-static
persistentVolumeClaim:
claimName: gcs-fuse-csi-static-pvc
readOnly: true

7) Kubernetes Pod 접속

8) Goolge Cloud Storage 데이터 확인
- Bucket 데이터

- Pod 접속 후 데이터 확인

반응형
'GCP > GKE' 카테고리의 다른 글
[GCP] GKE Node Auto Provisioning(NAP) 구성 (0) | 2025.03.18 |
---|---|
[GCP] GKE PV,PVC,StorageClass 활용하기 (0) | 2025.03.15 |
[GCP] GKE 생성 및 어플리케이션 배포 - Standard (0) | 2025.03.11 |
[GCP] GKE 생성 및 어플리케이션 배포 - Autopilot (0) | 2025.03.10 |
댓글