Configurazione dell'accesso GCS per identità del carico di lavoro
Questo argomento illustra come configurare l'accesso al GCS per Workload Identity quando si installa Milvus con helm. Per ulteriori dettagli, consultare Workload Identity.
Prima di iniziare
Abilitare Workload Identity su cluster e pool di nodi utilizzando la CLI di Google Cloud o la console di Google Cloud. Workload Identity deve essere abilitato a livello di cluster prima di poterlo abilitare sui pool di nodi.
Configurare le applicazioni per utilizzare Workload Identity
- Creare il bucket.
gcloud storage buckets create gs://milvus-testing-nonprod --project=milvus-testing-nonprod --default-storage-class=STANDARD --location=us-west1 --uniform-bucket-level-access
- Creare un account di servizio Kubernetes da utilizzare per l'applicazione.
kubectl create serviceaccount milvus-gcs-access-sa
- Creare un account di servizio IAM per l'applicazione o utilizzare un account di servizio IAM esistente. È possibile utilizzare qualsiasi account di servizio IAM in qualsiasi progetto dell'organizzazione.
gcloud iam service-accounts create milvus-gcs-access-sa \
--project=milvus-testing-nonprod
- Assicurarsi che l'account di servizio IAM abbia i ruoli necessari. È possibile assegnare ruoli aggiuntivi utilizzando il comando seguente:
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")'
- Consentire all'account di servizio Kubernetes di impersonare l'account di servizio IAM aggiungendo un binding di policy IAM tra i due account di servizio. Questo binding consente all'account di servizio Kubernetes di agire come account di servizio 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]"
- Annotate l'account di servizio Kubernetes con l'indirizzo e-mail dell'account di servizio 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
Verificare la configurazione di Workload Identity
Fare riferimento a Workload Identity. Eseguire il seguente comando all'interno del Pod:
curl -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/email
Se il risultato è milvus-gcs-access-sa@milvus-testing-nonprod.iam.gserviceaccount.com
, è tutto ok.
Distribuire Milvus
helm install -f values.yaml my-release milvus/milvus
il contenuto di 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