Controlador VMware Block Container Storage Interface (CSI)

VMware Container Storage Interface (CSI) Driver le permite gestionar el ciclo de vida de los volúmenes de datos de bloque de VMware.

Requisitos previos

Para poder crear una configuración de almacenamiento en bloque de VMware, debe cumplir los siguientes requisitos previos.

  1. Verifique que está ejecutando vSphere versión 6.7U3 o posterior.
  2. Verifique que la versión de hardware de la máquina virtual sea la versión 15 o posterior.
  3. Verifique que los nodos maestros se pueden comunicar con la interfaz de gestión de vCenter.
  4. Inhabilite el intercambio en todos los nodos.
  5. Habilite el UUID de disco en todas las máquinas virtuales de nodo.
  6. Despliegue vSAN en el entorno de vSphere. Para obtener más información, consulta la documentación de vSAN.

Antes de poder desplegar plantillas de almacenamiento en los clústeres de su ubicación, asegúrese de configurar Satellite Config seleccionando la opción Enable cluster admin access for Satellite Config en la consola o incluyendo la opción --enable-config-admin al crear el clúster.

No es posible asignar el servicio de almacenamiento Satellite a grupos de recursos. Sin embargo, si va a asignar otros recursos, como la ubicación y el clúster, a grupos de recursos, deberá añadir el lector Satellite y la función de administrador de enlaces para todos los recursos de la cuenta.

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

  1. Consulte la referencia de parámetros.

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

  3. Seleccione Almacenamiento > Crear configuración de almacenamiento

  4. Especifique un nombre para la configuración.

  5. Selecciona el tipo de almacenamiento.

  6. Selecciona la versión y haz 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 2.7.0.

    ibmcloud sat storage config create --location LOCATION --name NAME --template-name vsphere-csi-driver --template-version 2.7.0 --param "vcenter-username=VCENTER-USERNAME"  --param "vcenter-password=VCENTER-PASSWORD"  --param "insecure-flag=INSECURE-FLAG"  --param "host=HOST"  --param "datacenters=DATACENTERS"  --param "thumbprint=THUMBPRINT"
    
  7. Personalice el mandato en función de los valores que desee utilizar.

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

  9. Comprueba que se haya creado tu 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 2.7.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\": \"vsphere-csi-driver\", \"storage-template-version\": \"2.7.0\", \"update-assignments\": true, \"user-config-parameters\": { \"entry.name\": \"INSECURE-FLAG\", { \"entry.name\": \"HOST\", { \"entry.name\": \"DATACENTERS\",\"user-secret-parameters\": { \"entry.name\": \"VCENTER-USERNAME\",{ \"entry.name\": \"VCENTER-PASSWORD\",{ \"entry.name\": \"THUMBPRINT\",}
    

Creación de una tarea en la CLI

  1. Enumera tus configuraciones de almacenamiento y toma nota de la configuración de almacenamiento que deseas asignar a tus clústeres.

    ibmcloud sat storage config ls
    
  2. Obtenga el ID del clúster, del grupo de clústeres o del 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 obtener más información, consulta el. ibmcloud sat storage assignment createcomando

    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. Haz clic en la configuración que quieras 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. Anota 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. Introduce el ID de configuración que has obtenido 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"
    

Implementación de una aplicación que utiliza VMware

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

  1. Crea un PVC que haga referencia a la clase de almacenamiento que has creado anteriormente.

        kind: PersistentVolumeClaim
        apiVersion: v1
        metadata:
            name: podpvc
        spec:
            accessModes:
             - ReadWriteOnce
            storageClassName: sat-vsphere-vsan-block-metro
            resources:
                requests:
                storage: 10Gi
    
  2. Cree la PVC en el clúster.

    oc apply -f podpvc.yaml
    
  3. Cree un archivo de configuración de YAML para un pod que monte la PVC que ha creado.

        apiVersion: v1
        kind: Pod
        metadata:
        name: web-server
        spec:
        containers:
        - name: #web-server
            image: nginx
            command:
                - "/bin/sh"
                - "-c"
                - while true; do echo $(date) >> /mnt/vmwaredisk/outfile; sleep 1; done
            volumeMounts:
             mountPath:  /mnt/vmwaredisk
                name: mypvc
        volumes:
        - name: mypvc
            persistentVolumeClaim:
            claimName: podpvc
            readOnly: false
    
  4. Cree el pod en el clúster.

    oc apply -f mypvc.yaml
    
  5. Verifique que el pod se ha desplegado. Ten en cuenta que la aplicación puede tardar unos minutos en alcanzar un estado Running determinado.

    oc get pods
    
    NAME                                READY   STATUS    RESTARTS   AGE
    my-pvc                              1/1     Running   0          2m58s
    
  6. Verifique que la aplicación puede grabar en el volumen de almacenamiento de bloques iniciando sesión en el pod.

    oc exec -it web-server /bin/bash
    
  7. Visualice el contenido del archivo outfile para confirmar que la aplicación puede escribir datos en el almacenamiento persistente.

    cat outfile
    

    Salida de ejemplo

    Fri Jul 16 07:49:39 EDT 2021
    Fri Jul 16 07:49:39 EDT 2021
    Fri Jul 16 07:49:39 EDT 2021
    
  8. Salga del pod.

    exit
    

Eliminación del almacenamiento de VMware de tus aplicaciones

Si ya no necesitas tu configuración de VMware, puedes eliminar tus aplicaciones, PVC, PV y asignaciones de tus clústeres.

  1. Obtenga una lista de sus PVC y anote el nombre de la PVC que desea eliminar.

    oc get pvc
    
  2. Elimine los pods que montan la PVC.

    1. Obtenga una lista de todos los pods que actualmente montan la PVC que desea suprimir. Si no se devuelve ningún pod, significa que no tiene ningún pod que utilice actualmente la PVC.
        oc get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.volumes[*]}{.persistentVolumeClaim.claimName}{" "}{end}{end}' | grep "<pvc_name>"
        ```
        Salida de ejemplo
    
        ```sh {: screen}
        NAME         READY   STATUS    RESTARTS   AGE
        web-server   1/1     Running   0          55s
        ```
    1. Elimine el pod que utiliza la PVC. Si el pod forma parte de un despliegue o de un statefulset, elimine el despliegue o el statefulset.
    
    ```sh {: pre}
        oc delete pod <pod_name>
        ```
        ```sh {: pre}
        oc delete deployment <deployment_name>
        ```
        ```sh {: pre}
        oc delete statefulset <statefulset_name>
        ```
    1. Verifique que se ha eliminado el pod, el despliegue o el statefulset.
    
    ```sh {: pre}
        oc get pods
        ```
        ```sh {: pre}
        oc get deployments
        ```
        ```sh {: pre}
        oc get statefulset
        ```
    
  3. Suprima la PVC.

    oc delete pvc <pvc_name>
    
  4. Verifique que el PV se ha eliminado automáticamente.

    oc get pv
    

Eliminación de la configuración de almacenamiento VMware de tu clúster

Si ya no tiene previsto utilizar VMware en su clúster, puede utilizar la CLI para desasignar su clúster de la configuración de almacenamiento.

Al eliminar la configuración de almacenamiento, se elimina el controlador de todos los clústeres asignados. Las PVC, los PV y los datos no se eliminan. Sin embargo, no podrás acceder a tus datos hasta que vuelvas a instalar el controlador en tu clúster.

Eliminación de la configuración de almacenamiento de VMware mediante la consola

  1. En el panel de control de almacenamiento de Satellite, seleccione la configuración de almacenamiento que desea suprimir.
  2. Seleccione Acciones > Suprimir
  3. Especifique el nombre de la configuración de almacenamiento.
  4. Seleccione Suprimir.

Eliminación de la configuración de almacenamiento de VMWare utilizando la línea de mandatos

  1. Obtenga una lista de las asignaciones de almacenamiento y busque la que ha utilizado para el clúster.

    ibmcloud sat storage assignment ls (--cluster CLUSTER | --config CONFIG | --location LOCATION | --service-cluster-id CLUSTER)
    
  2. Elimine la asignación. Una vez eliminada la asignación, se eliminan los pods de controlador y las clases de almacenamiento de todos los clústeres que formaban parte de dicha asignación de almacenamiento.

    ibmcloud sat storage assignment rm --assignment <assignment_ID>
    
  3. Compruebe que el controlador se ha eliminado del clúster.

    1. Liste las clases de almacenamiento del clúster y compruebe que se han eliminado las clases de almacenamiento.
        oc get sc
        ```
    2. Liste los pods en el espacio de nombres `kube-system` y compruebe que se han eliminado los pods del controlador de almacenamiento.
    
    ```sh {: pre}
        oc get pods -n kube-system | grep vsphere
        ```
    
  4. Opcional: elimine la configuración de almacenamiento.

    1. Obtenga una lista de las configuraciones de almacenamiento.
        ibmcloud sat storage config ls
        ```
    2. Elimine la configuración de almacenamiento.
    
    ```sh {: pre}
        ibmcloud sat storage config rm --config <config_name>
        ```
    
    
    

Referencia de parámetros

Referencia de parámetros 2.7.0

Tabla 1. Referencia de parámetros de « 2.7.0 »
Nombre de visualización Opción de CLI Tipo Descripción Valor predeterminado
Nombre de usuario de vCenter vcenter-username Secreto Nombre de usuario de vCenter. Hay que especificar el nombre de usuario junto con el nombre de dominio. Por ejemplo: 'Administrador@vsphere.local'. N/D
Contraseña de vCenter vcenter-password Secreto Contraseña de usuario del servidor vCenter. N/D
Conexión no segura insecure-flag Config Incluir el 'insecure-flag'. 'true' indica que desea incluir la bandera, que utiliza certificado autofirmado para el inicio de sesión. 'false' indica que utiliza una conexión segura. Si selecciona 'false', tendrá que proporcionar un certificado de huella SSL. false
Host de vCenter host Config Dirección IP del servidor vCenter. N/D
Centros de datos de vCenter datacenters Config Listar todas las rutas de centro de datos donde haya máquinas virtuales de host, separadas por comas. Proporcionar el nombre del centro de datos cuando se encuentre en la raíz. Cuando se coloca en la carpeta, hay que especificar la ruta en el formato carpeta/nombre-centro-datos N/D
Huella digital del certificado SSL thumbprint Secreto Certificado de huella SSL que se usa para establecer una conexión segura con VC. N/D

Cómo obtener ayuda y asistencia para VMware

Si se encuentra con un problema con VMware, envíe una solicitud de soporte con VMware Support.