10.2. Manifestes de ressources personnalisées MTC
Migration Toolkit for Containers (MTC) utilise les manifestes de ressources personnalisées (CR) suivants pour faire migrer les applications.
10.2.1. DirectImageMigration
La CR DirectImageMigration
copie directement les images du cluster source vers le cluster de destination.
apiVersion: migration.openshift.io/v1alpha1 kind: DirectImageMigration metadata: labels: controller-tools.k8s.io: "1.0" name: <direct_image_migration> spec: srcMigClusterRef: name: <source_cluster> namespace: openshift-migration destMigClusterRef: name: <destination_cluster> namespace: openshift-migration namespaces: - <source_namespace_1> - <source_namespace_2>:<destination_namespace_3>
apiVersion: migration.openshift.io/v1alpha1
kind: DirectImageMigration
metadata:
labels:
controller-tools.k8s.io: "1.0"
name: <direct_image_migration>
spec:
srcMigClusterRef:
name: <source_cluster>
namespace: openshift-migration
destMigClusterRef:
name: <destination_cluster>
namespace: openshift-migration
namespaces:
- <source_namespace_1>
- <source_namespace_2>:<destination_namespace_3>
10.2.2. DirectImageStreamMigration
La CR DirectImageStreamMigration
copie directement les références de flux d’images du cluster source vers le cluster de destination.
apiVersion: migration.openshift.io/v1alpha1 kind: DirectImageStreamMigration metadata: labels: controller-tools.k8s.io: "1.0" name: <direct_image_stream_migration> spec: srcMigClusterRef: name: <source_cluster> namespace: openshift-migration destMigClusterRef: name: <destination_cluster> namespace: openshift-migration imageStreamRef: name: <image_stream> namespace: <source_image_stream_namespace> destNamespace: <destination_image_stream_namespace>
apiVersion: migration.openshift.io/v1alpha1
kind: DirectImageStreamMigration
metadata:
labels:
controller-tools.k8s.io: "1.0"
name: <direct_image_stream_migration>
spec:
srcMigClusterRef:
name: <source_cluster>
namespace: openshift-migration
destMigClusterRef:
name: <destination_cluster>
namespace: openshift-migration
imageStreamRef:
name: <image_stream>
namespace: <source_image_stream_namespace>
destNamespace: <destination_image_stream_namespace>
10.2.3. DirectVolumeMigration
La CR DirectVolumeMigration
copie directement les volumes persistants (PV) du cluster source vers le cluster de destination.
apiVersion: migration.openshift.io/v1alpha1 kind: DirectVolumeMigration metadata: name: <direct_volume_migration> namespace: openshift-migration spec: createDestinationNamespaces: false deleteProgressReportingCRs: false destMigClusterRef: name: <host_cluster> namespace: openshift-migration persistentVolumeClaims: - name: <pvc> namespace: <pvc_namespace> srcMigClusterRef: name: <source_cluster> namespace: openshift-migration
apiVersion: migration.openshift.io/v1alpha1
kind: DirectVolumeMigration
metadata:
name: <direct_volume_migration>
namespace: openshift-migration
spec:
createDestinationNamespaces: false
deleteProgressReportingCRs: false
destMigClusterRef:
name: <host_cluster>
namespace: openshift-migration
persistentVolumeClaims:
- name: <pvc>
namespace: <pvc_namespace>
srcMigClusterRef:
name: <source_cluster>
namespace: openshift-migration
- 1
- Défini sur
true
pour créer des espaces de nommage pour les PV sur le cluster de destination. - 2
- Défini sur
true
pour supprimer les CRDirectVolumeMigrationProgress
après la migration. La valeur par défaut estfalse
afin que les CRDirectVolumeMigrationProgress
soient conservés pour la résolution des problèmes. - 3
- Mettez à jour le nom du cluster si le cluster de destination n’est pas le cluster hôte.
- 4
- Indiquez une ou plusieurs PVC à migrer.
10.2.4. DirectVolumeMigrationProgress
La CR DirectVolumeMigrationProgress
affiche la progression de la CR DirectVolumeMigration
.
apiVersion: migration.openshift.io/v1alpha1 kind: DirectVolumeMigrationProgress metadata: labels: controller-tools.k8s.io: "1.0" name: <direct_volume_migration_progress> spec: clusterRef: name: <source_cluster> namespace: openshift-migration podRef: name: <rsync_pod> namespace: openshift-migration
apiVersion: migration.openshift.io/v1alpha1
kind: DirectVolumeMigrationProgress
metadata:
labels:
controller-tools.k8s.io: "1.0"
name: <direct_volume_migration_progress>
spec:
clusterRef:
name: <source_cluster>
namespace: openshift-migration
podRef:
name: <rsync_pod>
namespace: openshift-migration
10.2.5. MigAnalytic
La CR MigAnalytic
collecte le nombre d’images, les ressources Kubernetes et la capacité du volume persistant (PV) à partir d’une CR MigPlan
associée.
Vous pouvez configurer les données qu’elle collecte.
apiVersion: migration.openshift.io/v1alpha1 kind: MigAnalytic metadata: annotations: migplan: <migplan> name: <miganalytic> namespace: openshift-migration labels: migplan: <migplan> spec: analyzeImageCount: true analyzeK8SResources: true analyzePVCapacity: true listImages: false listImagesLimit: 50 migPlanRef: name: <migplan> namespace: openshift-migration
apiVersion: migration.openshift.io/v1alpha1
kind: MigAnalytic
metadata:
annotations:
migplan: <migplan>
name: <miganalytic>
namespace: openshift-migration
labels:
migplan: <migplan>
spec:
analyzeImageCount: true
analyzeK8SResources: true
analyzePVCapacity: true
listImages: false
listImagesLimit: 50
migPlanRef:
name: <migplan>
namespace: openshift-migration
- 1
- Facultatif : renvoie le nombre d’images.
- 2
- Facultatif : renvoie le numéro, le type et la version de l’API des ressources Kubernetes.
- 3
- Facultatif : renvoie la capacité du volume persistant (PV).
- 4
- Renvoie une liste de noms d’images. La valeur par défaut est
false
afin que la sortie ne soit pas excessivement longue. - 5
- Facultatif : indiquez le nombre maximum de noms d’images à renvoyer si
listImages
est défini surtrue
.
10.2.6. MigCluster
La CR MigCluster
définit un cluster hôte, local ou distant.
apiVersion: migration.openshift.io/v1alpha1 kind: MigCluster metadata: labels: controller-tools.k8s.io: "1.0" name: <host_cluster> namespace: openshift-migration spec: isHostCluster: true # The 'azureResourceGroup' parameter is relevant only for Microsoft Azure. azureResourceGroup: <azure_resource_group> caBundle: <ca_bundle_base64> insecure: false refresh: false # The 'restartRestic' parameter is relevant for a source cluster. restartRestic: true # The following parameters are relevant for a remote cluster. exposedRegistryPath: <registry_route> url: <destination_cluster_url> serviceAccountSecretRef: name: <source_secret> namespace: openshift-config
apiVersion: migration.openshift.io/v1alpha1
kind: MigCluster
metadata:
labels:
controller-tools.k8s.io: "1.0"
name: <host_cluster>
namespace: openshift-migration
spec:
isHostCluster: true
# The 'azureResourceGroup' parameter is relevant only for Microsoft Azure.
azureResourceGroup: <azure_resource_group>
caBundle: <ca_bundle_base64>
insecure: false
refresh: false
# The 'restartRestic' parameter is relevant for a source cluster.
restartRestic: true
# The following parameters are relevant for a remote cluster.
exposedRegistryPath: <registry_route>
url: <destination_cluster_url>
serviceAccountSecretRef:
name: <source_secret>
namespace: openshift-config
- 1
- Mettez à jour le nom du cluster si le pod
migration-controller
n’est pas en cours d’exécution sur ce cluster. - 2
- Le pod
migration-controller
s’exécute sur ce cluster si la valeur est définie surtrue
. - 3
- Microsoft Azure uniquement : indiquez le groupe de ressources.
- 4
- Facultatif : si vous avez créé un fichier de groupement de certificats pour les certificats CA auto-signés et si la valeur du paramètre
insecure
estfalse
, spécifiez le fichier de groupement de certificats codé en Base64. - 5
- Définissez la valeur sur
true
pour désactiver la vérification SSL. - 6
- Définissez la valeur sur
true
pour valider le cluster. - 7
- Définissez la valeur sur
true
pour redémarrer les podsRestic
sur le cluster source après la création des podsStage
. - 8
- Uniquement pour le cluster distant et la migration directe d’images : indiquez le chemin du registre sécurisé exposé.
- 9
- Cluster distant uniquement : indiquez l’URL.
- 10
- Cluster distant uniquement : indiquez le nom de l’objet
Secret
.
10.2.7. MigHook
La ressource personnalisée (CR) MigHook
définit un script de migration automatique qui exécute un code personnalisé à une étape spécifique de la migration. Vous pouvez créer jusqu’à quatre scripts de ce type. Chaque script automatique s’exécute au cours d’une phase différente de la migration.
Vous pouvez configurer le nom du script automatique, la durée d’exécution, une image personnalisée et le cluster où le script en question sera exécuté.
Les phases de migration et les espaces de nommage des scripts automatiques sont configurés dans la CR MigPlan
.
apiVersion: migration.openshift.io/v1alpha1 kind: MigHook metadata: generateName: <hook_name_prefix> name: <mighook> namespace: openshift-migration spec: activeDeadlineSeconds: 1800 custom: false image: <hook_image> playbook: <ansible_playbook_base64> targetCluster: source
apiVersion: migration.openshift.io/v1alpha1
kind: MigHook
metadata:
generateName: <hook_name_prefix>
name: <mighook>
namespace: openshift-migration
spec:
activeDeadlineSeconds: 1800
custom: false
image: <hook_image>
playbook: <ansible_playbook_base64>
targetCluster: source
- 1
- Facultatif : un hachage unique est ajouté à la valeur de ce paramètre afin que chaque script de migration automatique ait un nom unique. Il n’est pas nécessaire de spécifier la valeur du paramètre
name
. - 2
- Indiquez le nom du script de migration automatique, à moins que vous ne spécifiiez la valeur du paramètre
generateName
. - 3
- Facultatif : indiquez le nombre maximum de secondes pendant lesquelles un script automatique peut être exécuté. La valeur par défaut est
1800
. - 4
- Le script automatique est une image personnalisée si la valeur est définie sur
true
. L’image personnalisée peut inclure Ansible ou être écrite dans un autre langage de programmation. - 5
- Spécifiez l’image personnalisée ;
quay.io/konveyor/hook-runner:latest
, par exemple. Requis si le paramètrecustom
est défini surtrue
. - 6
- Playbook Ansible codé en base64. Requis si le paramètre
custom
est défini surfalse
. - 7
- Indiquez le cluster sur lequel le script automatique sera exécuté. La valeur valide est
source
oudestination
.
10.2.8. MigMigration
La CR MigMigration
exécute une CR MigPlan
.
Vous pouvez configurer une CR MigMigration
pour exécuter une migration par étapes ou incrémentielle, pour annuler une migration en cours ou pour annuler une migration terminée.
apiVersion: migration.openshift.io/v1alpha1 kind: MigMigration metadata: labels: controller-tools.k8s.io: "1.0" name: <migmigration> namespace: openshift-migration spec: canceled: false rollback: false stage: false quiescePods: true keepAnnotations: true verify: false migPlanRef: name: <migplan> namespace: openshift-migration
apiVersion: migration.openshift.io/v1alpha1
kind: MigMigration
metadata:
labels:
controller-tools.k8s.io: "1.0"
name: <migmigration>
namespace: openshift-migration
spec:
canceled: false
rollback: false
stage: false
quiescePods: true
keepAnnotations: true
verify: false
migPlanRef:
name: <migplan>
namespace: openshift-migration
- 1
- Défini sur
true
pour annuler une migration en cours. - 2
- Défini sur
true
pour annuler une migration terminée. - 3
- Défini sur
true
pour exécuter une migration par étapes. Les données sont copiées de manière incrémentielle et les pods du cluster source ne sont pas arrêtés. - 4
- Défini sur
true
pour arrêter l’application pendant la migration. Les pods du cluster source sont mis à l’échelle sur0
après l’étapeBackup
. - 5
- Défini sur
true
pour conserver les étiquettes et les annotations appliquées pendant la migration. - 6
- Défini sur
true
pour s’assurer que l’état des pods migrés sur le cluster de destination est vérifié et pour renvoyer les noms des pods qui ne se trouvent pas dans l’étatRunning
.
10.2.9. MigPlan
La CR MigPlan
définit les paramètres d’un plan de migration.
Vous pouvez configurer des espaces de nommage de destination, des phases de script automatique et une migration directe ou indirecte.
Par défaut, l’espace de nommage de destination porte le même nom que l’espace de nommage source. Si vous configurez un espace de nommage de destination différent, vous devez vous assurer que les espaces de nommage ne sont pas dupliqués sur les clusters source ou de destination, car les plages UID et GID sont copiées pendant la migration.
apiVersion: migration.openshift.io/v1alpha1 kind: MigPlan metadata: labels: controller-tools.k8s.io: "1.0" name: <migplan> namespace: openshift-migration spec: closed: false srcMigClusterRef: name: <source_cluster> namespace: openshift-migration destMigClusterRef: name: <destination_cluster> namespace: openshift-migration hooks: - executionNamespace: <namespace> phase: <migration_phase> reference: name: <hook> namespace: <hook_namespace> serviceAccount: <service_account> indirectImageMigration: true indirectVolumeMigration: false migStorageRef: name: <migstorage> namespace: openshift-migration namespaces: - <source_namespace_1> - <source_namespace_2> - <source_namespace_3>:<destination_namespace_4> refresh: false
apiVersion: migration.openshift.io/v1alpha1
kind: MigPlan
metadata:
labels:
controller-tools.k8s.io: "1.0"
name: <migplan>
namespace: openshift-migration
spec:
closed: false
srcMigClusterRef:
name: <source_cluster>
namespace: openshift-migration
destMigClusterRef:
name: <destination_cluster>
namespace: openshift-migration
hooks:
- executionNamespace: <namespace>
phase: <migration_phase>
reference:
name: <hook>
namespace: <hook_namespace>
serviceAccount: <service_account>
indirectImageMigration: true
indirectVolumeMigration: false
migStorageRef:
name: <migstorage>
namespace: openshift-migration
namespaces:
- <source_namespace_1>
- <source_namespace_2>
- <source_namespace_3>:<destination_namespace_4>
refresh: false
- 1
- La migration est terminée si le paramètre est défini sur
true
. Vous ne pouvez pas créer une autre CRMigMigration
pour cette CRMigPlan
. - 2
- Facultatif : vous pouvez spécifier jusqu’à quatre scripts de migration automatiques. Chaque script automatique doit être exécuté pendant une phase différente de la migration.
- 3
- Facultatif : indiquez l’espace de nommage dans lequel le script automatique sera exécuté.
- 4
- Facultatif : indiquez la phase de migration au cours de laquelle un script automatique s’exécute. Un script automatique peut être affecté à une seule phase. Les valeurs valides sont
PreBackup
,PostBackup
,PreRestore
etPostRestore
. - 5
- Facultatif : indiquez le nom de la CR
MigHook
. - 6
- Facultatif : indiquez l’espace de nommage de la CR
MigHook
. - 7
- Facultatif : indiquez un compte de service avec les privilèges
cluster-admin
. - 8
- La migration directe des images est désactivée si le paramètre est défini sur
true
. Les images sont copiées du cluster source vers le référentiel de réplication et du référentiel de réplication vers le cluster de destination. - 9
- La migration directe des volumes est désactivée si le paramètre est défini sur
true
. Les volumes persistants (PV) sont copiés du cluster source vers le référentiel de réplication et du référentiel de réplication vers le cluster de destination. - 10
- Indiquez un ou plusieurs espaces de nommage sources. Si vous ne spécifiez que l’espace de nommage source, l’espace de nommage de destination est le même.
- 11
- Indiquez l’espace de nommage de destination s’il est différent de l’espace source.
- 12
- La CR
MigPlan
est validée si le paramètre est défini surtrue
.
10.2.10. MigStorage
La CR MigStorage
décrit le stockage d’objets pour le référentiel de réplication.
Amazon Web Services (AWS), Microsoft Azure, Google Cloud Storage, Multi-Cloud Object Gateway et le stockage cloud générique compatible S3 sont pris en charge.
AWS et la méthode de copie de cliché ont des paramètres supplémentaires.
apiVersion: migration.openshift.io/v1alpha1 kind: MigStorage metadata: labels: controller-tools.k8s.io: "1.0" name: <migstorage> namespace: openshift-migration spec: backupStorageProvider: <backup_storage_provider> volumeSnapshotProvider: <snapshot_storage_provider> backupStorageConfig: awsBucketName: <bucket> awsRegion: <region> credsSecretRef: namespace: openshift-config name: <storage_secret> awsKmsKeyId: <key_id> awsPublicUrl: <public_url> awsSignatureVersion: <signature_version> volumeSnapshotConfig: awsRegion: <region> credsSecretRef: namespace: openshift-config name: <storage_secret> refresh: false
apiVersion: migration.openshift.io/v1alpha1
kind: MigStorage
metadata:
labels:
controller-tools.k8s.io: "1.0"
name: <migstorage>
namespace: openshift-migration
spec:
backupStorageProvider: <backup_storage_provider>
volumeSnapshotProvider: <snapshot_storage_provider>
backupStorageConfig:
awsBucketName: <bucket>
awsRegion: <region>
credsSecretRef:
namespace: openshift-config
name: <storage_secret>
awsKmsKeyId: <key_id>
awsPublicUrl: <public_url>
awsSignatureVersion: <signature_version>
volumeSnapshotConfig:
awsRegion: <region>
credsSecretRef:
namespace: openshift-config
name: <storage_secret>
refresh: false
- 1
- Indiquez le fournisseur de stockage.
- 2
- Méthode de copie de cliché uniquement : indiquez le fournisseur de stockage.
- 3
- AWS uniquement : indiquez le nom du compartiment.
- 4
- AWS uniquement : indiquez la région du compartiment ;
us-east-1
, par exemple. - 5
- Indiquez le nom de l’objet
Secret
que vous avez créé pour le stockage. - 6
- AWS uniquement : si vous utilisez AWS Key Management Service (AWS KMS), indiquez l’identifiant unique de la clé.
- 7
- AWS uniquement : si vous avez accordé un accès public au compartiment AWS, indiquez son URL.
- 8
- AWS uniquement : indiquez la version de la signature AWS pour l’authentification des demandes adressées au compartiment ;
4
, par exemple. - 9
- Méthode de copie de cliché uniquement : indiquez la région géographique des clusters.
- 10
- Méthode de copie de cliché uniquement : indiquez le nom de l’objet
Secret
que vous avez créé pour le stockage. - 11
- Définissez la valeur sur
true
pour valider le cluster.