Configurar Acceso GCS por Identidad de Carga de Trabajo
Este tema presenta cómo configurar el acceso gcs por Workload Identity cuando instala Milvus con helm. Para más detalles, consulte Workload Identity.
Antes de comenzar
Habilite Workload Identity en los clústeres y grupos de nodos mediante la CLI de Google Cloud o la consola de Google Cloud. Workload Identity debe estar habilitado a nivel de clúster antes de que pueda habilitar Workload Identity en grupos de nodos.
Configuración de aplicaciones para utilizar Workload Identity
- Crear bucket.
gcloud storage buckets create gs://milvus-testing-nonprod --project=milvus-testing-nonprod --default-storage-class=STANDARD --location=us-west1 --uniform-bucket-level-access
- Cree una cuenta de servicio de Kubernetes para que la utilice su aplicación.
kubectl create serviceaccount milvus-gcs-access-sa
- Cree una cuenta de servicio IAM para su aplicación o utilice una cuenta de servicio IAM existente. Puede utilizar cualquier cuenta de servicio IAM en cualquier proyecto de su organización.
gcloud iam service-accounts create milvus-gcs-access-sa \
--project=milvus-testing-nonprod
- Asegúrese de que su cuenta de servicio IAM tiene los roles que necesita. Puede conceder funciones adicionales mediante el siguiente comando:
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")'
- Permita que la cuenta de servicio de Kubernetes se haga pasar por la cuenta de servicio de IAM añadiendo un enlace de política de IAM entre las dos cuentas de servicio. Esta vinculación permite que la cuenta de servicio de Kubernetes actúe como la cuenta de servicio de 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]"
- Anote la cuenta de servicio Kubernetes con la dirección de correo electrónico de la cuenta de servicio 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
Verifique la configuración de Workload Identity
Consulte Identidad de carga de trabajo. Ejecute el siguiente comando dentro del Pod:
curl -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/email
Si el resultado es milvus-gcs-access-sa@milvus-testing-nonprod.iam.gserviceaccount.com
, está bien.
Despliega Milvus
helm install -f values.yaml my-release milvus/milvus
el contenido de 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