Terraform のコマンドラインインターフェース (CLI) を使用して、バックアップクラスターと復元クラスターにバックアップボールト、アプリケーションバックアップ、およびアプリケーション復元のカスタムリソース (CR) をデプロイし、クラスター間でアプリケーションを移行できます。
前提条件
Kubernetes 1.18 以降を実行する Container Service for Kubernetes (ACK) クラスターが Terraform を使用して作成されていること。詳細については、「Terraform を使用して ACK マネージドクラスターを作成する」をご参照ください。
migrate-controller がインストールされ、権限が付与されていること。詳細については、「migrate-controller をインストールして権限を付与する」をご参照ください。また、Terraform を使用してコンポーネントをインストールすることもできます。詳細については、「Terraform を使用してアドオンを管理する」をご参照ください。
cnfs-oss-*形式で名前が付けられた Object Storage Service (OSS) バケットが、バックアップを保存するために作成されていること。詳細については、「Terraform を使用して OSS を管理する」および「alicloud_oss_bucket」をご参照ください。ボリュームをバックアップに使用する場合は、Elastic Compute Service (ECS) スナップショットと Cloud Backup が利用可能であること。詳細については、「OSS をアクティブ化する」、「ECS スナップショットをアクティブ化する」、および「Cloud Backup をアクティブ化する」をご参照ください。
使用上の注意
kubectl を使用して
deleteコマンドを実行して、バックアップタスクと復元タスクを削除しないでください。そうしないと、関連するクラウドリソースが完全に削除されない可能性があります。バックアップを削除する方法の詳細については、このトピックの「手順 5: バックアップセンターからリソースを削除する」セクションをご参照ください。migrate-controller という名前のバックアップセンターコンポーネントの新しいリリースに細心の注意を払い、できるだけ早くコンポーネントを最新バージョンに更新してください。詳細については、「コンポーネントを管理する」をご参照ください。
バックアップファイルを復元できない場合に備えて、次のサンプルコードのパラメーターを削除しないでください。
手順 1: クラスターを関連付ける
Kubernetes プロバイダーを使用して、クラスターを関連付けることができます。 Kubernetes プロバイダーの詳細については、「Kubernetes プロバイダー」をご参照ください。
この例では、KubeConfig ファイルを使用して、クラスターを関連付ける方法を説明します。
Terraform ディレクトリを作成します。
Terraform ディレクトリに csdr.tf という名前の構成ファイルを作成し、次の内容を構成ファイルにコピーして KubeConfig ファイルに関連付けます。
provider "kubernetes" { config_path = "~/.kube/config" }次のコマンドを実行して、Terraform のランタイム環境を初期化します。
terraform init次の出力が返された場合、Terraform は初期化されています。
手順 2: バックアップボールトを作成する
次の内容を csdr.tf 構成ファイルに追加し、ビジネス要件に基づいて内容を変更します。
resource "kubernetes_manifest" "backuplocation-demo" { manifest = { apiVersion = "csdr.alibabacloud.com/v1beta1" kind = "BackupLocation" metadata = { name = "<バックアップボールト名>" namespace = "csdr" } spec = { backupSyncPeriod = "0s" config = { network = "internal" region = "cn-beijing" } objectStorage = { bucket = "<cnfs-oss-バケット名>" prefix = "<サブディレクトリ>" } provider = "alibabacloud" } } wait { fields = { "status.phase" = "Available" } } timeouts { create = "10m" } }パラメーター
必須
説明
name
はい
バックアップボールトの名前。名前は Kubernetes の命名規則に準拠している必要があります。
network
はい
指定された Object Storage Service (OSS) バケットにアクセスするために使用されるネットワークモード。有効な値:
internal: 内部モード。関連付けられているすべてのクラスターは、OSS バケットと同じリージョンにデプロイする必要があります。
public: パブリックモード。このモードにはリージョン制限はありません。
region
はい
OSS バケットが存在するリージョン。
bucket
はい
OSS バケットの名前。 OSS バケット名が cnfs-oss- で始まっていることを確認してください。
prefix
いいえ
OSS バケット内のサブディレクトリ。このパラメーターを指定すると、バックアップは指定されたサブディレクトリに保存されます。
次のコマンドを実行して、リソースプランを作成します。
terraform plan次の出力が返された場合、リソースプランが作成されています。
次のコマンドを実行して、バックアップボールトを作成します。
terraform apply次の出力が返された場合、バックアップボールトが作成されています。
kubernetes_manifest.backuplocation-demo: Creating... kubernetes_manifest.backuplocation-demo: Creation complete after 1s Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
手順 3: バックアップタスクを作成する
ビジネス要件に基づいて、次のバックアップタイプのいずれかを選択できます。
[アプリケーションバックアップ]: クラスターで実行されているアプリケーション (クラスターリソースとアプリケーションで使用されるボリュームを含む) をバックアップします。
[データ保護]: ボリュームデータをバックアップします。リソースには、永続ボリューム要求 (PVC) と永続ボリューム (PV) のみが含まれます。
詳細については、「アプリケーションバックアップとデータ保護のシナリオとは」をご参照ください。
アプリケーションバックアップ
インスタントバックアップタスクを作成する
次の内容を csdr.tf 構成ファイルに追加し、ビジネス要件に基づいて内容を変更します。
resource "kubernetes_manifest" "applicationbackup-demo" { manifest = { apiVersion = "csdr.alibabacloud.com/v1beta1" kind = "ApplicationBackup" metadata = { name = "<アプリケーションバックアップ名>" namespace = "csdr" annotations = { "csdr.alibabacloud.com/backuplocations" = "{\"name\":\"<バックアップボールト名>\",\"region\":\"cn-beijing\",\"bucket\":\"<cnfs-oss-バケット名>\",\"prefix\":\"<サブディレクトリ>\",\"provider\":\"alibabacloud\"}" } spec = { includedNamespaces = ["default","default1"] includedResources = ["statefulset"] excludedResources = ["excludedResources"] labelSelector = { matchLabels = { "app" = "mysql-sts" } } pvBackup = { defaultPvBackup = "false" } storageLocation = "<バックアップボールト名>" ttl = "720h0m0s" includeClusterResources = "false" } } # status.phase パラメーターの値が Completed に変わると、バックアップは成功です。 # バックアップの所要時間は、クラスター内のアプリケーションの数とボリュームに保存されているデータ量によって異なります。 #wait { # fields = { # "status.phase" = "Completed" # } #} #timeouts { # create = "60m" #} } }パラメーター
必須
説明
csdr.alibabacloud.com/backuplocationsはい
バックアップを保存するバックアップボールト。情報がバックアップボールトの構成と同じであることを確認してください。
nameはい
リアルタイムバックアップタスクの名前。
includedNamespacesはい
名前空間の名前。
includedResourcesいいえ
バックアップリストに含めるクラスターリソースのタイプ。
重要予期しないバックアップ結果を避けるために、includedResources パラメーターと excludedResources パラメーターのいずれか 1 つのみを構成する必要があります。両方のパラメーターを空のままにすると、すべてのリソースタイプがバックアップされます。
excludedResourcesいいえ
バックアップリストから除外するクラスターリソースのタイプ。
重要予期しないバックアップ結果を避けるために、includedResources パラメーターと excludedResources パラメーターのいずれか 1 つのみを構成する必要があります。両方のパラメーターを空のままにすると、すべてのリソースタイプがバックアップされます。
matchLabelsいいえ
バックアップするリソースのラベル。
includeClusterResourcesいいえ
StorageClass、CustomResourceDefinitions (CRD)、Webhook など、すべてのクラスターレベルリソースをバックアップするかどうかを指定します。
true: すべてのクラスターレベルリソースをバックアップします。false: 指定された名前空間内の名前空間レベルリソースで使用されるクラスターレベルリソースのみをバックアップします。たとえば、システムがポッドをバックアップすると、ポッドで使用されるサービスアカウントにクラスターロールが割り当てられます。この場合、クラスターロールは自動的にバックアップされます。システムがカスタムリソース (CR) をバックアップすると、対応する CRD がバックアップされます。
説明デフォルトでは、
IncludeClusterResourcesfalseACK コンソールで作成されたバックアップタスクでは、IncludeClusterResources は false に設定されています。defaultPvBackupボリュームをバックアップするかどうかを指定します。有効な値:
true: アプリケーションとボリュームをバックアップします。
false: アプリケーションのみをバックアップします。
storageLocationはい
バックアップボールトの名前。
説明ACK クラスターで Velero を使用している場合は、DingTalk グループ 35532895 に参加してテクニカルサポートをリクエストしてください。
ttlはい
バックアップの有効期間。期限切れのバックアップからデータを復元することはできません。期間は 720h0m0s 形式で指定します。有効な値: 24h0m0s から 1572864h0m0s。
次のコマンドを実行して、リソースプランを作成します。
terraform plan次の出力が返された場合、リソースプランが作成されています。
次のコマンドを実行して、インスタントバックアップタスクを作成します。
terraform apply次の出力が返された場合、インスタントバックアップタスクが作成されています。
kubernetes_manifest.applicationbackup-demo: Creating... kubernetes_manifest.applicationbackup-demo: Creation complete after 1s Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
スケジュールバックアップタスクを作成する
次の内容を csdr.tf 構成ファイルに追加し、ビジネス要件に基づいて内容を変更します。
パラメーター
必須
説明
csdr.alibabacloud.com/backuplocations
はい
バックアップを保存するバックアップボールト。情報がバックアップボールトの構成と同じであることを確認してください。
name
はい
スケジュールバックアップタスクの名前。
schedule
はい
バックアップサイクルを指定する Cron 式。 Cron 式の指定方法の詳細については、「バックアッププランを作成するときにバックアップサイクルを指定するにはどうすればよいですか。」をご参照ください。
includedNamespaces
はい
名前空間の名前。
includedResources
いいえ
バックアップリストに含めるクラスターリソースのタイプ。
重要予期しないバックアップ結果を避けるために、includedResources パラメーターと excludedResources パラメーターのいずれか 1 つのみを構成する必要があります。両方のパラメーターを空のままにすると、すべてのリソースタイプがバックアップされます。
excludedResources
いいえ
バックアップリストから除外するクラスターリソースのタイプ。
重要予期しないバックアップ結果を避けるために、includedResources パラメーターと excludedResources パラメーターのいずれか 1 つのみを構成する必要があります。両方のパラメーターを空のままにすると、すべてのリソースタイプがバックアップされます。
matchLabels
いいえ
バックアップするリソースのラベル。
includeClusterResources
いいえ
StorageClass、CustomResourceDefinitions (CRD)、Webhook など、すべてのクラスターレベルリソースをバックアップするかどうかを指定します。
true: すべてのクラスターレベルリソースをバックアップします。false: 指定された名前空間内の名前空間レベルリソースで使用されるクラスターレベルリソースのみをバックアップします。たとえば、システムがポッドをバックアップすると、ポッドで使用されるサービスアカウントにクラスターロールが割り当てられます。この場合、クラスターロールは自動的にバックアップされます。システムがカスタムリソース (CR) をバックアップすると、対応する CRD がバックアップされます。
説明デフォルトでは、
IncludeClusterResourcesfalseACK コンソールで作成されたバックアップタスクでは、IncludeClusterResources は false に設定されています。defaultPvBackup
はい
ボリュームをバックアップするかどうかを指定します。有効な値:
true: アプリケーションとボリュームをバックアップします。
false: アプリケーションのみをバックアップします。
storageLocation
はい
バックアップボールトの名前。
説明ACK クラスターで Velero を使用している場合は、DingTalk グループ 35532895 に参加してテクニカルサポートをリクエストしてください。
ttl
はい
バックアップの有効期間。期限切れのバックアップからデータを復元することはできません。期間は 720h0m0s 形式で指定します。有効な値: 24h0m0s から 1572864h0m0s。
次のコマンドを実行して、リソースプランを作成します。
terraform plan次の出力が返された場合、リソースプランが作成されています。
次のコマンドを実行して、スケジュールバックアップタスクを作成します。
terraform apply次の出力が返された場合、スケジュールバックアップタスクが作成されています。
kubernetes_manifest.backupschedule-demo: Creating... kubernetes_manifest.backupschedule-demo: Creation complete after 1s Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
関連操作
スケジュールバックアップタスクに基づいてバックアップを検索します。
labelSelectorを使用して、スケジュールバックアップタスクによって作成されたバックアップを見つけます。data "kubernetes_resources" "list-applicationbackup" { api_version = "csdr.alibabacloud.com/v1beta1" kind = "ApplicationBackup" namespace = "csdr" label_selector = "csdr/schedule-name=terraform-schedule-test" } # 出力を返します。 output "applicationbackup-name" { value = data.kubernetes_resources.list-applicationbackup.objects }スケジュールバックアップタスクを変更します。
spec.pausedパラメーターをtrueに設定してスケジュールバックアップタスクを一時停止し、ビジネス要件に基づいてバックアップタスクのバックアップ動作を定義するspec.scheduleなどのspecパラメーターの他のパラメーターを変更します。サンプルコード:resource "kubernetes_manifest" "backupschedule-demo" { manifest = { apiVersion = "csdr.alibabacloud.com/v1beta1" kind = "BackupSchedule" metadata = { name = "<スケジュールバックアップタスク名>" namespace = "csdr" annotations = { "csdr.alibabacloud.com/backuplocations" = "{\"name\":\"<バックアップボールト名>\",\"region\":\"cn-beijing\",\"bucket\":\"<cnfs-oss-バケット名>\",\"prefix\":\"<サブディレクトリ>\",\"provider\":\"alibabacloud\"}" } } spec = { # バックアップタスクを一時停止します。 paused = "true" # バックアップタスクのバックアップサイクルを変更します。 schedule = "0 5 * * *" template = { includedNamespaces = ["default","default1"] includedResources = ["statefulset"] excludedResources = ["excludedResources"] labelSelector = { matchLabels = { "app" = "mysql-sts" } } pvBackup = { defaultPvBackup = "false" } storageLocation = "vault-a" ttl = "720h0m0s" includeClusterResources = "false" } } } wait { fields = { # バックアップタスクが一時停止されると、バックアップタスクの状態は想定どおりに Paused に変わります。 "status.phase" = "Paused" } } timeouts { create = "10m" } }次のコマンドを実行して、リソースプランを作成します。
terraform plan次の出力が返された場合、リソースプランが作成されています。
kubernetes_manifest.backupschedule-demo: Refreshing state... Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # kubernetes_manifest.backupschedule-demo will be updated in-place ~ resource "kubernetes_manifest" "backupschedule-demo" { ~ manifest = { ~ spec = { ~ paused = "false" -> "true" ~ schedule = "1 4 * * *" -> "0 5 * * *" # (1 unchanged attribute hidden) } # (3 unchanged attributes hidden) } ~ object = { ~ spec = { ~ paused = false -> true ~ schedule = "1 4 * * *" -> "0 5 * * *" # (2 unchanged attributes hidden) } # (3 unchanged attributes hidden) } ~ wait { ~ fields = { ~ "status.phase" = "Enabled" -> "Paused" } } # (1 unchanged block hidden) } Plan: 0 to add, 1 to change, 0 to destroy.次のコマンドを実行して、変更されたスケジュールバックアップタスクを適用します。
terraform apply次の出力が返された場合、スケジュールバックアップタスクが変更されています。
kubernetes_manifest.backupschedule-demo: Modifying... kubernetes_manifest.backupschedule-demo: Modifications complete after 1s Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
データ保護
インスタントバックアップタスクを作成する
次の内容を csdr.tf 構成ファイルに追加し、ビジネス要件に基づいて内容を変更します。
resource "kubernetes_manifest" "applicationbackup-demo" { manifest = { apiVersion = "csdr.alibabacloud.com/v1beta1" kind = "ApplicationBackup" metadata = { name = "<アプリケーションバックアップ名>" namespace = "csdr" annotations = { "csdr.alibabacloud.com/backuplocations" = "{\"name\":\"<バックアップボールト名>\",\"region\":\"cn-beijing\",\"bucket\":\"<cnfs-oss-バケット名>\",\"prefix\":\"<サブディレクトリ>\",\"provider\":\"alibabacloud\"}" } spec = { backupType = "PvBackup" includedNamespaces = ["default","default1"] pvBackup = { pvcList = [ { namespace = "default" name = "pvc-nas" }, { namespace = "default1" name = "pvc-oss" } ] storageClassList = ["disk-essd","disk-ssd"] } storageLocation = "<バックアップボールト名>" ttl = "720h0m0s" } } # status.phase フィールドの値が Completed に変わると、バックアッププロセスは正常に完了します。 # バックアッププロセスに必要な時間は、クラスター内のアプリケーションの数とボリューム内のデータ量によって異なります。 #wait { # fields = { # "status.phase" = "Completed" # } #} #timeouts { # create = "60m" #} } }次のコマンドを実行して、リソースプランを作成します。
terraform plan次のコマンドを実行して、インスタントバックアップタスクを作成します。
terraform apply次の出力が返された場合、インスタントバックアップタスクが作成されています。
kubernetes_manifest.applicationbackup-demo: Creating... kubernetes_manifest.applicationbackup-demo: Creation complete after 1s Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
バックアッププランを作成する
次の内容を csdr.tf 構成ファイルに追加し、ビジネス要件に基づいて内容を変更します。
パラメーター
必須
説明
csdr.alibabacloud.com/backuplocationsはい
バックアップを保存するバックアップボールト。情報がバックアップボールトの構成と同じであることを確認してください。
nameはい
リアルタイムバックアップタスクの名前。
scheduleはい
バックアップサイクルを指定する Cron 式。 Cron 式の指定方法の詳細については、「バックアッププランを作成するときにバックアップサイクルを指定するにはどうすればよいですか。」をご参照ください。
includedNamespacesはい
名前空間の名前。
pvcListいいえ
バックアップするボリュームに対応する PVC。
nameパラメーターは、PVC の名前を指定します。重要pvcListとstorageClassListの両方が指定されている場合、storageClassListの構成は無効になります。pvcListもstorageClassListも指定されていない場合、指定された名前空間内のすべてのボリュームがバックアップされます。
storageClassListいいえ
バックアップするボリュームのタイプ。StorageClass の名前です。
storageLocationはい
バックアップボールトの名前。
説明ACK クラスターで Velero を使用している場合は、DingTalk グループ 35532895 に参加してテクニカルサポートをリクエストしてください。
ttlはい
バックアップの有効期間。期限切れのバックアップからデータを復元することはできません。期間は 720h0m0s 形式で指定します。有効な値: 24h0m0s から 1572864h0m0s。
次のコマンドを実行して、リソースプランを作成します。
terraform plan次のコマンドを実行して、スケジュールバックアップタスクを作成します。
terraform apply次の出力が返された場合、スケジュールバックアップタスクが作成されています。
kubernetes_manifest.backupschedule-demo: Creating... kubernetes_manifest.backupschedule-demo: Creation complete after 1s Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
手順 4: 復元タスクを作成する
次の内容を csdr.tf 構成ファイルに追加し、ビジネス要件に基づいて内容を変更します。
resource "kubernetes_manifest" "applicationrestore-demo" { manifest = { apiVersion = "csdr.alibabacloud.com/v1beta1" kind = "ApplicationRestore" metadata = { name = "<アプリケーション復元名>" namespace = "csdr" annotations = { "csdr.alibabacloud.com/backuplocations" = "{\"name\":\"<バックアップボールト名>\",\"region\":\"cn-beijing\",\"bucket\":\"<cnfs-oss-バケット名>\",\"prefix\":\"<サブディレクトリ>\",\"provider\":\"alibabacloud\"}" } } spec = { appRestoreOnly = "false" preserveNodePorts = "true" includedNamespaces = ["default","default1"] includedResources = ["statefulset"] excludedResources = ["excludedResources"] convertedarg = [ { convertToStorageClassType = "alicloud-disk-topology-alltype" namespace = "default" persistentVolumeClaim = "pvc-nas" }, { convertToStorageClassType = "alicloud-disk-topology-alltype" namespace = "default1" persistentVolumeClaim = "pvc-oss" } ] backupName = "<アプリケーションバックアップ名>" namespaceMapping = { "<バックアップ名前空間>" = "<復元名前空間>" } imageRegistryMapping = { "<古いイメージレジストリ>" = "<新しいイメージレジストリ>" } } } # status.phase パラメーターの値が Completed に変わると、復元タスクは成功です。 # 復元の所要時間は、クラスター内のアプリケーションの数とボリュームに保存されているデータ量によって異なります。 #wait { # fields = { # "status.phase" = "Completed" # } #} #timeouts { # create = "60m" #} }パラメーター
必須
説明
csdr.alibabacloud.com/backuplocations
はい
バックアップを保存するバックアップボールト。情報がバックアップボールトの構成と同じであることを確認してください。
name
はい
復元タスクの名前。
appRestoreOnly
いいえ
このパラメーターはアプリケーションバックアップタスクにのみ有効で、データ保護タスクでは有効になりません。
ボリュームデータを含むバックアップからアプリケーションのみを復元するかどうかを指定します。永続ボリューム要求 (PVC)、永続ボリューム (PV)、および関連データは復元されません。有効な値:
true: アプリケーションのみを復元します。アプリケーションをバックアップするデータソースを変更する場合は、手動で PVC と PV を作成し、復元タスクを作成してから、このパラメーターを true に設定する必要があります。
false: アプリケーションと関連するボリュームデータを復元します。デフォルト値: false。
preserveNodePorts
いいえ
このパラメーターはアプリケーションバックアップタスクにのみ有効で、データ保護タスクでは有効になりません。
アプリケーションの NodePort を保持するかどうかを指定します。バックアップクラスターと復元クラスターが同じ NodePort を使用している場合は、このパラメーターを false に設定して、NodePort をランダムなポートに変更します。その他のシナリオでは、パラメーターを true に設定します。
includedNamespaces
はい
復元する名前空間の名前。このパラメーターを空のままにすると、バックアップされているすべての名前空間が復元されます。
includedResources
いいえ
このパラメーターはアプリケーションバックアップタスクにのみ有効で、データ保護タスクでは有効になりません。
復元リストに含めるクラスターリソースのタイプ。
重要バックアップが想定どおりに作成されるようにするには、次のパラメーターのいずれか 1 つのみを指定します。includedResources と excludedResources。両方のパラメーターを空のままにすると、すべてのリソースタイプがバックアップされます。
excludedResources
いいえ
このパラメーターはアプリケーションバックアップタスクにのみ有効で、データ保護タスクでは有効になりません。
復元リストから除外するクラスターリソースのタイプ。
重要バックアップが想定どおりに作成されるようにするには、次のパラメーターのいずれか 1 つのみを指定します。includedResources と excludedResources。両方のパラメーターを空のままにすると、すべてのリソースタイプがバックアップされます。
backupName
はい
復元するバックアップの名前。スケジュールバックアップ機能を使用する場合は、特定の時点に作成されたバックアップの名前を指定する必要があります。例: <スケジュールバックアップタスク名>-20221205225845。
namespaceMapping
いいえ
このパラメーターは、バックアップクラスター内の名前空間を復元クラスター内の名前空間にマップします。有効な値:
<バックアップ名前空間>: バックアップクラスター内のバックアップの名前空間。
<復元名前空間>: 復元クラスター内でリソースが復元される名前空間。このパラメーターを指定しない場合、リソースはバックアップクラスター内の名前空間と同じ名前を使用する名前空間に復元されます。
説明<復元名前空間> が存在しない場合、システムは自動的に作成します。
imageRegistryMapping
いいえ
このパラメーターは、イメージリポジトリアドレスを再指定し、条件を満たすすべてのアプリケーションのイメージ構成に適用されます。有効な値:
<古いイメージレジストリ>: バックアップ時のアプリケーションの元のイメージレジストリアドレス。
<新しいイメージレジストリ>: 復元時のターゲットイメージレジストリアドレス。設定されていない場合、アプリケーションのイメージ構成は変更されません。
例:
元のクラスター内のアプリケーションがイメージ
registry.cn-beijing.aliyuncs.com/my-registry/nginx:v1を使用しており、registry.cn-hangzhou.aliyuncs.com/my-registry/nginx:v1に調整する必要がある場合は、このフィールドに次の構成を使用します。imageRegistryMapping: "registry.cn-beijing.aliyuncs.com/my-registry/": "registry.cn-hangzhou.aliyuncs.com/my-registry/"convertedarg
いいえ
StorageClass 変換リスト。OSS、NAS、CPFS、ローカルボリュームなどのファイルシステムタイプのボリュームの場合、このパラメーターを構成して、復元プロセス中に PVC の StorageClass を指定された StorageClass に変換できます。たとえば、NAS ボリュームをディスクボリュームに変換できます。
convertToStorageClassType: 目的の StorageClass。StorageClass が現在のクラスターに存在することを確認してください。ディスクまたは NAS StorageClass のみ指定できます。
namespace: PVC の名前空間。
persistentVolumeClaim: PVC の名前。
上記は、StorageClass 変換機能に必要なパラメーターです。
StorageClass の変換中に、ボリュームの AccessModes 構成を変更するための次のオプションパラメーターもサポートされています。
convertToAccessModes: 目的の AccessModes リスト。
説明AccessModes が ReadWriteMany または ReadOnlyMany に設定されているボリュームをディスクに復元する場合は、ディスクの強制デタッチを避けるために、AccessModes を ReadWriteOnce に設定する必要があります。
kubectl -ncsdr describe <バックアップ名>コマンドを実行して、バックアップの PVC 情報を照会できます。返されたstatus.resourceList.dataResource.pvcBackupInfoリストでは、dataType フィールドに PVC のデータ型が表示されます。これは、ファイルシステムまたはスナップショットです。nameSpace フィールドと pvcName フィールドには、PVC の名前空間と名前が表示されます。次のコマンドを実行して、リソースプランを作成します。
terraform plan次の出力が返された場合、リソースプランが作成されています。
次のコマンドを実行して、復元タスクを作成します。
terraform apply次の出力が返された場合、復元タスクが作成されています。
kubernetes_manifest.applicationrestore-demo: Creating... kubernetes_manifest.applicationrestore-demo: Creation complete after 1s Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
手順 5: バックアップセンターからリソースを削除する
他のクラスターも作成したバックアップボールトを使用している可能性があります。したがって、バックアップセンターでは BackupLocation オブジェクトを削除できません。
スケジュールバックアップタスクを削除する
terraform destroy コマンドを実行して BackupSchedule リソースを削除し、スケジュールバックアップタスクを停止できます。
バックアップタスクまたは復元タスクを削除する
次の内容を csdr.tf 構成ファイルに追加し、ビジネス要件に基づいて内容を変更します。
resource "kubernetes_manifest" "deleterequest-demo" { manifest = { apiVersion = "csdr.alibabacloud.com/v1beta1" kind = "DeleteRequest" metadata = { name = "<オブジェクト名-dbr>" namespace = "csdr" } spec = { deleteObjectName = "<オブジェクト名>" deleteObjectType = "Backup" } } }パラメーター
必須
説明
name
はい
削除リクエストの名前。
バックアップタスクを削除するには、次の形式でリクエスト名を指定します。バックアップタスクの ApplicationBackup 名 + "-dbr"。
復元タスクを削除するには、次の形式でリクエスト名を指定します。復元タスクの ApplicationRestore 名 + "-dbr"。
deleteObjectName
はい
削除するリソースの名前。
deleteObjectType
はい
削除するリソースのタイプ。有効な値:
"Backup": バックアップタスクの ApplicationBackup オブジェクトと関連リソースを削除します。
"Restore": 復元タスクの ApplicationRestore オブジェクトと関連リソースを削除します。
説明バックアップタスクを削除しても、クラスターに作成されたバックアップには影響しません。
復元タスクを削除しても、復元されたデータには影響しません。
次のコマンドを実行して、リソースプランを作成します。
terraform plan次の出力が返された場合、リソースプランが作成されています。
次のコマンドを実行して、リソースを削除します。
terraform apply次の出力が返された場合、
deleterequestリソースが作成され、リソースが削除されます。kubernetes_manifest.deleterequest-demo: Creating... kubernetes_manifest.deleterequest-demo: Creation complete after 0s Apply complete! Resources: 1 added, 0 changed, 0 destroyed.説明システムが
deleterequestリソースに基づいて対応するバックアップタスクまたは復元タスクを削除した後、deleterequestリソースも削除されます。
参考資料
kubectl を使用してアプリケーションをバックアップおよび復元する方法の詳細については、「kubectl を使用してアプリケーションをバックアップおよび復元する」をご参照ください。
ACK コンソールでアプリケーションをバックアップおよび復元する場合は、次のトピックをご参照ください。