16.2.4. Lifecycle Agent を使用したイメージベースアップグレード用の ConfigMap オブジェクトの作成
Lifecycle Agent では、イメージベースアップグレード用に処理するために、すべての OADP リソース、追加のマニフェスト、およびカスタムカタログソースが ConfigMap オブジェクトにラップされている必要があります。
16.2.4.1. Lifecycle Agent を使用したイメージベースアップグレード用の OADP ConfigMap オブジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
アップグレード中にリソースをバックアップおよび復元するために使用される OADP リソースを作成します。
前提条件
- 互換性のあるシードクラスターからシードイメージを生成した。
- OADP のバックアップおよび復元リソースを作成した。
- stateroot 間で共有されるコンテナーイメージ用に、ターゲットクラスターに個別のパーティションを作成した。詳細は、「イメージベースアップグレード用の共有コンテナーパーティションの設定」を参照してください。
- シードイメージで使用されるバージョンと互換性のあるバージョンの Lifecycle Agent をデプロイした。
-
OADP Operator、
DataProtectionApplicationCR、およびそのシークレットをターゲットクラスターにインストールした。 - S3 互換のストレージソリューションとすぐに使用できるバケットを作成し、適切な認証情報を設定した。詳細は、「OADP のインストールについて」を参照してください。
手順
OADP Operator がインストールされているのと同じ namespace (
openshift-adp) に、プラットフォームアーティファクトの OADPBackupCR およびRestoreCR を作成します。対象クラスターが RHACM によって管理されている場合は、RHACM アーティファクトのバックアップと復元を行うために、以下の
PlatformBackupRestore.yamlファイルを追加してください。apiVersion: velero.io/v1 kind: Backup metadata: name: acm-klusterlet annotations: lca.openshift.io/apply-label: "apps/v1/deployments/open-cluster-management-agent/klusterlet,v1/secrets/open-cluster-management-agent/bootstrap-hub-kubeconfig,rbac.authorization.k8s.io/v1/clusterroles/klusterlet,v1/serviceaccounts/open-cluster-management-agent/klusterlet,scheduling.k8s.io/v1/priorityclasses/klusterlet-critical,rbac.authorization.k8s.io/v1/clusterroles/open-cluster-management:klusterlet-admin-aggregate-clusterrole,rbac.authorization.k8s.io/v1/clusterrolebindings/klusterlet,operator.open-cluster-management.io/v1/klusterlets/klusterlet,apiextensions.k8s.io/v1/customresourcedefinitions/klusterlets.operator.open-cluster-management.io,v1/secrets/open-cluster-management-agent/open-cluster-management-image-pull-credentials" labels: velero.io/storage-location: default namespace: openshift-adp spec: includedNamespaces: - open-cluster-management-agent includedClusterScopedResources: - klusterlets.operator.open-cluster-management.io - clusterroles.rbac.authorization.k8s.io - clusterrolebindings.rbac.authorization.k8s.io - priorityclasses.scheduling.k8s.io includedNamespaceScopedResources: - deployments - serviceaccounts - secrets excludedNamespaceScopedResources: [] --- apiVersion: velero.io/v1 kind: Restore metadata: name: acm-klusterlet namespace: openshift-adp labels: velero.io/storage-location: default annotations: lca.openshift.io/apply-wave: "1" spec: backupName: acm-klusterlet注記multiclusterHubCR に.spec.imagePullSecretが定義されておらず、かつそのシークレットがハブクラスターのopen-cluster-management-agent名前空間に存在しない場合は、lca.openshift.io/apply-label アノテーションからv1/secrets/open-cluster-management-agent/open-cluster-management-image-pull-credentials を削除してください。LVM Storage を介してクラスター上に永続ボリュームを作成した場合は、LVM Storage アーティファクト用に次の
PlatformBackupRestoreLvms.yamlファイルを追加してください。apiVersion: velero.io/v1 kind: Backup metadata: labels: velero.io/storage-location: default name: lvmcluster namespace: openshift-adp spec: includedNamespaces: - openshift-storage includedNamespaceScopedResources: - lvmclusters - lvmvolumegroups - lvmvolumegroupnodestatuses --- apiVersion: velero.io/v1 kind: Restore metadata: name: lvmcluster namespace: openshift-adp labels: velero.io/storage-location: default annotations: lca.openshift.io/apply-wave: "2" spec: backupName: lvmcluster-
lca.openshift.io/apply-waveの値は、アプリケーションのRestoreCR で指定された値よりも低くする必要があります。
-
アップグレード後にアプリケーションを復元する必要がある場合は、
openshift-adpnamespace にアプリケーションの OADPBackupCR およびRestoreCR を作成します。openshift-adp名前空間内のクラスタースコープのアプリケーションアーティファクトに対して OADP CR を作成します。例:apiVersion: velero.io/v1 kind: Backup metadata: annotations: lca.openshift.io/apply-label: "apiextensions.k8s.io/v1/customresourcedefinitions/test.example.com,security.openshift.io/v1/securitycontextconstraints/test,rbac.authorization.k8s.io/v1/clusterroles/test-role,rbac.authorization.k8s.io/v1/clusterrolebindings/system:openshift:scc:test" name: backup-app-cluster-resources labels: velero.io/storage-location: default namespace: openshift-adp spec: includedClusterScopedResources: - customresourcedefinitions - securitycontextconstraints - clusterrolebindings - clusterroles excludedClusterScopedResources: - Namespace --- apiVersion: velero.io/v1 kind: Restore metadata: name: test-app-cluster-resources namespace: openshift-adp labels: velero.io/storage-location: default annotations: lca.openshift.io/apply-wave: "3" spec: backupName: backup-app-cluster-resources-
lca.openshift.io/apply-labelフィールドの例のリソース名を、実際のリソース名に置き換えてください。 -
lca.openshift.io/apply-waveフィールドの値は、プラットフォームの復元CR の値よりも大きく、アプリケーション名前空間スコープの復元CR の値よりも小さくなければなりません。
-
namespace スコープのアプリケーションアーティファクト用の OADP CR を作成します。
LSO を使用する場合は、以下の OADP CR の例を参照してください。
apiVersion: velero.io/v1 kind: Backup metadata: labels: velero.io/storage-location: default name: backup-app namespace: openshift-adp spec: includedNamespaces: - test includedNamespaceScopedResources: - secrets - persistentvolumeclaims - deployments - statefulsets - configmaps - cronjobs - services - job - poddisruptionbudgets - <application_custom_resources> excludedClusterScopedResources: - persistentVolumes --- apiVersion: velero.io/v1 kind: Restore metadata: name: test-app namespace: openshift-adp labels: velero.io/storage-location: default annotations: lca.openshift.io/apply-wave: "4" spec: backupName: backup-app-
includedNamespaceScopedResourcesフィールドに、アプリケーション用のカスタムリソースを定義します。
LVM ストレージを使用する場合は、以下の OADP CR の例を参照してください。
apiVersion: velero.io/v1 kind: Backup metadata: labels: velero.io/storage-location: default name: backup-app namespace: openshift-adp spec: includedNamespaces: - test includedNamespaceScopedResources: - secrets - persistentvolumeclaims - deployments - statefulsets - configmaps - cronjobs - services - job - poddisruptionbudgets - <application_custom_resources> includedClusterScopedResources: - persistentVolumes - logicalvolumes.topolvm.io - volumesnapshotcontents --- apiVersion: velero.io/v1 kind: Restore metadata: name: test-app namespace: openshift-adp labels: velero.io/storage-location: default annotations: lca.openshift.io/apply-wave: "4" spec: backupName: backup-app restorePVs: true restoreStatus: includedResources: - logicalvolumesここでは、以下のようになります。
-
<application_custom_resources>: アプリケーションのカスタムリソースを定義します。 -
persistentVolumes: 必須項目。 -
logicalvolumes.topolvm.io: 必須項目です。 -
volumesnapshotcontents: LVM ストレージのボリュームスナップショットを使用する場合は、この項目は省略可能です。 -
restoreStatus.includedResources: 論理ボリュームを復元するために必要なフィールドです。
重要アプリケーションの同じバージョンが、OpenShift Container Platform の現在のリリースとターゲットリリースの両方で機能する必要があります。
-
次のコマンドを実行して、OADP CR の
ConfigMapオブジェクトを作成します。$ oc create configmap oadp-cm-example --from-file=example-oadp-resources.yaml=<path_to_oadp_crs> -n openshift-adp次のコマンドを実行して、
ImageBasedUpgradeCR にパッチを適用します。$ oc patch imagebasedupgrades.lca.openshift.io upgrade \ -p='{"spec": {"oadpContent": [{"name": "oadp-cm-example", "namespace": "openshift-adp"}]}}' \ --type=merge -n openshift-lifecycle-agent