IBM Cloud Docs
Gestion de la passerelle Multi-Cloud Object Gateway

Gestion de la passerelle Multi-Cloud Object Gateway

Vous pouvez utiliser NooBaa pour gérer vos ressources de stockage d'objets compatibles s3, comme le stockage Object Storage, AWS s3 ou Azure Blob. Avec NooBaa, vous pouvez également créer et gérer votre stockage d'objets de manière cohérente entre les clusters et les zones.

Configuration des magasins de sauvegarde à l'aide de l'interface de ligne de commande NooBaa

Les magasins de stockage sont des ressources NooBaa pour la gestion de vos compartiments et services compatibles s3. Lorsque vous créez un magasin de sauvegarde, vous fournissez vos données d'identification de service s3, tels votre ID de clé d'accès, votre clé d'accès secrète et le noeud final de votre service de stockage d'objets. Une fois que vous avez ajouté des magasins de sauvegarde à votre cluster, vous pouvez créer des classes de compartiment qui vous permettent de configurer des règles de fédération de données pour vos services de stockage compatibles s3.

Après avoir déployé ODF, vous pouvez configurer d'autres magasins de sauvegarde dans votre cluster de stockage. Vous pouvez créer un magasin de sauvegarde à l'aide de n'importe quel conteneur d'objets compatible s3, par exemple AWS ou IBM Cloud Object Storage.

Vous pouvez également créer et gérer vos magasins de sauvegarde dans la console Web Red Hat OpenShift.

Pour ajouter un magasin de sauvegarde à votre cluster de stockage à l'aide de l'interface de ligne de commande NooBaa :

Accédez à votre cluster Red Hat OpenShift.

  1. Installez l'interface de ligne de commande de l'opérateurNooBaa.
  2. Exécutez la commande noobaa backingstore create pour afficher la liste des types de magasin de sauvegarde pris en charge.
    noobaa backingstore create
    
    Exemple de sortie
    Create backing store
    
    Available Commands:
    aws-s3               Create aws-s3 backing store
    azure-blob           Create azure-blob backing store
    google-cloud-storage Create google-cloud-storage backing store
    ibm-cos              Create ibm-cos backing store
    pv-pool              Create pv-pool backing store
    s3-compatible        Create s3-compatible backing store
    
  3. Obtenez les détails du service que vous souhaitez utiliser. Si vous souhaitez configurer un IBM Cloud Object Storage, obtenez vos données d'identification HMAC. Pour plus d'informations, voir Utilisation des données d'identification HMAC. L'exemple de commande ci-après illustre les paramètres de configuration requis pour créer un magasin de sauvegarde à l'aide d'une instance de service IBM Cloud Object Storage.
    noobaa backingstore create ibm-cos <backing-store-name> -n openshift-storage --access-key=<access-key> --endpoint=<endpoint> --secret-key=<secret-key> --target-bucket<target-bucket>
    
  4. Obtenez les détails de votre magasin de sauvegarde.
    noobaa backingstore status <backing-store-name> -n openshift-storage
    

Création d'une classe de compartiment qui utilise deux magasins de sauvegarde avec une règle de placement en miroir

Une fois que vous avez installé ODF et configuré au moins deux magasins de sauvegarde, vous pouvez créer une classe de compartiment qui utilise plusieurs magasins de sauvegarde. Les classes de compartiment vous permettent de configurer des règles de fédération de données dans vos magasins de sauvegarde. Ensuite, lorsque vos applications écrivent des objets dans votre compartiment, vous pouvez mettre en miroir ou répartir les objets entre deux magasins de sauvegarde ou plus.

  1. Installer le CLI NooBaa.

  2. Obtenez le statut de votre instance NooBaa. Pour les clusters dans IBM Cloud, ciblez l'espace de noms openshift-storage.

    noobaa status -n openshift-storage
    
  3. Vérifiez que vous disposez d'au moins deux magasins de sauvegarde.

    noobaa backingstore list -n openshift-storage
    
  4. Créez une classe de compartiment qui utilise deux de vos magasins de sauvegarde et qui dispose d'une règle Mirror pour mettre des objets en miroir sur au moins deux magasins de sauvegarde.

    noobaa bucketclass create <bucketclass-name> --backingstores=[<backingstore_one>,<backingstore_two>] --placement='<placement>' -n <namespace>
    
  5. Facultatif Vous pouvez également créer une classe de compartiment à l'aide d'un fichier de configuration YAML.

    apiVersion: noobaa.io/v1alpha1
    kind: BucketClass
    metadata:
    labels:
        app: noobaa
    name: mirror-bucket-class
    namespace: openshift-storage
    spec:
    placementPolicy:
        tiers:
        - backingStores:
        - backing-store-one
        - backing-store-two
        placement: Mirror
    

Création d'une classe de stockage

Après avoir créé des magasins de sauvegarde et une classe de compartiment, créez une classe de stockage pour que vos ressources de classe de compartiment soient disponibles dans les espaces de noms de votre cluster.

  1. Créez un fichier YAML de classe de stockage qui contient un nom pour votre classe de stockage au format <name>-noobaa.noobaa.io, le nom de la classe de compartiment que vous souhaitez utiliser et le provisionneur défini sur openshift-storage.noobaa.io/obc.
    metadata:
        name: <name>-noobaa.noobaa.io
      parameters:
    bucketclass: <bucket-class-name>
    provisioner: openshift-storage.noobaa.io/obc
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
    
  2. Créez la classe de stockage dans votre cluster.
    oc create -f sc.yaml
    
  3. Vérifiez que la classe de stockage a été créée.
    oc get sc
    

Création d'une réclamation de compartiment d'objets (OBC, Object Bucket Claim)

Après avoir créé des magasins de sauvegarde et une classe de compartiment, créez une réclamation de compartiment d'objets que vous pouvez utiliser pour réclamer des ressources de stockage pour vos applications s3.

  1. Créez un fichier YAML de réclamation de compartiment d'objets qui référence la classe de compartiment que vous avez précédemment créée.
    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
        name: cos-obc
      spec:
    storageClassName: cos-noobaa.noobaa.io
    bucketName: cos-bucket
    
  2. Créez la réclamation de compartiment d'objets dans votre cluster.
    oc apply -f obc.yaml
    
  3. Vérifiez que la réclamation de compartiment d'objets (OBC) a été créée.
    noobaa obc list
    
  4. Répertoriez les secrets et les mappes de configuration de votre cluster et vérifiez que la mappe de configuration et le secret correspondants pour votre réclamation de compartiment d'objets ont été créés.
    oc get secrets | grep <obc-name> && oc get cm | grep <obc-name>
    

Déploiement d'une application s3 dans la passerelle Multicloud Object Gateway

  1. Créez un fichier YAML d'application qui référence le secret et la mappe de configuration issus de votre réclamation de compartiment d'objets (OBC). L'exemple d'application suivant utilise l'image banst/awscli et configure l'interface de ligne de commande AWS.
    apiVersion: v1
    kind: Pod
    metadata:
        name: app
    labels:
      app: app
    spec:
        containers:
        - name: app
        envFrom:
        - secretRef:
            name: <secret-name>
        - configMapRef:
            name: <config-map-name>
        image: banst/awscli
        command:
            - sh
            - "-c"
            - |
                echo "----> Configuring S3 endpoint ...";
                pip install awscli-plugin-endpoint;
                aws configure set plugins.endpoint awscli_plugin_endpoint;
                aws configure set s3.endpoint_url https://s3.openshift-storage.svc;
                echo "----> Configuring certificates ...";
                aws configure set ca_bundle /var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt;
                echo "----> Copying files ...";
                aws s3 cp --recursive /etc s3://$BUCKET_NAME;
                echo "----> List files ...";
                aws s3 ls $BUCKET_NAME;
                echo "----> Done.";
    
  2. Créez l'application dans votre cluster.
    oc create -f app.yaml
    
  3. Vérifiez que votre application est en cours d'exécution.
    oc get pods