Establecimiento de cuotas de capacidad para apps que utilizan IBM Cloud Object Storage

Nube privada virtual Infraestructura clásica

Con IBM Cloud Object Storage, puede aprovisionar dinámicamente cubos para las aplicaciones que se ejecutan en sus clústeres de Red Hat OpenShift on IBM Cloud. También puede establecer dinámicamente cuotas de capacidad en esos grupos durante el suministro. Las cuotas pueden ayudarle a gestionar los recursos que utilizan sus cargas de trabajo, evitando al mismo tiempo cargos innecesarios.

Objetivos

En esta guía de aprendizaje, instala el plugin Object Storage en el clúster y habilita las cuotas para cualquier reclamación de volumen persistente (PVC) creada con el plugin.

A continuación, cree una PVC que cree dinámicamente un grupo con un límite de cuota en la instancia de Object Storage.

Después, cargue un archivo en el grupo y despliegue una app simple en el clúster que monte el grupo e imprima el contenido de dicho archivo.

Requisitos previos

Antes de comenzar este tutorial, asegúrese de haber creado o instalado los siguientes recursos y herramientas.

  • Una cuenta de IBM Cloud. Para obtener más información, consulte Creación de una cuenta.
  • Las herramientas de CLI que incluyen la CLI de IBM Cloud, el plugin de CLI del servicio de contenedores y la CLI de Helm. Para obtener más información, consulte Iniciación a la CLI de IBM Cloud.
  • Un clúster Red Hat OpenShift on IBM Cloud. Si tiene un clúster VPC, asegúrese de que su VPC tiene una puerta de enlace pública conectada. Para obtener más información, consulte Creación de clústeres
  • Una instancia de Object Storage en la misma región que el clúster. Para obtener más información, consulte Suministrar una instancia de Object Storage.

Creación de un conjunto de credenciales de servicio

  1. Siga los pasos para crear un conjunto de credenciales de servicio HMAC para la instancia de Object Storage. Tenga en cuenta que las credenciales que cree deben tener el rol Gestor para crear grupos.

  2. Después de crear un conjunto de credenciales de servicio HMAC, revise los detalles de las credenciales y anote apikey, access_key_id y secret_access_key. Guarde estos valores para el paso siguiente.

Crear un secreto para almacenar sus credenciales

  1. Cree un secreto utilizando apikey, access_key_id y secret_access_key a partir de las credenciales de servicio.
    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
    
    Salida de ejemplo
    secret/my-cos-secret created
    
  2. Verifica que se ha creado el secreto.
    oc get secrets | grep my-cos
    
    Salida de ejemplo
    my-cos-secret              ibm/ibmc-s3fs                         3      11m
    

Instalación del complemento

Cuando instale el plugin en el clúster, asegúrese de especificar la opción --set quotaLimit=true. Especificar esta opción significa que los grupos que cree con PVC tienen un límite de cuota igual al tamaño de almacenamiento en la PVC.

  1. Siga los pasos para instalar el plugin y habilitar los límites de cuota. Si ya ha instalado el plugin en el clúster, puede omitir este paso. Para ver si el plugin ya está instalado, siga el paso siguiente.

  2. Verifique que el plugin está instalado listando los pods de controlador.

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

    Salida de ejemplo

    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
    

Suministro dinámico de un grupo con una cuota

Puede utilizar el suministro dinámico para crear automáticamente un grupo Object Storage al crear una PVC.

  1. Copie la siguiente configuración de PVC y guárdela en un archivo denominado pvc.yaml. Esta PVC de ejemplo crea automáticamente un grupo con una cuota igual 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. Cree la PVC en el clúster.

    oc apply -f pvc.yaml
    

    Salida de ejemplo

    persistentvolumeclaim/my-cos-pvc created
    
  3. Liste las PVC y verifique que el my-cos-pvc está en el estado 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. Vaya a la instancia de Object Storage en la consola y pulse el separador Grupos.

  5. Revise los detalles del grupo creado automáticamente. El nombre de grupo tiene el formato tmp-s3fs-XXXX.

  6. Pulse el grupo tmp-s3fs-XXXX y, a continuación, pulse la pestaña Configuración.

  7. En la página Configuración, busque la sección Imposición de cuota. Tenga en cuenta que el grupo se ha creado automáticamente con una cuota igual al tamaño que ha especificado en la PVC. En este ejemplo, el valor era 20Gi.

Carga de un archivo en el grupo

  1. Guarde la siguiente configuración del Pod en un archivo llamado 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. Vaya a la instancia de Object Storage en la consola y pulse el separador Grupos.

  3. Pulse el grupo tmp-s3fs-XXXX y, a continuación, pulse Cargar.

  4. Cargue el archivo pod.yaml que ha guardado anteriormente.

Creación de una app que monta el grupo

  1. Copie la siguiente configuración de pod y guárdela en un archivo denominado pod.yaml. Este pod de ejemplo monta el grupo creado por la PVC de my-cos-pvc e imprime el contenido del archivo pod.yaml que ha cargado anteriormente.
    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. Cree el pod en el clúster.
    oc apply -f pod.yaml
    
    Salida de ejemplo
    pod/cat-test-file created
    
  3. Obtenga los registros del pod cat-test-file. En este ejemplo, los registros contienen el contenido impreso del archivo pod.yaml que ha cargado anteriormente.
    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
    

Revisar

En esta guía de aprendizaje, ha instalado el plug-in Object Storage en el clúster y ha habilitado las cuotas para las PVC creadas con el plug-in. A continuación, ha creado una PVC que ha creado dinámicamente un grupo con un límite de cuota en la instancia de Object Storage. Después de eso, ha desplegado una app simple que imprime el contenido de un archivo en el grupo.

Próximos pasos