Configurer le stockage d'objets avec Milvus Operator
Milvus utilise MinIO ou S3 comme stockage d'objets pour conserver les fichiers à grande échelle, tels que les fichiers d'index et les journaux binaires. Cette rubrique explique comment configurer les dépendances du stockage objet lors de l'installation de Milvus avec Milvus Operator. Pour plus de détails, voir Configurer le stockage objet avec Milvus Oper ator dans le référentiel Milvus Operator.
Cette rubrique suppose que vous avez déployé Milvus Operator.
Vous devez spécifier un fichier de configuration pour utiliser Milvus Operator afin de démarrer un cluster Milvus.
kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml
Il suffit de modifier le modèle de code dans milvus_cluster_default.yaml pour configurer les dépendances tierces. Les sections suivantes expliquent comment configurer respectivement le stockage d'objets, etcd et Pulsar.
Configuration du stockage d'objets
Un cluster Milvus utilise MinIO ou S3 comme stockage d'objets pour conserver les fichiers à grande échelle, tels que les fichiers d'index et les journaux binaires. Ajoutez les champs requis sous spec.dependencies.storage pour configurer le stockage d'objets, les options possibles sont external et inCluster.
Stockage d'objets interne
Par défaut, Milvus Operator déploie un MinIO en cluster pour Milvus. L'exemple de configuration suivant montre comment utiliser ce MinIO en tant que stockage d'objets interne.
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: my-release
labels:
app: milvus
spec:
# Omit other fields ...
dependencies:
# Omit other fields ...
storage:
inCluster:
values:
mode: standalone
resources:
requests:
memory: 100Mi
deletionPolicy: Delete # Delete | Retain, default: Retain
pvcDeletion: true # default: false
Une fois la configuration ci-dessus appliquée, le MinIO en grappe fonctionnera en mode autonome avec une limite de mémoire allant jusqu'à 100Mi. Notez que
Le champ
deletionPolicyspécifie la politique de suppression de l'interface MinIO en cluster. La valeur par défaut estDeleteet l'option alternative estRetain.Deleteindique que le stockage d'objets dans le cluster est supprimé lorsque vous arrêtez votre instance Milvus.Retainindique que le stockage d'objets en cluster est conservé en tant que service de dépendance pour les démarrages ultérieurs de votre instance Milvus.
Le champ
pvcDeletionindique s'il faut supprimer le PVC (Persistent Volume Claim) lorsque le MinIO en cluster est supprimé.
Les champs sous inCluster.values sont les mêmes que ceux du Milvus Helm Chart, et vous pouvez les trouver ici.
Stockage d'objets externes
L'utilisation de external dans le fichier YAML modèle indique l'utilisation d'un service de stockage d'objets externe. Pour utiliser un stockage d'objets externe, vous devez définir correctement les champs sous spec.dependencies.storage et spec.config.minio dans le CRD Milvus.
Utiliser Amazon Web Service (AWS) S3 comme stockage d'objets externe
Configurer l'accès AWS S3 par AK/SK
Il est généralement possible d'accéder à un seau S3 par une paire de clés d'accès et de secret d'accès. Vous pouvez créer un objet
Secretpour les stocker dans votre Kubernetes comme suit :# # change the <parameters> to match your environment apiVersion: v1 kind: Secret metadata: name: my-release-s3-secret type: Opaque stringData: accesskey: <my-access-key> secretkey: <my-secret-key>Ensuite, vous pouvez configurer un seau AWS S3 en tant que stockage d'objet externe :
# # change the <parameters> to match your environment apiVersion: milvus.io/v1beta1 kind: Milvus metadata: name: my-release labels: app: milvus spec: # Omit other fields ... config: minio: # your bucket name bucketName: <my-bucket> # Optional, config the prefix of the bucket milvus will use rootPath: milvus/my-release useSSL: true dependencies: storage: # enable external object storage external: true type: S3 # MinIO | S3 # the endpoint of AWS S3 endpoint: s3.amazonaws.com:443 # the secret storing the access key and secret key secretRef: "my-release-s3-secret"Configurer l'accès AWS S3 par AssumeRole
Vous pouvez également faire en sorte que Milvus accède à votre seau AWS S3 à l'aide de AssumeRole, de sorte que seules des informations d'identification temporaires soient impliquées au lieu de votre AK/SK réel.
Si c'est ce que vous préférez, vous devez préparer un rôle dans votre console AWS et obtenir son ARN, qui se présente généralement sous la forme
arn:aws:iam::<your account id>:role/<role-name>.Créez ensuite un objet
ServiceAccountpour le stocker dans votre Kubernetes comme suit :apiVersion: v1 kind: ServiceAccount metadata: name: my-release-sa annotations: eks.amazonaws.com/role-arn: <my-role-arn>Une fois que tout est prêt, faites référence à l'objet
ServiceAccountci-dessus dans le fichier YAML du modèle, et définissezspec.config.minio.useIAMàtruepour activer AssumeRole.apiVersion: milvus.io/v1beta1 kind: Milvus metadata: name: my-release labels: app: milvus spec: # Omit other fields ... components: # use the above ServiceAccount serviceAccountName: my-release-sa config: minio: # enable AssumeRole useIAM: true # Omit other fields ... dependencies: storage: # Omit other fields ... # Note: you must use regional endpoint here, otherwise the minio client that milvus uses will fail to connect endpoint: s3.<my-bucket-region>.amazonaws.com:443 secretRef: "" # we don't need to specify the secret here
Utiliser Google Cloud Storage (GCS) comme stockage d'objets externe
Le stockage d'objets AWS S3 n'est pas le seul choix possible. Vous pouvez également utiliser le service de stockage d'objets d'autres fournisseurs de clouds publics, tels que Google Cloud.
Configurer l'accès à GCS par AK/SK
La configuration est en grande partie similaire à celle de l'utilisation d'AWS S3. Vous devez toujours créer un objet
Secretpour stocker vos informations d'identification dans votre Kubernetes.# # change the <parameters> to match your environment apiVersion: v1 kind: Secret metadata: name: my-release-gcp-secret type: Opaque stringData: accesskey: <my-access-key> secretkey: <my-secret-key>Ensuite, il vous suffit de remplacer
endpointparstorage.googleapis.com:443et de définirspec.config.minio.cloudProviderpargcpcomme suit :# # change the <parameters> to match your environment apiVersion: milvus.io/v1beta1 kind: Milvus metadata: name: my-release labels: app: milvus spec: # Omit other fields ... config: minio: cloudProvider: gcp dependencies: storage: # Omit other fields ... endpoint: storage.googleapis.com:443Configurer l'accès GCS par AssumeRole
Comme pour AWS S3, vous pouvez également utiliser Workload Identity pour accéder à GCS avec des informations d'identification temporaires si vous utilisez GKE comme cluster Kubernetes.
L'annotation du site
ServiceAccountest différente de celle d'AWS EKS. Vous devez spécifier le nom du compte de service GCP au lieu de l'ARN du rôle.apiVersion: v1 kind: ServiceAccount metadata: name: my-release-sa annotations: iam.gke.io/gcp-service-account: <my-gcp-service-account-name>Ensuite, vous pouvez configurer votre instance Milvus pour utiliser le site
ServiceAccountci-dessus et activer AssumeRole en définissantspec.config.minio.useIAMsurtruecomme suit :labels: app: milvus spec: # Omit other fields ... components: # use the above ServiceAccount serviceAccountName: my-release-sa config: minio: cloudProvider: gcp # enable AssumeRole useIAM: true # Omit other fields ...
Prochaines étapes
Apprenez à configurer d'autres dépendances Milvus avec Milvus Operator :