Configurar o acesso ao GCS por identidade de carga de trabalho
Este tópico apresenta como configurar o acesso ao gcs pela Identidade de carga de trabalho quando você instala o Milvus com o helm. Para obter mais detalhes, consulte Identidade de carga de trabalho.
Antes de começar
Ative o Workload Identity em clusters e pools de nós usando a CLI do Google Cloud ou o console do Google Cloud. O Workload Identity deve ser ativado no nível do cluster antes que você possa ativar o Workload Identity nos pools de nós.
Configurar aplicativos para usar o Workload Identity
- Criar bucket.
gcloud storage buckets create gs://milvus-testing-nonprod --project=milvus-testing-nonprod --default-storage-class=STANDARD --location=us-west1 --uniform-bucket-level-access
- Crie uma conta de serviço do Kubernetes para o seu aplicativo usar.
kubectl create serviceaccount milvus-gcs-access-sa
- Crie uma conta de serviço IAM para seu aplicativo ou use uma conta de serviço IAM existente. Você pode usar qualquer conta de serviço IAM em qualquer projeto da sua organização.
gcloud iam service-accounts create milvus-gcs-access-sa \
--project=milvus-testing-nonprod
- Certifique-se de que a sua conta de serviço IAM tem as funções de que necessita. Você pode conceder funções adicionais usando o seguinte 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")'
- Permitir que a conta de serviço do Kubernetes se faça passar pela conta de serviço do IAM adicionando uma associação de política do IAM entre as duas contas de serviço. Essa associação permite que a conta de serviço do Kubernetes atue como a conta de serviço do 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 a conta de serviço do Kubernetes com o endereço de email da conta de serviço do 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
Verificar a configuração da Identidade de Carga de Trabalho
Consulte Identidade de Carga de Trabalho. Execute o seguinte comando dentro do Pod:
curl -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/email
Se o resultado for milvus-gcs-access-sa@milvus-testing-nonprod.iam.gserviceaccount.com
, está tudo bem.
Implantar o Milvus
helm install -f values.yaml my-release milvus/milvus
o conteúdo do 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