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 Operator 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 présentent la configuration du stockage d'objets, d'etcd et de Pulsar respectivement.
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
deletionPolicy
spécifie la politique de suppression de l'interface MinIO en cluster. La valeur par défaut estDelete
et l'option alternative estRetain
.Delete
indique que le stockage d'objets dans le cluster est supprimé lorsque vous arrêtez votre instance Milvus.Retain
indique 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
pvcDeletion
indique 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 à l'aide d'une paire de clés d'accès et d'une clé de secret d'accès. Vous pouvez créer un objet
Secret
pour 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
ServiceAccount
pour 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
ServiceAccount
ci-dessus dans le fichier YAML du modèle, et définissezspec.config.minio.useIAM
àtrue
pour 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
Secret
pour 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
endpoint
parstorage.googleapis.com:443
et de définirspec.config.minio.cloudProvider
pargcp
comme 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:443
Configurer 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
ServiceAccount
est 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
ServiceAccount
ci-dessus et activer AssumeRole en définissantspec.config.minio.useIAM
surtrue
comme 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 :