Migration des applications et des données Block Storage for VPC entre les comptes IBM Cloud
Cloud privé virtuel
Dans ce tutoriel, vous allez migrer une application Block Storage for VPC et des données snapshot d'un cluster IBM Cloud Kubernetes Service dans un compte, vers un cluster Red Hat OpenShift on IBM Cloud dans un compte séparé.
Prérequis
Compte 1
Dans le compte 1, vous devez disposer des éléments suivants.
-
Un cluster IBM Cloud Kubernetes Service
-
Une application qui utilise Block Storage for VPC et un instantané des données de votre application. Pour plus d'informations, voir Configurer des instantanés avec le module complémentaire de cluster Block Storage for VPC
Compte 2
Dans le compte 2, le compte de destination vers lequel la migration doit être effectuée, vous devez disposer des éléments suivants.
- Un cluster Red Hat OpenShift on IBM Cloud.
Obtenez vos identifiants de compte
Compte 1 Compte 2
Pour chaque compte, obtenez vos identifiants de compte à partir de la page Paramètres du compte.
Définissez vos autorisations
Compte 1
Dans le compte 1, à partir de la page des autorisations IAM, donnez au compte l'accès aux instantanés deBlock Storage pour VPC.
- Dans le panneau Compte source, sélectionnez Compte spécifique, puis entrez l'ID du compte 2.
- Dans le panneau Service, sélectionnez Services d'infrastructure VPC.
- Dans le panneau Ressources, sélectionnez Ressources spécifiques, puis Snapshots deBlock Storage pour VPC.
- Facultatif Vous pouvez également étendre l'autorisation à un instantané spécifique ou à un groupe de ressources spécifique en ajoutant une condition.
Compte 2
Dans le compte 2, à partir de la page Utilisateurs IAM, donnez à l'utilisateur qui effectue ce tutoriel les autorisations de restaurateur de compte distant d'instantanés.
- Sélectionnez l'utilisateur auquel vous souhaitez attribuer les autorisations du restaurateur de compte à distance pour les instantanés.
- Dans l'onglet Accès, cliquez sur Attribuer un accès.
- Dans le champ Service, sélectionnez Services d'infrastructure VPC.
- Dans le champ Ressources, sélectionnez Ressources spécifiques, puis Type de ressource et Instantanés deBlock Storage pour VPC.
- Dans la section Rôles et actions, sélectionnez Snapshot Remote Account Restorer.
- Cliquez sur Ajouter, puis sur Attribuer pour terminer l'attribution de l'accès.
Optionnel : Déployer une application
Compte 1
Si vous n'avez pas encore d'application à migrer, vous pouvez déployer l'application d'exemple suivante.
-
Vérifiez que l'état de l'add-on est
normalet que le statut estReady.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) -
Vérifiez que les pods du pilote sont déployés et à l'état
Running.oc get pods -n kube-system | grep vpc-block-csiExemple de sortie
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 -
Créer 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 -
Vérifiez que le PVC est créé et qu'il est dans un état
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 -
Créez un fichier de configuration YAML pour un déploiement qui monte le PVC que vous avez créé.
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 -
Vérifiez que le pod fonctionne dans votre cluster.
oc get podsNAME READY STATUS RESTARTS AGE my-deployment-58dd7c89b6-8zdcl 1/1 Running 0 4m50s -
Maintenant que vous avez créé le module, connectez-vous au module et créez un fichier texte à utiliser pour l'instantané.
oc exec -it POD_NAME /bin/bashExemple de sortie
root@my-deployment-58dd7c89b6-8zdcl:/# cd myvolumepath/ root@my-deployment-58dd7c89b6-8zdcl:/myvolumepath# echo "hi" > new.txt root@my-deployment-58dd7c89b6-8zdcl:/myvolumepath# exit
Créer une image instantanée
Compte 1
Après avoir créé un déploiement et un PVC, vous pouvez créer les ressources de cliché instantané de volume.
Vous ne pouvez créer des instantanés que lorsqu'un volume est attaché à un module.
-
Créez une ressource d'instantané de volume dans votre cluster en utilisant la classe
ibmc-vpcblock-snapshotsnapshot qui est déployée lorsque vous avez activé le module complémentaire. Enregistrez la configuration de l'instantané de volume suivant dans un fichier appelésnapvol.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 -
Vérifiez que l'instantané est prêt à être utilisé et notez les
SNAPSHOTCONTENToc get volumesnapshotsExemple de sortie où
READYTOUSEesttrue.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
Obtenez les détails de votre cliché
Compte 1
-
Obtenez les détails de votre
volumesnapshotcontenten utilisant leSNAPSHOTCONTENTque vous avez trouvé à l'étape précédente.oc describe volumesnapshotcontent snapcontent-9c374fbf-43a6-48d6-afc5-e76e1ab7c12bExemple de sortie
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> -
Dans le résultat, notez les
Snapshot HandleDans cet exemple, il s'agit decrn:v1:staging:public:is:us-south:a/1152aa1c1ec54274ac42b8ad8507c90c::snapshot:r134-12f0bdb5-21e6-4e6b-8b5c-ce9a1b378ec5.
Restaurer l'instantané dans le compte 2
Compte 2
-
Créer une ressource
VolumeSnapshotContent. Enregistrez la configuration suivante dans un fichier appelévolsnapcontent.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 -
Créez le site
VolumeSnapshotContentdans votre cluster.oc apply -f volsnapcontent.yamlExemple de sortie
volumesnapshot.snapshot.storage.k8s.io/crossaccount-snapshot created -
Créer un
VolumeSnapshot. Enregistrez la configuration suivante dans un fichier appelévolsnap.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. -
Créez le site
VolumeSnapshotdans votre cluster.oc apply -f volsnap.yaml -
Créer un PVC. Enregistrer la configuration suivante dans un fichier appelé
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 -
Créez la PVC dans votre cluster.
oc apply -f pvc2.yaml
Redéployez votre application
Compte 2
-
Copiez l'exemple de déploiement suivant et enregistrez-le dans un fichier appelé
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 -
Vérifiez que le pod fonctionne dans votre cluster.
oc get podsNAME READY STATUS RESTARTS AGE my-deployment-58dd7c89b6-8zdcl 1/1 Running 0 4m50s
Poursuivre la migration de vos snapshots et applications vers le compte 2
Compte 2
Répétez ce tutoriel pour tous les snapshots et applications supplémentaires que vous souhaitez migrer d'un compte à l'autre.