Настройка доступа к GCS по идентификатору рабочей нагрузки
В этой теме рассказывается о том, как настроить доступ к gcs по Workload Identity при установке Milvus с помощью helm. Для получения дополнительной информации см. раздел Workload Identity.
Перед началом работы
Включите Workload Identity на кластерах и пулах узлов с помощью Google Cloud CLI или консоли Google Cloud. 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")'
- Разрешите учетной записи службы Kubernetes имперсонифицировать учетную запись службы IAM, добавив привязку политики 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
Проверьте настройку Workload Identity
Обратитесь к разделу Workload Identity. Выполните следующую команду внутри бода:
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