Migration des applications et des données de Cloud Object Storage (COS) entre les comptes IBM Cloud
Infrastructure classique Cloud privé virtuel
Dans ce tutoriel, vous allez migrer une application et des données COS d'un IBM Cloud Kubernetes Service cluster dans un compte, vers un Red Hat OpenShift on IBM Cloud cluster dans un compte séparé.
Prérequis
Compte 1
Dans le compte 1, vous devez disposer des éléments suivants.
-
Un IBM Cloud Kubernetes Service cluster.
-
Une instance de COS et un ensemble d'informations d'identification HMAC. Pour plus d'informations, voir Identifiants de service.
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 Red Hat OpenShift on IBM Cloud cluster.
-
Une instance de COS et un ensemble d'informations d'identification HMAC. Pour plus d'informations, voir Identifiants de service.
-
Un seau vide dans votre instance COS.
Facultatif : déployer une application dans votre cluster
Compte 1
Si vous n'avez pas encore d'application à migrer, vous pouvez déployer l'application d'exemple suivante.
-
Créez un PVC qui fait référence à votre configuration de stockage d'objets.
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: demo #Enter a name for your PVC. namespace: default annotations: ibm.io/auto-create-bucket: "true" ibm.io/auto-delete-bucket: "false" ibm.io/secret-name: SECRET-NAME #Enter the name of the secret you created earlier. ibm.io/secret-namespace: NAMESPACE #Enter the namespace where you want to create the PVC. spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: ibmc-s3fs-cos #The storage class that you want to use. -
Créez la PVC dans votre cluster.
oc apply -f pvc-cos.yaml -
Créez un fichier de configuration YAML pour un pod qui monte le PVC que vous créez.
apiVersion: v1 kind: Pod metadata: name: demo-pod namespace: default spec: securityContext: runAsUser: 2000 fsGroup: 2000 volumes: - name: demo-vol persistentVolumeClaim: claimName: demo containers: - name: test image: nginxinc/nginx-unprivileged imagePullPolicy: Always volumeMounts: - name: demo-vol mountPath: /mnt/cosvol -
Créez le pod dans votre cluster.
oc apply -f demo-pod.yaml -
Vérifiez que le pod est déployé. Il peut s'écouler quelques minutes avant que votre application ne passe à l'état
Running.oc get podsNAME READY STATUS RESTARTS AGE demo-pod 1/1 Running 0 2m58s -
Vérifiez que l'application peut écrire dans votre volume de stockage de bloc en vous connectant à votre pod.
oc exec demo-pod -- bash -c "ls /mnt/cosvol"
Obtenez les détails de votre application
Compte 1
- Dresser la liste des pods et des PVC.
oc get pods - Décrivez votre PVC, passez en revue les détails et notez le nom du seau.
oc describe PVC -o yaml
Installer rclone
Suivez la rclone documentation pour les étapes d'installation.
Configurez " rclone pour votre seau dans le compte 1
Compte 1
Après avoir installé rclone, vous devez générer un fichier de configuration qui définit l'instance de COS à partir de laquelle vous souhaitez migrer des données.
-
Exécutez la commande
rclone config.rclone configExemple de sortie
2020/01/16 09:39:33 NOTICE: Config file "/Users/ryan/.config/rclone/rclone.conf" not found - using defaults No remotes found - make a new one n) New remote s) Set configuration password q) Quit config -
Entrer
npour configurer une nouvelle télécommande, puis donnez un nom à votre télécommande.n/s/q> nExemple de nom distant
name> cos-instance-1 -
Dans la liste des fournisseurs, sélectionnez
Amazon S3 Compliant Storage Providerqui comprendIBM COS.Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value 1 / 1Fichier \ "fichier" 2 / Alias for an existing remote \ "alias" 3 / Amazon Drive \ "amazon cloud drive" 4 / Amazon S3 Compliant Storage Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, etc) \ "s3" 5 / Backblaze B2 \ "b2" ... provider> 4 -
Sélectionnez
IBM COScomme s3 fournisseur.Choose your S3 provider. Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value 1 / Amazon Web Services (AWS) S3 \ "AWS" 2 / Alibaba Cloud Object Storage System (OSS) formerly Aliyun \ "Alibaba" 3 / Ceph Object Storage \ "Ceph" 4 / Digital Ocean Spaces \ "DigitalOcean" 5 / Dreamhost DreamObjects \ "Dreamhost" 6 / IBM COS S3 \ "IBMCOS" 7 / Minio Object Storage \ "Minio" 8 / Netease Object Storage (NOS) \ "Netease" 9 / Wasabi Object Storage \ "Wasabi" 10 / Any other S3 compatible provider \ "Other" -
Ajoutez vos informations d'identification COS en sélectionnant l'option
1.Option env_auth. Get AWS credentials from runtime (environment variables or EC2/ECS meta data if no env vars). Only applies if access_key_id and secret_access_key is blank. Choose a number from below, or type in your own boolean value (true or false). Press Enter for the default (false). 1 / Enter AWS credentials in the next step. \ (false) 2 / Get AWS credentials from the environment (env vars or IAM). \ (true) env_auth> 1 -
Lorsque vous y êtes invité, fournissez le
access_key_idetsecret_access_keyde votre instance COS. Pour plus d'informations, voir Identifiants de service.AWS Access Key ID. Leave blank for anonymous access or runtime credentials. Enter a string value. Press Enter for the default (""). access_key_id> xxxxxxxxxxxxxxxxxxxxx AWS Secret Access Key (password) Leave blank for anonymous access or runtime credentials. Enter a string value. Press Enter for the default (""). secret_access_key> xxxxxxxxxxxxxxxxxxxxxxxxxxxxx -
Dans le
Region to connect toinvite, sélectionnez l'option1.Region to connect to. Leave blank if you are using an S3 clone and you don't have a region. Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value 1 / Use this if unsure. Will use v4 signatures and an empty region. \ "" 2 / Use this only if v4 signatures don't work, eg pre Jewel/v10 CEPH. \ "other-v2-signature" region> 1 -
Dans le
Endpoint for IBM COS S3 APIinvite, sélectionnez l'option1.Endpoint for IBM COS S3 API. Specify if using an IBM COS On Premise. Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value 1 / US Cross Region Endpoint \ "s3-api.us-geo.objectstorage.softlayer.net" 2 / US Cross Region Dallas Endpoint \ "s3-api.dal.us-geo.objectstorage.softlayer.net" 3 / US Cross Region Washington DC Endpoint \ "s3-api.wdc-us-geo.objectstorage.softlayer.net" ... endpoint> 1 -
Dans le
Location constraintinvite, appuyez sur Retour pour utiliser la valeur par défaut.Location constraint - must match endpoint when using IBM Cloud Public. For on-prem COS, do not make a selection from this list, hit enter Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value 1 / US Cross Region Standard \ "us-standard" 2 / US Cross Region Vault \ "us-vault" 3 / US Cross Region Cold \ "us-cold" 4 / US Cross Region Flex \ "us-flex" ... -
Dans l'invite de stratégie ACL, sélectionnez
private.Note that this ACL is applied when server side copying objects as S3 doesn't copy the ACL from the source but rather writes a fresh one. Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value 1 / Owner gets FULL_CONTROL. No one else has access rights (default). This acl is available on IBM Cloud (Infra), IBM Cloud (Storage), On-Premise COS \ "private" 2 / Owner gets FULL_CONTROL. The AllUsers group gets READ access. This acl is available on IBM Cloud (Infra), IBM Cloud (Storage), On-Premise IBM COS \ "public-read" 3 / Owner gets FULL_CONTROL. The AllUsers group gets READ and WRITE access. This acl is available on IBM Cloud (Infra), On-Premise IBM COS \ "public-read-write" 4 / Owner gets FULL_CONTROL. The AuthenticatedUsers group gets READ access. Not supported on Buckets. This acl is available on IBM Cloud (Infra) and On-Premise IBM COS \ "authenticated-read" acl> 1 -
Ignorez l’option de configuration avancée et confirmez votre configuration.
Edit advanced config? (y/n) y) Yes n) No y/n> n Remote config -------------------- [cos-instance-1] type = s3 provider = IBMCOS env_auth = false access_key_id = xxxxxx secret_access_key = xxxxxxxxx endpoint = s3-api.us-geo.objectstorage.softlayer.net location_constraint = us-standard acl = private -------------------- y) Yes this is OK e) Edit this remote d) Delete this remote y/e/d> y Current remotes: Name Type ==== ==== cos-instance-1 s3 -
Répétez les étapes précédentes pour ajouter l'instance COS à votre deuxième compte. Lorsque vous avez vérifié les informations, appuyez sur
qpour quitter le processus de configuration.
Configurez " rclone pour votre seau dans le compte 2
Compte 2
Répétez les étapes pour configurer rclone pour le compte 2.
-
Exécutez la commande
rclone config.rclone configExemple de sortie
2020/01/16 09:39:33 NOTICE: Config file "/Users/ryan/.config/rclone/rclone.conf" not found - using defaults No remotes found - make a new one n) New remote s) Set configuration password q) Quit config -
Entrer
npour configurer une nouvelle télécommande, puis donnez un nom à votre télécommande.n/s/q> nExemple de nom distant
name> cos-instance-2 -
Dans la liste des fournisseurs, sélectionnez
Amazon S3 Compliant Storage Providerqui comprendIBM COS.Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value 1 / 1Fichier \ "fichier" 2 / Alias for an existing remote \ "alias" 3 / Amazon Drive \ "amazon cloud drive" 4 / Amazon S3 Compliant Storage Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, etc) \ "s3" 5 / Backblaze B2 \ "b2" ... provider> 4 -
Sélectionnez
IBM COScomme s3 fournisseur.Choose your S3 provider. Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value 1 / Amazon Web Services (AWS) S3 \ "AWS" 2 / Alibaba Cloud Object Storage System (OSS) formerly Aliyun \ "Alibaba" 3 / Ceph Object Storage \ "Ceph" 4 / Digital Ocean Spaces \ "DigitalOcean" 5 / Dreamhost DreamObjects \ "Dreamhost" 6 / IBM COS S3 \ "IBMCOS" 7 / Minio Object Storage \ "Minio" 8 / Netease Object Storage (NOS) \ "Netease" 9 / Wasabi Object Storage \ "Wasabi" 10 / Any other S3 compatible provider \ "Other" -
Ajoutez vos informations d'identification COS en sélectionnant l'option
1.Option env_auth. Get AWS credentials from runtime (environment variables or EC2/ECS meta data if no env vars). Only applies if access_key_id and secret_access_key is blank. Choose a number from below, or type in your own boolean value (true or false). Press Enter for the default (false). 1 / Enter AWS credentials in the next step. \ (false) 2 / Get AWS credentials from the environment (env vars or IAM). \ (true) env_auth> 1 -
Lorsque vous y êtes invité, fournissez le
access_key_idetsecret_access_keyde votre instance COS. Pour plus d'informations, voir Identifiants de service.AWS Access Key ID. Leave blank for anonymous access or runtime credentials. Enter a string value. Press Enter for the default (""). access_key_id> xxxxxxxxxxxxxxxxxxxxx AWS Secret Access Key (password) Leave blank for anonymous access or runtime credentials. Enter a string value. Press Enter for the default (""). secret_access_key> xxxxxxxxxxxxxxxxxxxxxxxxxxxxx -
Dans le
Region to connect toinvite, sélectionnez l'option1.Region to connect to. Leave blank if you are using an S3 clone and you don't have a region. Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value 1 / Use this if unsure. Will use v4 signatures and an empty region. \ "" 2 / Use this only if v4 signatures don't work, eg pre Jewel/v10 CEPH. \ "other-v2-signature" region> 1 -
Dans le
Endpoint for IBM COS S3 APIinvite, sélectionnez l'option1.Endpoint for IBM COS S3 API. Specify if using an IBM COS On Premise. Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value 1 / US Cross Region Endpoint \ "s3-api.us-geo.objectstorage.softlayer.net" 2 / US Cross Region Dallas Endpoint \ "s3-api.dal.us-geo.objectstorage.softlayer.net" 3 / US Cross Region Washington DC Endpoint \ "s3-api.wdc-us-geo.objectstorage.softlayer.net" ... endpoint> 1 -
Dans le
Location constraintinvite, appuyez sur Retour pour utiliser la valeur par défaut.Location constraint - must match endpoint when using IBM Cloud Public. For on-prem COS, do not make a selection from this list, hit enter Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value 1 / US Cross Region Standard \ "us-standard" 2 / US Cross Region Vault \ "us-vault" 3 / US Cross Region Cold \ "us-cold" 4 / US Cross Region Flex \ "us-flex" ... -
Dans l'invite de stratégie ACL, sélectionnez
private.Note that this ACL is applied when server side copying objects as S3 doesn't copy the ACL from the source but rather writes a fresh one. Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value 1 / Owner gets FULL_CONTROL. No one else has access rights (default). This acl is available on IBM Cloud (Infra), IBM Cloud (Storage), On-Premise COS \ "private" 2 / Owner gets FULL_CONTROL. The AllUsers group gets READ access. This acl is available on IBM Cloud (Infra), IBM Cloud (Storage), On-Premise IBM COS \ "public-read" 3 / Owner gets FULL_CONTROL. The AllUsers group gets READ and WRITE access. This acl is available on IBM Cloud (Infra), On-Premise IBM COS \ "public-read-write" 4 / Owner gets FULL_CONTROL. The AuthenticatedUsers group gets READ access. Not supported on Buckets. This acl is available on IBM Cloud (Infra) and On-Premise IBM COS \ "authenticated-read" acl> 1 -
Ignorez l’option de configuration avancée et confirmez votre configuration.
Edit advanced config? (y/n) y) Yes n) No y/n> n Remote config -------------------- [cos-instance-2] type = s3 provider = IBMCOS env_auth = false access_key_id = xxxxxx secret_access_key = xxxxxxxxx endpoint = s3-api.us-geo.objectstorage.softlayer.net location_constraint = us-standard acl = private -------------------- y) Yes this is OK e) Edit this remote d) Delete this remote y/e/d> y Current remotes: Name Type ==== ==== cos-instance-1 s3 cos-instance-2 s3 -
Répétez les étapes précédentes pour ajouter l'instance COS à votre deuxième compte. Lorsque vous avez vérifié les informations, appuyez sur
qpour quitter le processus de configuration.
Visualiser le contenu de vos buckets COS
Compte 1 Compte 2
Après avoir configuré rclone, examinez le contenu de chaque seau, puis synchronisez les données entre les seaux de chaque compte.
-
Affichez le contenu du compartiment dans un premier temps.
rclone ls cos-instance-1:bucket-1 45338 test.txt -
Affichez le contenu du bucket dans l'instance 2. Dans cet exemple, le nom du seau est
bucket-2.rclone ls cos-instance-2:bucket-2
Synchronisation du contenu entre les compartiments
Compte 1 Compte 2
-
Pour déplacer les données d'un bucket à un autre, vous pouvez utiliser le
rclone synccommande. Dans cet exemplecos-instance-1:bucket-1est dans un seul compte pendant quecos-instance-2:bucket-2est une deuxième instance de COS dans un compte distinct.Exemple
rclone sync -P cos-instance-1:bucket-1 cos-instance-2:bucket-2Exemple de sortie
Transferred: 754.933k / 754.933 kBytes, 100%, 151.979 kBytes/s, ETA 0s Errors: 0 Checks: 0 / 0, - Transferred: 18 / 18, 100% Elapsed time: 4.9 -
Vérifiez le contenu du seau dans
cos-instance-1ont été synchronisés avec le bucket danscos-instance-2.rclone ls cos-instance-2:bucket-2Exemple de sortie
45338 test.txt
Redéployez votre application sur le compte 2
Compte 2
-
Copiez le PVC suivant et enregistrez-le dans un fichier nommé
pvc.yamlkind: PersistentVolumeClaim apiVersion: v1 metadata: name: demo # Enter a name for your PVC. namespace: default annotations: ibm.io/bucket-name: "bucket-2" # Enter the name of the bucket in Account 2 ibm.io/auto-create-bucket: "false" ibm.io/auto-delete-bucket: "false" ibm.io/secret-name: SECRET-NAME #Enter the name of the secret you created earlier. ibm.io/secret-namespace: NAMESPACE #Enter the namespace where you want to create the PVC. spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: ibmc-s3fs-cos #The storage class that you want to use. -
Créez la PVC dans votre cluster.
oc apply -f pvc.yaml -
Créez un fichier de configuration YAML pour un pod qui monte le PVC que vous créez.
apiVersion: v1 kind: Pod metadata: name: demo-pod namespace: default spec: securityContext: runAsUser: 2000 fsGroup: 2000 volumes: - name: demo-vol persistentVolumeClaim: claimName: demo containers: - name: test image: nginxinc/nginx-unprivileged imagePullPolicy: Always volumeMounts: - name: demo-vol mountPath: /mnt/cosvol -
Créez le pod dans votre cluster.
oc apply -f demo-pod.yaml -
Vérifiez que le pod est déployé. Il peut s'écouler quelques minutes avant que votre application ne passe à l'état
Running.oc get podsNAME READY STATUS RESTARTS AGE demo-pod 1/1 Running 0 2m58s -
Vérifiez que l'application peut écrire dans votre volume de stockage de bloc en vous connectant à votre pod.
oc exec demo-pod -- bash -c "ls /mnt/cosvol"test.txt