IBM Cloud Docs
Controlador CSI de almacenamiento en bloque de IBM Systems

Controlador CSI de almacenamiento en bloque de IBM Systems

El controlador CSI de Block Storage for Classic para IBM Cloud Satellite® se basa en un proyecto de código abierto de IBM y se integra en la orquestación de almacenamiento para contenedores de IBM. IBM La orquestación del almacenamiento para contenedores permite a las empresas implantar un moderno entorno híbrido multicloud impulsado por contenedores que puede reducir los costes de TI y mejorar la agilidad empresarial, sin dejar de obtener valor de los sistemas existentes.

Para obtener información completa sobre la versión, compatibilidad, instalación y uso, consulte la documentación del controlador CSI en Block Storage for Classic.

Los sistemas de almacenamiento de IBM admitidos para Satellite incluyen,

  • Familia IBM Spectrum Virtualize incluyendo los miembros de la familia IBM SAN Volume Controller (SVC) y IBM FlashSystem® compilados en IBM Spectrum® Virtualize (FlashSystem 5010, 5030, 5100, 5200, 7200, 9100, 9200, 9200R)
  • IBM FlashSystem A9000 y A9000R
  • Familia IBM DS8000

Para poder desplegar plantillas de almacenamiento en clústeres en su ubicación, asegúrese de configurar Satellite Config seleccionando la opción Habilitar acceso de administrador de clúster para Satellite Config en la consola o incluyendo la opción --enable-config-admin al crear el clúster.

No puede limitar el servicio de almacenamiento Satellite a los grupos de recursos. Sin embargo, si está delimitando otros recursos como, por ejemplo, la ubicación y el clúster con grupos de recursos, debe añadir el rol de administrador de enlaces y lector de Satellite para todos los recursos de la cuenta.

Requisitos previos para utilizar Block Storage for Classic

Asegúrese de cumplir todos los requisitos previos y de completar los pasos de instalación antes de asignar hosts a la ubicación. No cree un clúster de Kubernetes.

  1. Revise la documentación de compatibilidad y requisitos.

  2. Cree una ubicación de Satellite.

Creación y asignación de una configuración en la consola

  1. Consulte la referencia de parámetros.

  2. En la consola Ubicaciones, seleccione la ubicación en la que desea crear una configuración de almacenamiento.

  3. Seleccione Almacenamiento > Crear configuración de almacenamiento

  4. Especifique un nombre para la configuración.

  5. Seleccione el tipo de almacenamiento.

  6. Seleccione la versión y haga clic en Siguiente

  7. Si el Tipo de almacenamiento que ha seleccionado acepta parámetros personalizados, especifíquelos en la pestaña Parámetros.

  8. Si el Tipo de almacenamiento que ha seleccionado requiere secretos, especifíquelos en la pestaña Secretos.

  9. En la pestaña Clases de almacenamiento, revise las clases de almacenamiento desplegadas por la configuración o cree una clase de almacenamiento personalizada.

  10. En la pestaña Asignar al servicio, seleccione el servicio al que desea asignar la configuración.

  11. Pulse Completo para asignar la configuración de almacenamiento.

Creación de una configuración en la CLI

  1. Revise la referencia de parámetro para la versión de plantilla que desea utilizar.

  2. Inicie una sesión en la CLI de IBM Cloud.

    ibmcloud login
    
  3. Liste las ubicaciones de Satellite y apunte la columna Managed from.

    ibmcloud sat location ls
    
  4. Ponga como destino la región Managed from de la ubicación de Satellite. Por ejemplo, para wdc, ponga como destino us-east. Puede obtener información adicional consultando regiones de Satellite.

    ibmcloud target -r us-east
    
  5. Si utiliza un grupo de recursos distinto del default (predeterminado), póngalo como destino.

    ibmcloud target -g <resource-group>
    
  6. Copie uno de los siguientes mandatos de ejemplo para la versión de plantilla que desea utilizar. Para obtener más información sobre el mandato, consulte ibmcloud sat storage config create en la referencia de mandatos.

    Mandato de ejemplo para crear una configuración de la versión 1.10.0.

    ibmcloud sat storage config create --location LOCATION --name NAME --template-name ibm-system-storage-block-csi-driver --template-version 1.10.0 --param "namespace=NAMESPACE"
    

    Mandato de ejemplo para crear una configuración de la versión 1.11.1.

    ibmcloud sat storage config create --location LOCATION --name NAME --template-name ibm-system-storage-block-csi-driver --template-version 1.11.1 --param "namespace=NAMESPACE"
    

    Mandato de ejemplo para crear una configuración de la versión 1.11.2.

    ibmcloud sat storage config create --location LOCATION --name NAME --template-name ibm-system-storage-block-csi-driver --template-version 1.11.2 --param "namespace=NAMESPACE"  --param "secret-name=SECRET-NAME"  --param "secret-management-address=SECRET-MANAGEMENT-ADDRESS"  --param "secret-username=SECRET-USERNAME"  --param "secret-password=SECRET-PASSWORD"
    
  7. Personalice el mandato en función de los valores que desee utilizar.

  8. Ejecute el comando para crear una configuración.

  9. Compruebe que se ha creado la configuración.

    ibmcloud sat storage config get --config CONFIG
    

Creación de una configuración en la API

  1. Genere una clave de API y, a continuación, solicite una señal de renovación. Para obtener más información, consulte Generación de una señal de IAM de IBM Cloud utilizando una clave de API.

  2. Revise la referencia de parámetro para la versión de plantilla que desea utilizar.

  3. Copie una de las siguientes solicitudes de ejemplo y sustituya las variables que desea utilizar.

    Solicitud de ejemplo para crear una configuración de la versión 1.10.0.

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createStorageConfigurationByController" -H "accept: application/json" -H "Authorization: TOKEN" -H "Content-Type: application/json" -d "{ \"config-name\": \"string\", \"controller\": \"string\", \"storage-class-parameters\": [ { \"additionalProp1\": \"string\", \"additionalProp2\": \"string\", \"additionalProp3\": \"string\" } ], \"storage-template-name\": \"ibm-system-storage-block-csi-driver\", \"storage-template-version\": \"1.10.0\", \"update-assignments\": true, \"user-config-parameters\": { \"entry.name\": \"NAMESPACE\",\"user-secret-parameters\": }
    

    Solicitud de ejemplo para crear una configuración de la versión 1.11.1.

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createStorageConfigurationByController" -H "accept: application/json" -H "Authorization: TOKEN" -H "Content-Type: application/json" -d "{ \"config-name\": \"string\", \"controller\": \"string\", \"storage-class-parameters\": [ { \"additionalProp1\": \"string\", \"additionalProp2\": \"string\", \"additionalProp3\": \"string\" } ], \"storage-template-name\": \"ibm-system-storage-block-csi-driver\", \"storage-template-version\": \"1.11.1\", \"update-assignments\": true, \"user-config-parameters\": { \"entry.name\": \"NAMESPACE\",\"user-secret-parameters\": }
    

    Solicitud de ejemplo para crear una configuración de la versión 1.11.2.

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createStorageConfigurationByController" -H "accept: application/json" -H "Authorization: TOKEN" -H "Content-Type: application/json" -d "{ \"config-name\": \"string\", \"controller\": \"string\", \"storage-class-parameters\": [ { \"additionalProp1\": \"string\", \"additionalProp2\": \"string\", \"additionalProp3\": \"string\" } ], \"storage-template-name\": \"ibm-system-storage-block-csi-driver\", \"storage-template-version\": \"1.11.2\", \"update-assignments\": true, \"user-config-parameters\": { \"entry.name\": \"NAMESPACE\", { \"entry.name\": \"SECRET-NAME\",\"user-secret-parameters\": { \"entry.name\": \"SECRET-MANAGEMENT-ADDRESS\",{ \"entry.name\": \"SECRET-USERNAME\",{ \"entry.name\": \"SECRET-PASSWORD\",}
    

Creación de una asignación en la CLI

  1. Enumere sus configuraciones de almacenamiento y anote la configuración de almacenamiento que desea asignar a sus clústeres.

    ibmcloud sat storage config ls
    
  2. Obtenga el ID del clúster, grupo de clústeres o servicio al que desea asignar almacenamiento.

    Para asegurarse de que el clúster está registrado en Satellite Config, o para crear grupos, consulte Configuración de clústeres para su uso con Satellite Config.

    Mandato de ejemplo para listar grupos de clústeres.

    ibmcloud sat group ls
    

    Mandato de ejemplo para listar clústeres.

    ibmcloud oc cluster ls --provider satellite
    

    Mandato de ejemplo para listar los servicios de Satellite.

    ibmcloud sat service ls --location <location>
    
  3. Asigne la configuración de almacenamiento al clúster, grupo o servicio que ha recuperado anteriormente. Para más información, consulte el comando' ibmcloud sat storage assignment create '.

    Mandato de ejemplo para asignar una configuración a un grupo de clústeres.

    ibmcloud sat storage assignment create --group GROUP --config CONFIG --name NAME
    

    Mandato de ejemplo para asignar una configuración a un clúster.

    ibmcloud sat storage assignment create --cluster CLUSTER --config CONFIG --name NAME
    

    Mandato de ejemplo para asignar una configuración a un clúster de servicio.

    ibmcloud sat storage assignment create --service-cluster-id CLUSTER --config CONFIG --name NAME
    
  4. Verifique que la asignación se ha creado.

    ibmcloud sat storage assignment ls (--cluster CLUSTER | --config CONFIG | --location LOCATION | --service-cluster-id CLUSTER)
    

Creación de una asignación de almacenamiento en la API

  1. Copie una de las siguientes solicitudes de ejemplo.

    Solicitud de ejemplo para asignar una configuración de a un clúster.

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createAssignmentByCluster" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d "{ \"channelName\": \"CONFIGURATION-NAME\", \"cluster\": \"CLUSTER-ID\", \"controller\": \"LOCATION-ID\", \"name\": \"ASSIGNMENT-NAME\"}"
    

    Solicitud de ejemplo para asignar configuración a un grupo de clústeres.

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createAssignment" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d "{ \"channelName\": \"CONFIGURATION-NAME\", \"cluster\": \"string\", \"groups\": [ \"CLUSTER-GROUP\" ], \"name\": \"ASSIGNMENT-NAME\"}"
    
  2. Sustituya las variables por sus detalles y ejecute la solicitud.

  3. Verifique que la asignación se ha creado listando las asignaciones.

    curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignments" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
    

Actualización de asignaciones de almacenamiento en la consola

Puede utilizar la consola deSatellite para aplicar las últimas actualizaciones de parches a sus asignaciones.

  1. En la página Ubicaciones de la consola deSatellite, seleccione su ubicación.

  2. Pulse el separador Almacenamiento para ver las configuraciones.

  3. Haga clic en la configuración que desea actualizar.

  4. Pulse el icono Información (i) para aplicar la última revisión o parche.

  5. Opcional: habilite las actualizaciones de parches automáticas para la asignación de almacenamiento. La habilitación de las actualizaciones automáticas de parches garantiza que la asignación siempre tenga los últimos arreglos de seguridad.

Si habilita las actualizaciones automáticas de parches, debe seguir aplicando las actualizaciones principales manualmente.

Actualización manual de asignaciones en la CLI

Actualice una asignación para utilizar la última revisión de plantilla de almacenamiento.

  1. Liste las asignaciones de almacenamiento de Satellite, tome nota de la asignación de Satellite que desea actualizar.

    ibmcloud sat storage assignment ls
    
  2. Liste las plantillas de almacenamiento de Satellite para ver las últimas versiones disponibles.

    ibmcloud sat storage template ls
    
  3. Actualice la asignación de Satellite.

    Mandato de ejemplo para actualizar una asignación.

    ibmcloud sat storage assignment upgrade --assignment ASSIGNMENT
    

Habilitación de actualizaciones automáticas de parches para configuraciones y asignaciones en la CLI

Puede utilizar la CLI de sat storage assignment autopatch enable para habilitar las actualizaciones de parches automáticas para las asignaciones. La habilitación de actualizaciones automáticas de parches aplica automáticamente las revisiones de plantilla de almacenamiento (parches) más recientes. Debe seguir aplicando las actualizaciones principales manualmente.

  1. Obtener una lista de configuraciones de almacenamiento de Satellite. Anote el ID de configuración.

    ibmcloud sat storage assignment ls
    
  2. Ejecute uno de los siguientes mandatos de ejemplo para habilitar las actualizaciones de parches automáticas para la configuración y sus asignaciones asociadas. Introduzca el ID de configuración que recuperó en el paso anterior.

    Mandato de ejemplo para habilitar actualizaciones de parches automáticas para una asignación.

    ibmcloud sat storage assignment autopatch enable --config CONFIG  (--all | --assignment ASSIGNMENT-ID [--assignment ASSIGNMENT-ID])
    

    Mandato de ejemplo para habilitar actualizaciones de parches automáticas para todas las asignaciones de almacenamiento en una configuración determinada.

    ibmcloud sat storage assignment autopatch enable --config CONFIG --all
    

    Mandato de ejemplo para inhabilitar las actualizaciones de parches automáticas para todas las asignaciones en una configuración específica.

    ibmcloud sat storage assignment autopatch disable --config CONFIG --all
    

    Mandato de ejemplo para inhabilitar las actualizaciones de parches automáticas para una única asignación y una configuración específica.

    ibmcloud sat storage assignment autopatch disable --config CONFIG --assignment ASSIGNMENT-ID
    

    Mandato de ejemplo para inhabilitar las actualizaciones automáticas de parches para una asignación múltiple y una configuración específica.

    ibmcloud sat storage assignment autopatch disable --config CONFIG --assignment ASSIGNMENT-ID --assignment ASSIGNMENT-ID
    

Actualización de una configuración y asignaciones en la API

Puede utilizar la API de /v2/storage/satellite/updateAssignment para actualizar las asignaciones con nuevos clústeres o grupos de clústeres. Establezca updateConfigVersion en true para aplicar la actualización de revisión.

  1. Copie la siguiente solicitud de ejemplo y sustituya las variables para los grupos de clúster y las asignaciones que desea actualizar.

    curl -X PATCH "https://containers.cloud.ibm.com/global/v2/storage/satellite/updateAssignment" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d "{ \"groups\": [ \"CLUSTER-GROUPS\" ], \"name\": \"ASSIGNMENT-NAME\", \"updateConfigVersion\": true, \"uuid\": \"ASSIGNMENT-ID\"}"
    
  2. Ejecute la solicitud.

  3. Obtenga los detalles de la asignación para verificar la actualización.

    curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignment?uuid=ASSIGNMENT-ID" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
    

Habilitación de actualizaciones automáticas de parches para asignaciones en la API

Puede utilizar la API de /v2/storage/satellite/setAssignmentAutoupgrade para habilitar las actualizaciones de parches automáticas para las asignaciones. La habilitación de actualizaciones automáticas de parches aplica automáticamente las revisiones de plantilla de almacenamiento (parches) más recientes. Debe seguir aplicando las actualizaciones principales manualmente.

  1. Copie la siguiente solicitud de ejemplo y sustituya las variables para los grupos de clúster y las asignaciones que desea actualizar.

    curl -X PATCH "https://containers.cloud.ibm.com/global/v2/storage/satellite/setAssignmentAutoupgrade" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d { "config": "string", "controller": "string", "autopatch": boolean,"assignment" : { "all": boolean, "uuid": ["string", "string", ...], } }
    
  2. Ejecute la solicitud.

  3. Obtenga los detalles de la asignación para verificar la actualización.

    curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignment?uuid=ASSIGNMENT-ID" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
    

Despliegue de una aplicación que utiliza Block Storage for Classic

Puede utilizar ibm-system-storage-block-csi-driver para crear las PVC que podrá utilizar en las cargas de trabajo de clúster.

  1. Cree un archivo de configuración secreto Kubernetes que contenga sus credenciales Block Storage for Classic.
    kind: Secret
    apiVersion: v1
    metadata:
      name:  demo-secret
      namespace: default
    type: Opaque
    stringData:
      management_address: demo-management-address # Example: baremetal-cluster.xiv.ibm.com
      username: demo-username                     
    data:
      password: AAAA1AAA
    
  2. Cree el secreto en el clúster.
    oc apply -f <secret.yaml>
    
  3. Cree una clase de almacenamiento que utilice el controlador Block Storage for Classic.
    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: demo-storageclass
    provisioner: block.csi.ibm.com
    parameters:
      SpaceEfficiency: deduplicated   # Optional.
      pool: demo-pool
      csi.storage.k8s.io/provisioner-secret-name: demo-secret
      csi.storage.k8s.io/provisioner-secret-namespace: default
      csi.storage.k8s.io/controller-publish-secret-name: demo-secret
      csi.storage.k8s.io/controller-publish-secret-namespace: default
      csi.storage.k8s.io/controller-expand-secret-name: demo-secret
      csi.storage.k8s.io/controller-expand-secret-namespace: default
      csi.storage.k8s.io/fstype: xfs   # Optional. Values ext4\xfs. The default is ext4.
      volume_name_prefix: demoPVC      # Optional
    allowVolumeExpansion: true
    
  4. Cree una clase de almacenamiento en el clúster.
    oc apply -f sc.yaml
    
  5. Verifique que se ha creado la clase de almacenamiento.
    oc get sc
    
  6. Crea un PVC que haga referencia a la clase de almacenamiento que creaste anteriormente.
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: demo-pvc-file
    spec:
      volumeMode: Filesystem
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
      storageClassName: demo-storageclass
    
  7. Cree la PVC en el clúster.
    oc apply -f pvc.yaml
    
  8. Verifique que se ha creado la PVC y que su estado es Bound.
    oc get pvc
    
  9. Cree un archivo de configuración YAML para un conjunto con estado que monte la PVC que ha creado.
    kind: StatefulSet
    apiVersion: apps/v1
    metadata:
      name: demo-statefulset-file-system
    spec:
      selector:
        matchLabels:
          app: demo-statefulset
      serviceName: demo-statefulset
      replicas: 1
      template:
        metadata:
          labels:
            app: demo-statefulset
        spec:
          containers:
          - name: demo-container
            image: registry.access.redhat.com/ubi8/ubi:latest
            command: [ "/bin/sh", "-c", "--" ]
            args: [ "while true; do sleep 30; done;" ]
            volumeMounts:
              - name: demo-volume-file-system
                mountPath: "/data"
          volumes:
          - name: demo-volume-file-system
            persistentVolumeClaim:
              claimName: demo-pvc-file
    
  10. Cree el pod en el clúster.
    oc apply -f <stateful-set>.yaml
    
  11. Verifique que el pod se ha desplegado. Tenga en cuenta que puede tardar unos minutos en entrar en el estado Running.
    oc get pods
    
    Salida de ejemplo
    NAME                                READY   STATUS    RESTARTS   AGE
    demo-statefulset-file-system-0       1/1     Running   0          2m58s
    
  12. Verifique que la aplicación puede escribir en la instancia de IBM Block Storage.
    1. Inicie una sesión en el pod.
      oc exec demo-statefulset-file-system-0 -it bash
      
    2. Vaya al directorio /data, escriba el archivo test.txt y visualice el contenido de ese archivo test.txt para confirmar que la aplicación puede escribir datos en el almacenamiento persistente.
      cd data && echo "Testing" >> test.txt && cat test.txt
      
      Salida de ejemplo
      Testing
      
    3. Salga del pod.
      exit
      

Referencia de parámetros

Referencia de parámetro 1.10.0

Tabla 1. 1.10.0 referencia de parámetros
Nombre de visualización Opción de CLI Tipo Descripción Valor predeterminado
Espacio de nombres namespace Config Espacio de nombres donde se desea crear el despliegue. default

Referencia de parámetro 1.11.1

Tabla 2. 1.11.1 referencia de parámetros
Nombre de visualización Opción de CLI Tipo Descripción Valor predeterminado
Espacio de nombres namespace Config Espacio de nombres donde se desea crear el despliegue. default

Referencia de parámetro 1.11.2

Tabla 3. 1.11.2 referencia de parámetros
Nombre de visualización Opción de CLI Tipo Descripción Valor predeterminado
Espacio de nombres namespace Config Espacio de nombres donde se desea crear el despliegue. default
Nombre de secreto secret-name Config El nombre del secreto que se va a crear. N/D
Dirección de gestión de secretos secret-management-address Secreto La dirección del servidor de gestión. Podría ser una dirección IP o un URL. Por ejemplo: example-cluster.xiv.ibm.com. N/D
Nombre de usuario de secreto secret-username Secreto El nombre de usuario que se debe utilizar para autenticarse en el servidor de gestión. N/D
Contraseña de secreto secret-password Secreto La contraseña que se debe utilizar para autenticarse en el servidor de gestión. N/D

Cómo obtener ayuda y soporte para Block Storage for Classic

  1. Revise las preguntas más frecuentes en la documentación deBlock Storage for Classic.
  2. Revise la documentación de resolución de problemas para resolver problemas comunes.
  3. Compruebe el estado de la plataforma IBM Cloud y de los recursos accediendo a la página Estado.
  4. Revise Stack Overflow para ver si otros usuarios han experimentado el mismo problema. Etiquete las preguntas con ibm-cloud.
  5. Si se encuentra con un problema con Block Storage for Classic, envíe una solicitud de soporte con Soporte deIBM Cloud®.