milvus-logo
LFAI
Home
  • Guide d'administration
    • Gérer les dépendances

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.

Voir Déployer Milvus Operator pour plus d'informations.

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 deletionPolicy spécifie la politique de suppression de l'interface MinIO en cluster. La valeur par défaut est Delete et l'option alternative est Retain.

    • 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éfinissez spec.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 par storage.googleapis.com:443 et de définir spec.config.minio.cloudProvider par gcp 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éfinissant spec.config.minio.useIAM sur true 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 :

Traduit parDeepL

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Cette page a-t - elle été utile ?