Impostazione delle quote di capacità per le applicazioni che utilizzano IBM Cloud Object Storage

Virtual Private Cloud Infrastruttura classica

Con IBM Cloud Object Storage è possibile effettuare il provisioning dinamico dei bucket per le applicazioni in esecuzione nei cluster Red Hat OpenShift on IBM Cloud. È inoltre possibile impostare dinamicamente le quote di capacità su tali bucket durante il provisioning. Le quote possono aiutarti a gestire le risorse che i tuoi carichi di lavoro utilizzano, evitando anche addebiti non necessari.

Obiettivi

In questa esercitazione, installa il plug-in Object Storage nel tuo cluster e abilita le quote per tutte le attestazioni del volume persistente (o PVC, persistent volume claim) create con il plug - in.

Quindi, crea una PVC che crea dinamicamente un bucket con un limite di quota nella tua istanza Object Storage.

Dopo di che, carichi un file nel tuo bucket e distribuisci un'applicazione semplice nel cluster che monta il bucket e stampa il contenuto di quel file.

Prerequisiti

Prima di iniziare questa esercitazione, assicuratevi di aver creato o installato le risorse e gli strumenti seguenti.

Creazione di un set di credenziali di servizio

  1. Segui la procedura per creare una serie di credenziali del servizio HMAC per la tua istanza Object Storage. Nota che le credenziali che crei devono avere il ruolo di Gestore per creare i bucket.

  2. Dopo aver creato una serie di credenziali del servizio HMAC, esamina i dettagli delle tue credenziali e prendi nota di apikey, access_key_id e secret_access_key. Salvare questi valori per il passo successivo.

Creare un segreto per memorizzare le credenziali

  1. Crea un segreto utilizzando apikey, access_key_id e secret_access_key dalle credenziali del servizio.
    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
    
    Output di esempio
    secret/my-cos-secret created
    
  2. Verificare che il segreto sia stato creato.
    oc get secrets | grep my-cos
    
    Output di esempio
    my-cos-secret              ibm/ibmc-s3fs                         3      11m
    

Installazione del plug-in

Quando si installa il plug-in nel cluster, assicurarsi di specificare l'opzione --set quotaLimit=true. Se si specifica questa opzione, tutti i bucket creati con le PVC hanno un limite di quota uguale alla dimensione di archiviazione nella PVC.

  1. Attieniti alla procedura per installare il plug-in e attivare i limiti di quota. Se hai già installato il plug-in nel tuo cluster, puoi saltare questo passo. Per vedere se il plug-in è già installato, seguire il passo successivo.

  2. Verificare che il plug-in sia installato elencando i pod del driver.

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

    Output di esempio

    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
    

Provisioning dinamico di un bucket con una quota

Puoi utilizzare il provisioning dinamico per creare automaticamente un bucket Object Storage quando crei una PVC.

  1. Copiare la seguente configurazione PVC e salvarla in un file denominato pvc.yaml. Questa PVC di esempio crea automaticamente un bucket con una quota uguale a 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. Crea la PVC nel tuo cluster.

    oc apply -f pvc.yaml
    

    Output di esempio

    persistentvolumeclaim/my-cos-pvc created
    
  3. Elencare le PVC e verificare che my-cos-pvc si trovi nello stato 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. Vai alla tua istanza Object Storage nella console e fai clic sulla scheda Buckets.

  5. Esaminare i dettagli del bucket creato automaticamente. Il nome bucket è nel formato tmp-s3fs-XXXX.

  6. Fai clic sul bucket tmp-s3fs-XXXX, quindi fai clic sulla scheda Configurazione.

  7. Nella pagina Configurazione, cercare la sezione Applicazione quota. Nota che il bucket è stato creato automaticamente con una quota uguale a quella che hai specificato nella PVC. In questo esempio, il valore era 20Gi.

Caricamento di un file nel bucket

  1. Salvare la seguente configurazione pod in un file denominato 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. Vai alla tua istanza Object Storage nella console e fai clic sulla scheda Buckets.

  3. Fai clic sul bucket tmp-s3fs-XXXX, quindi su Upload.

  4. Caricare il file pod.yaml salvato in precedenza.

Creazione di un'applicazione che monta il bucket

  1. Copiare la seguente configurazione pod e salvarla in un file denominato pod.yaml. Questo pod di esempio monta il bucket creato dalla PVC my-cos-pvc e stampa il contenuto del file pod.yaml che hai caricato in precedenza.
    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. Creare il pod nel cluster.
    oc apply -f pod.yaml
    
    Output di esempio
    pod/cat-test-file created
    
  3. Ottieni i log del pod cat-test-file. In questo esempio, i log contengono il contenuto stampato del file pod.yaml caricato in precedenza.
    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
    

Riesamina

In questa esercitazione, hai installato il plug-in Object Storage nel tuo cluster e hai abilitato le quote per qualsiasi PVC creato con il plug - in. Quindi, hai creato una PVC che ha creato dinamicamente un bucket con un limite di quota nella tua istanza Object Storage. Dopodiché, hai distribuito una semplice applicazione che stampa il contenuto di un file nel bucket.

Passi successivi