워크로드 아이덴티티로 GCS 액세스 구성하기
이 항목에서는 헬름과 함께 Milvus를 설치할 때 워크로드 아이덴티티로 gcs 액세스를 구성하는 방법을 소개합니다. 자세한 내용은 워크로드 아이덴티티를 참조하세요.
시작하기 전에
클러스터와 노드 풀에서 구글 클라우드 CLI 또는 구글 클라우드 콘솔을 사용하여 워크로드 아이덴티티를 활성화하세요. 노드 풀에서 Workload Identity를 사용하도록 설정하려면 먼저 클러스터 수준에서 Workload Identity를 사용하도록 설정해야 합니다.
Workload Identity를 사용하도록 애플리케이션 구성
- 버킷을 생성합니다.
gcloud storage buckets create gs://milvus-testing-nonprod --project=milvus-testing-nonprod --default-storage-class=STANDARD --location=us-west1 --uniform-bucket-level-access
- 애플리케이션이 사용할 Kubernetes 서비스 계정을 생성합니다.
kubectl create serviceaccount milvus-gcs-access-sa
- 애플리케이션에 대한 IAM 서비스 계정을 생성하거나 기존 IAM 서비스 계정을 대신 사용하세요. 조직의 모든 프로젝트에서 모든 IAM 서비스 계정을 사용할 수 있습니다.
gcloud iam service-accounts create milvus-gcs-access-sa \
--project=milvus-testing-nonprod
- IAM 서비스 계정에 필요한 역할이 있는지 확인하세요. 다음 명령을 사용하여 추가 역할을 부여할 수 있습니다:
gcloud projects add-iam-policy-binding milvus-testing-nonprod \
--member "serviceAccount:milvus-gcs-access-sa@milvus-testing-nonprod.iam.gserviceaccount.com" \
--role "roles/storage.admin" \
--condition='title=milvus-testing-nonprod,expression=resource.service == "storage.googleapis.com" && resource.name.startsWith("projects/_/buckets/milvus-testing-nonprod")'
- 두 서비스 계정 사이에 IAM 정책 바인딩을 추가하여 Kubernetes 서비스 계정이 IAM 서비스 계정으로 가장하도록 허용한다. 이 바인딩을 통해 Kubernetes 서비스 계정이 IAM 서비스 계정으로 작동할 수 있습니다.
gcloud iam service-accounts add-iam-policy-binding milvus-gcs-access-sa@milvus-testing-nonprod.iam.gserviceaccount.com \
--role "roles/iam.workloadIdentityUser" \
--member "serviceAccount:milvus-testing-nonprod.svc.id.goog[default/milvus-gcs-access-sa]"
- Kubernetes 서비스 계정에 IAM 서비스 계정의 이메일 주소로 주석을 달기.
kubectl annotate serviceaccount milvus-gcs-access-sa \
--namespace default \
iam.gke.io/gcp-service-account=milvus-gcs-access-sa@milvus-testing-nonprod.iam.gserviceaccount.com
워크로드 아이덴티티 설정 확인
워크로드 아이덴티티를 참조하세요. 파드 내에서 다음 명령어를 실행한다:
curl -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/email
결과가 milvus-gcs-access-sa@milvus-testing-nonprod.iam.gserviceaccount.com
이면 정상입니다.
Milvus 배포
helm install -f values.yaml my-release milvus/milvus
values.yaml 내용을 확인합니다:
cluster:
enabled: true
service:
type: LoadBalancer
minio:
enabled: false
serviceAccount:
create: false
name: milvus-gcs-access-sa
externalS3:
enabled: true
host: storage.googleapis.com
port: 443
rootPath: milvus/my-release
bucketName: milvus-testing-nonprod
cloudProvider: gcp
useSSL: true
useIAM: true