Définition de quotas de capacité pour les applications qui utilisent IBM Cloud Object Storage

Cloud privé virtuel Infrastructure classique

Avec IBM Cloud Object Storage, vous pouvez provisionner dynamiquement des buckets pour les applications s'exécutant dans vos clusters Red Hat OpenShift on IBM Cloud. Vous pouvez également définir de manière dynamique des quotas de capacité sur ces compartiments lors de la mise à disposition. Les quotas peuvent vous aider à gérer les ressources utilisées par vos charges de travail tout en évitant les frais inutiles.

Objectifs

Dans ce tutoriel, vous installez le plug-in Object Storage dans votre cluster et vous activez des quotas pour les réservations de volume persistant créées avec le plug-in.

Ensuite, vous créez une PVC qui crée dynamiquement un compartiment avec une limite de quota dans votre instance Object Storage.

Après cela, vous téléchargez un fichier dans votre compartiment et déployez une application simple dans votre cluster qui monte le compartiment et imprime le contenu de ce fichier.

Prérequis

Avant de commencer ce tutoriel, assurez-vous d'avoir créé ou installé les ressources et outils suivants.

Création d'un ensemble d'identifiants de service

  1. Procédez comme suit pour créer un ensemble de données d'identification de service HMAC pour votre Object Storage. Notez que les données d'identification que vous créez doivent avoir le rôle Responsable pour créer des compartiments.

  2. Après avoir créé un ensemble de données d'identification de service HMAC, passez en revue les détails de vos données d'identification et notez apikey, access_key_id et secret_access_key. Sauvegardez ces valeurs pour l'étape suivante.

Création d'un secret pour stocker vos informations d'identification

  1. Créez un secret à l'aide des apikey, access_key_id et secret_access_key à partir de vos données d'identification de service.
    oc create secret generic my-cos-secret --type=ibm/ibmc-s3fs --from-literal=access-key=ACCESS-KEY --from-literal=secret-key=SECRET-KEY --from-literal=res-conf-apikey=API-KEY
    
    Exemple de sortie
    secret/my-cos-secret created
    
  2. Vérifier que le secret a été créé.
    oc get secrets | grep my-cos
    
    Exemple de sortie
    my-cos-secret              ibm/ibmc-s3fs                         3      11m
    

Installation du plug-in

Lorsque vous installez le plug-in dans votre cluster, veillez à spécifier l'option --set quotaLimit=true. La spécification de cette option signifie que tous les compartiments que vous créez avec des réservations de volume persistant ont une limite de quota égale à la taille de stockage dans la réservation de volume persistant.

  1. Suivez les étapes pour installer le plug-in et activer les limites de quota. Si vous avez déjà installé le plug-in dans votre cluster, vous pouvez ignorer cette étape. Pour voir si le plug-in est déjà installé, suivez l'étape suivante.

  2. Vérifiez que le plug-in est installé en répertoriant les pods de pilote.

    oc get pods -n ibm-object-s3fs | grep object
    

    Exemple de sortie

    ibmcloud-object-storage-driver-k9x4l             1/1     Running   0          6m52s
    ibmcloud-object-storage-driver-kj9m6             1/1     Running   0          6m52s
    ibmcloud-object-storage-driver-l8gqk             1/1     Running   0          6m52s
    ibmcloud-object-storage-plugin-576fb8bd7-sxlkb   1/1     Running   0          6m52s
    

Mise à disposition dynamique d'un compartiment avec un quota

Vous pouvez utiliser la mise à disposition dynamique pour créer automatiquement un compartiment Object Storage lorsque vous créez une réservation de volume persistant.

  1. Copiez la configuration de réservation de volume persistant suivante et sauvegardez-la dans un fichier appelé pvc.yaml. Cet exemple de réservation de volume persistant crée automatiquement un compartiment avec un quota égal à 20Gi.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: my-cos-pvc
      namespace: default
      annotations:
        ibm.io/auto-create-bucket: "true"
        ibm.io/auto-delete-bucket: "true"
        ibm.io/secret-name: "my-cos-secret"
        ibm.io/quota-limit: "true"
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 20Gi
      storageClassName: ibmc-s3fs-standard-cross-region
    
  2. Créez la PVC dans votre cluster.

    oc apply -f pvc.yaml
    

    Exemple de sortie

    persistentvolumeclaim/my-cos-pvc created
    
  3. Répertoriez vos réservations de volume persistant et vérifiez que le my-cos-pvc est à l'état Bound.

    NAME         STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                      AGE
    my-cos-pvc   Bound    pvc-64a4e0c9-b5ec-40e3-8b7e-77ff47ae6c5e   20Gi       RWO            ibmc-s3fs-standard-cross-region   6s
    
  4. Accédez à votre instance Object Storage dans la console et cliquez sur l'onglet Compartiments.

  5. Passez en revue les détails du compartiment créé automatiquement. Le nom du compartiment est au format tmp-s3fs-XXXX.

  6. Cliquez sur le compartiment tmp-s3fs-XXXX, puis sur l'onglet Configuration.

  7. Dans la page Configuration, recherchez la section Application des quotas. Notez que le compartiment a été créé automatiquement avec un quota égal à la taille que vous avez spécifiée dans la réservation de volume persistant. Dans cet exemple, la valeur était 20Gi.

Téléchargement d'un fichier dans votre compartiment

  1. Enregistrez la configuration Pod suivante dans un fichier appelé pod.yaml.

    apiVersion: v1
    kind: Pod
    metadata:
      name: cat-test-file
    spec:
      containers:
        - name: app
          image: nginx
          volumeMounts:
          - name: my-vol
            mountPath: "/mnt"
          command: ["/bin/sh"]
          args: ["-c", "cat mnt/pod.yaml && sleep 5 && exit"]
      volumes:
        - name: my-vol
          persistentVolumeClaim:
            claimName: my-cos-pvc
    
  2. Accédez à votre instance Object Storage dans la console et cliquez sur l'onglet Compartiments.

  3. Cliquez sur le compartiment tmp-s3fs-XXXX, puis sur Télécharger.

  4. Téléchargez le fichier pod.yaml que vous avez sauvegardé précédemment.

Création d'une application qui monte le compartiment

  1. Copiez la configuration de pod suivante et sauvegardez-la dans un fichier appelé pod.yaml. Cet exemple de pod monte le compartiment qui a été créé par la PVC my-cos-pvc et imprime le contenu du fichier pod.yaml que vous avez téléchargé précédemment.
    apiVersion: v1
    kind: Pod
    metadata:
      name: cat-test-file
    spec:
      containers:
        - name: app
          image: nginx
          volumeMounts:
          - name: my-vol
            mountPath: "/mnt"
          command: ["/bin/sh"]
          args: ["-c", "cat mnt/pod.yaml && sleep 5 && exit"]
      volumes:
        - name: my-vol
          persistentVolumeClaim:
            claimName: my-cos-pvc
    
  2. Créez le pod dans votre cluster.
    oc apply -f pod.yaml
    
    Exemple de sortie
    pod/cat-test-file created
    
  3. Obtenez les journaux du pod cat-test-file. Dans cet exemple, les journaux contiennent le contenu imprimé du fichier pod.yaml que vous avez téléchargé précédemment.
    apiVersion: v1
    kind: Pod
    metadata:
      name: cat-test-file
    spec:
      containers:
        - name: app
          image: nginx
          volumeMounts:
          - name: my-vol
            mountPath: "/mnt"
          command: ["/bin/sh"]
          args: ["-c", "cat mnt/pod.yaml && sleep 5 && exit"]
      volumes:
        - name: my-vol
          persistentVolumeClaim:
            claimName: my-cos-pvc
    

Réviser

Dans ce tutoriel, vous avez installé le plug-in Object Storage dans votre cluster et activé des quotas pour toutes les réservations de volume persistant créées avec le plug-in. Vous avez ensuite créé une réservation de volume persistant qui a créé dynamiquement un compartiment avec une limite de quota dans votre instance Object Storage. Après cela, vous avez déployé une application simple qui imprime le contenu d'un fichier dans votre compartiment.

Etapes suivantes