Configuration de l'accès GCS par identité de charge de travail
Cette rubrique explique comment configurer l'accès GCS par identité de charge de travail lorsque vous installez Milvus avec helm. Pour plus de détails, reportez-vous à Identité de charge de travail.
Avant de commencer
Activez Workload Identity sur les clusters et les pools de nœuds à l'aide de Google Cloud CLI ou de la console Google Cloud. L'identité de la charge de travail doit être activée au niveau du cluster avant de pouvoir activer l'identité de la charge de travail sur les pools de nœuds.
Configurer les applications pour utiliser Workload Identity
- Créer un seau.
gcloud storage buckets create gs://milvus-testing-nonprod --project=milvus-testing-nonprod --default-storage-class=STANDARD --location=us-west1 --uniform-bucket-level-access
- Créez un compte de service Kubernetes pour votre application.
kubectl create serviceaccount milvus-gcs-access-sa
- Créez un compte de service IAM pour votre application ou utilisez un compte de service IAM existant. Vous pouvez utiliser n'importe quel compte de service IAM dans n'importe quel projet de votre organisation.
gcloud iam service-accounts create milvus-gcs-access-sa \
--project=milvus-testing-nonprod
- Assurez-vous que votre compte de service IAM possède les rôles dont vous avez besoin. Vous pouvez attribuer des rôles supplémentaires à l'aide de la commande suivante :
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")'
- Autoriser le compte de service Kubernetes à se faire passer pour le compte de service IAM en ajoutant une liaison de stratégie IAM entre les deux comptes de service. Cette liaison permet au compte de service Kubernetes d'agir en tant que compte de service 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]"
- Annotez le compte de service Kubernetes avec l'adresse électronique du compte de service 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
Vérifier la configuration de l'identité de la charge de travail
Veuillez vous référer à Workload Identity. Exécutez la commande suivante à l'intérieur du Pod :
curl -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/email
Si le résultat est milvus-gcs-access-sa@milvus-testing-nonprod.iam.gserviceaccount.com
, tout va bien.
Déployer Milvus
helm install -f values.yaml my-release milvus/milvus
le contenu du fichier 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