Migración de aplicaciones y datos Block Storage for VPC entre cuentas de IBM Cloud
Nube privada virtual
En este tutorial, migrarás una Block Storage for VPC aplicación y datos de instantáneas de un IBM Cloud Kubernetes Service clúster en una cuenta, a un Red Hat OpenShift on IBM Cloud clúster en una cuenta separada.
Requisitos previos
Cuenta 1
En la Cuenta 1, debe tener lo siguiente.
-
Un clúster IBM Cloud Kubernetes Service.
-
Una aplicación que utiliza Block Storage for VPC y una instantánea de los datos de su aplicación. Para obtener más información, consulte Configuración de instantáneas con el complemento de clúster Block Storage for VPC.
Cuenta 2
En la Cuenta 2, la cuenta de destino a migrar, debe tener lo siguiente.
- Un clúster Red Hat OpenShift on IBM Cloud.
Obtenga sus ID de cuenta
Cuenta 1 Cuenta 2
Para cada cuenta, obtenga sus ID de cuenta de la página Configuración de la cuenta.
Configure sus permisos
Cuenta 1
En la Cuenta 1, desde la página de autorizaciones de IAM dé acceso a la cuenta a las Instantáneas deBlock Storage para VPC.
- En el panel Cuenta de origen, seleccione Cuenta específica e introduzca el ID de cuenta de la Cuenta 2.
- En el panel Servicio, seleccione Servicios de infraestructura VPC.
- En el panel Recursos, seleccione Recursos específicos y, a continuación, Instantáneas deBlock Storage para VPC.
- Opcional También puede ampliar la autorización a una instantánea específica o a un grupo de recursos específico añadiendo una condición.
Cuenta 2
En la Cuenta 2, desde la página Usuarios de IAM, otorgue al usuario que está completando este tutorial los permisos de Restaurador remoto de cuentas de instantáneas.
- Seleccione el usuario al que desea asignar los permisos del Restaurador remoto de cuentas de instantáneas.
- En la pestaña Acceso, haga clic en Asignar acceso.
- En el campo Servicio, seleccione Servicios de infraestructura VPC.
- En el campo Recursos, seleccione Recursos específicos y, a continuación, seleccione Tipo de recurso e Instantáneas deBlock Storage para VPC.
- En Roles y acciones, seleccione Restaurador de cuentas remotas de instantáneas.
- Haga clic en Añadir y, a continuación, en Asignar para terminar de asignar el acceso.
Opcional: Despliegue de una aplicación
Cuenta 1
Si aún no tiene una aplicación que migrar, puede desplegar la siguiente aplicación de ejemplo.
-
Compruebe que el estado del complemento es
normaly el estado esReady.ibmcloud oc cluster addon ls --cluster CLUSTER-IDName Version Health State Health Status vpc-block-csi-driver 5.0 normal Addon Ready. For more info: http://ibm.biz/addon-state (H1500) -
Verifique que los pods del controlador están desplegados y el estado es
Running.oc get pods -n kube-system | grep vpc-block-csiSalida de ejemplo
ibm-vpc-block-csi-controller-0 7/7 Running 0 77s ibm-vpc-block-csi-node-56c85 4/4 Running 0 77s ibm-vpc-block-csi-node-87j2t 4/4 Running 0 77s ibm-vpc-block-csi-node-cmh2h 4/4 Running 0 77s -
Crea un PVC.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: csi-block-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: ibmc-vpc-block-5iops-tieroc create -f pvc.yaml -
Comprueba que el PVC está creado y se encuentra en estado
Bound.oc get pvcNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE csi-block-pvc Bound pvc-0798b499-0b61-4f57-a184-4caeb7b9298d 10Gi RWO ibmc-vpc-block-5iops-tier 4m22s -
Crea un archivo de configuración YAML para un despliegue que monte el PVC que has creado.
apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment labels: app: my-deployment spec: replicas: 1 selector: matchLabels: app: my-deployment template: metadata: labels: app: my-deployment spec: containers: - image: nginx # Your containerized app image name: container-name volumeMounts: - mountPath: /myvolumepath # Mount path for PVC name: my-vol # Volume mount name volumes: - name: my-vol # Volume resource name persistentVolumeClaim: claimName: csi-block-pvc # The name of the PVC you created earlieroc create -f pod.yaml -
Compruebe que el pod se está ejecutando en su clúster.
oc get podsNAME READY STATUS RESTARTS AGE my-deployment-58dd7c89b6-8zdcl 1/1 Running 0 4m50s -
Ahora que ha creado el pod, inicie sesión en el pod y cree un archivo de texto para utilizarlo en la instantánea.
oc exec -it POD_NAME /bin/bashSalida de ejemplo
root@my-deployment-58dd7c89b6-8zdcl:/# cd myvolumepath/ root@my-deployment-58dd7c89b6-8zdcl:/myvolumepath# echo "hi" > new.txt root@my-deployment-58dd7c89b6-8zdcl:/myvolumepath# exit
Crear una instantánea
Cuenta 1
Después de crear una implantación y una PVC, puede crear los recursos de instantáneas de volumen.
Sólo se pueden crear instantáneas cuando un volumen está unido a un pod.
-
Cree un recurso de instantánea de volumen en su clúster utilizando la
ibmc-vpcblock-snapshotclase de instantánea que se despliega al activar el complemento. Guarde la siguiente configuración de instantáneas de volumen en un archivo llamadosnapvol.yaml.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: snapshot-csi-block-pvc spec: volumeSnapshotClassName: ibmc-vpcblock-snapshot source: persistentVolumeClaimName: csi-block-pvcoc create -f snapvol.yaml -
Comprueba que la instantánea está lista para su uso y toma nota del
SNAPSHOTCONTENT.oc get volumesnapshotsEjemplo de salida donde
READYTOUSEestrue.NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT RESTORESIZE SNAPSHOTCLASS SNAPSHOTCONTENT CREATIONTIME AGE ibmc-vpcblock-snapshot true csi-block-pvc 1Gi ibmc-vpcblock-snapshot snapcontent-9c374fbf-43a6-48d6-afc5-e76e1ab7c12b 18h 18h
Obtenga los detalles de su instantánea
Cuenta 1
-
Obtén los detalles de tu
volumesnapshotcontentutilizando elSNAPSHOTCONTENTque encontraste en el paso anterior.oc describe volumesnapshotcontent snapcontent-9c374fbf-43a6-48d6-afc5-e76e1ab7c12bSalida de ejemplo
Name: snapcontent-995f295b-6036-4d67-ab03-bba8557a0884 Namespace: Labels: <none> Annotations: <none> API Version: snapshot.storage.k8s.io/v1 Kind: VolumeSnapshotContent Metadata: Creation Timestamp: 2024-09-24T11:08:18Z Finalizers: snapshot.storage.kubernetes.io/volumesnapshotcontent-bound-protection Generation: 1 Managed Fields: API Version: snapshot.storage.k8s.io/v1 Fields Type: FieldsV1 fieldsV1: f:metadata: f:finalizers: .: v:"snapshot.storage.kubernetes.io/volumesnapshotcontent-bound-protection": f:spec: .: f:deletionPolicy: f:driver: f:source: .: f:volumeHandle: f:sourceVolumeMode: f:volumeSnapshotClassName: f:volumeSnapshotRef: Manager: snapshot-controller Operation: Update Time: 2024-09-24T11:08:18Z API Version: snapshot.storage.k8s.io/v1 Fields Type: FieldsV1 fieldsV1: f:status: .: f:creationTime: f:readyToUse: f:restoreSize: f:snapshotHandle: Manager: csi-snapshotter Operation: Update Subresource: status Time: 2024-09-24T11:08:43Z Resource Version: 1501448 UID: ad50aa42-8056-4264-9188-a13da3aaebca Spec: Deletion Policy: Delete Driver: vpc.block.csi.ibm.io Source: Volume Handle: r134-c7e32d5b-3a42-4d3e-b5e9-772b84566eaf Source Volume Mode: Filesystem Volume Snapshot Class Name: ibmc-vpcblock-snapshot-delete Volume Snapshot Ref: API Version: snapshot.storage.k8s.io/v1 Kind: VolumeSnapshot Name: new-snapshot-with-crn Namespace: default Resource Version: 1501308 UID: 995f295b-6036-4d67-ab03-bba8557a0884 Status: Creation Time: 1727176105000000000 Ready To Use: true Restore Size: 10737418240 Snapshot Handle: crn:v1:staging:public:is:us-south:a/1152aa1c1ec54274ac42b8ad8507c90c::snapshot:r134-12f0bdb5-21e6-4e6b-8b5c-ce9a1b378ec5 Events: <none> -
En la salida, anote el
Snapshot Handle. En este ejemplo, escrn:v1:staging:public:is:us-south:a/1152aa1c1ec54274ac42b8ad8507c90c::snapshot:r134-12f0bdb5-21e6-4e6b-8b5c-ce9a1b378ec5.
Restaurar la instantánea en la Cuenta 2
Cuenta 2
-
Cree un recurso
VolumeSnapshotContent. Guarde la siguiente configuración como un archivo llamadovolsnapcontent.yaml.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotContent metadata: name: crossaccount-snapshot-cnt spec: volumeSnapshotClassName: ibmc-vpcblock-snapshot-retain deletionPolicy: Retain driver: vpc.block.csi.ibm.io source: snapshotHandle: CRN # Enter the CRN of the snapshot you created earlier. For example crn:v1:public:is:us-south:a/8ee729d7f903db130b00257d91b6977f::snapshot:r134-64c3ad8e-786e-4f54-9b63-388615811ba6 volumeSnapshotRef: name: crossaccount-snapshot namespace: default -
Cree el sitio
VolumeSnapshotContenten su clúster.oc apply -f volsnapcontent.yamlSalida de ejemplo
volumesnapshot.snapshot.storage.k8s.io/crossaccount-snapshot created -
Crear un
VolumeSnapshot. Guarde la siguiente configuración como un archivo llamadovolsnap.yaml.kind: VolumeSnapshot metadata: name: crossaccount-snapshot namespace: default spec: volumeSnapshotClassName: ibmc-vpcblock-snapshot-retain source: volumeSnapshotContentName: crossaccount-snapshot-cnt # Enter the name of the VolumeSnapshotContent that you created in the previous step. -
Cree el sitio
VolumeSnapshoten su clúster.oc apply -f volsnap.yaml -
Crea un PVC. Guarde la siguiente configuración como un archivo llamado
pvc2.yamlapiVersion: v1 kind: PersistentVolumeClaim metadata: name: restore-cross-pvc spec: storageClassName: ibmc-vpc-block-5iops-tier dataSource: name: crossaccount-snapshot kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io accessModes: - ReadWriteOnce resources: requests: storage: 10Gi -
Cree la PVC en el clúster.
oc apply -f pvc2.yaml
Reimplanta tu aplicación
Cuenta 2
-
Copie el siguiente ejemplo de despliegue y guárdelo en un archivo llamado
dep2.yaml.apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment labels: app: my-deployment spec: replicas: 1 selector: matchLabels: app: my-deployment template: metadata: labels: app: my-deployment spec: containers: - image: nginx # Your containerized app image name: container-name volumeMounts: - mountPath: /myvolumepath # Mount path for PVC name: my-vol # Volume mount name volumes: - name: my-vol # Volume resource name persistentVolumeClaim: claimName: restore-cross-pvc # The name of the PVC you created earlieroc create -f dep2.yaml -
Compruebe que el pod se está ejecutando en su clúster.
oc get podsNAME READY STATUS RESTARTS AGE my-deployment-58dd7c89b6-8zdcl 1/1 Running 0 4m50s
Continúe migrando sus instantáneas y aplicaciones a la Cuenta 2
Cuenta 2
Repita este tutorial para las instantáneas y aplicaciones adicionales que desee migrar entre cuentas.