Bagikan melalui


Memulihkan Azure Kubernetes Service menggunakan Azure CLI

Artikel ini menjelaskan cara memulihkan kluster Azure Kubernetes dari titik pemulihan yang dibuat oleh Azure Backup menggunakan Azure CLI.

Azure Backup sekarang memungkinkan Anda mencadangkan kluster AKS (sumber daya kluster dan volume persisten yang terpasang pada kluster) menggunakan ekstensi cadangan, yang harus diinstal di kluster. Brankas cadangan berkomunikasi dengan kluster melalui Ekstensi Cadangan ini untuk melakukan operasi pencadangan dan pemulihan.

Anda dapat melakukan Pemulihan Lokasi Asli (OLR) (memulihkan di kluster AKS yang dicadangkan) dan Pemulihan Lokasi Alternatif (ALR) (memulihkan di kluster AKS yang berbeda). Anda juga dapat memilih item yang akan dipulihkan dari cadangan yaitu Pemulihan Tingkat Item (ILR).

Catatan

Sebelum Anda memulai operasi pemulihan, kluster target harus menginstal Ekstensi Cadangan dan Akses Tepercaya yang diaktifkan untuk brankas Cadangan. Pelajari lebih lanjut.

Sebelum memulai

  • Pencadangan AKS memungkinkan Anda memulihkan ke kluster AKS asli (yang dicadangkan) dan ke kluster AKS alternatif. Pencadangan AKS memungkinkan Anda melakukan pemulihan penuh dan pemulihan tingkat item. Anda dapat menggunakan konfigurasi pemulihan untuk menentukan parameter berdasarkan sumber daya kluster yang akan diambil selama pemulihan.

  • Anda harus menginstal Ekstensi Cadangan di kluster AKS target. Selain itu, Anda harus mengaktifkan Akses Tepercaya antara brankas Cadangan dan kluster AKS.

Untuk informasi selengkapnya tentang batasan dan skenario yang didukung, lihat matriks dukungan.

Memvalidasi dan menyiapkan kluster AKS target

Sebelum memulai proses pemulihan, Anda harus memvalidasi bahwa kluster AKS disiapkan untuk pemulihan. Ini termasuk Ekstensi Cadangan yang akan diinstal dengan ekstensi yang memiliki izin pada akun penyimpanan tempat cadangan disimpan dan Akses Tepercaya untuk diaktifkan antara kluster AKS dan brankas Cadangan.

Pertama, periksa apakah Ekstensi Cadangan diinstal di kluster dengan menjalankan perintah berikut:

az k8s-extension show --name azure-aks-backup --cluster-type managedClusters --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup

Jika ekstensi diinstal, periksa apakah ekstensi tersebut memiliki izin yang tepat pada akun penyimpanan tempat cadangan disimpan:

az role assignment list --all --assignee  $(az k8s-extension show --name azure-aks-backup --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv)

Jika peran tidak ditetapkan, maka Anda dapat menetapkan peran dengan menjalankan perintah berikut:

az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv) --role 'Storage Account Contributor'  --scope /subscriptions/$subscriptionId/resourceGroups/$storageaccountresourcegroup/providers/Microsoft.Storage/storageAccounts/$storageaccount

Jika Ekstensi Cadangan tidak diinstal, jalankan perintah penginstalan ekstensi berikut dengan akun penyimpanan dan kontainer blob tempat cadangan disimpan sebagai input.

az k8s-extension create --name azure-aks-backup --extension-type microsoft.dataprotection.kubernetes --scope cluster --cluster-type managedClusters --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --release-train stable --configuration-settings blobContainer=$blobcontainer storageAccount=$storageaccount storageAccountResourceGroup=$storageaccountresourcegroup storageAccountSubscriptionId=$subscriptionId

Kemudian tetapkan peran yang diperlukan ke ekstensi pada akun penyimpanan dengan menjalankan perintah berikut:

az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv) --role 'Storage Account Contributor'  --scope /subscriptions/$subscriptionId/resourceGroups/$storageaccountresourcegroup/providers/Microsoft.Storage/storageAccounts/$storageaccount

Periksa Akses Tepercaya

Untuk memeriksa apakah Akses Tepercaya diaktifkan antara vault Cadangan dan kluster AKS Target, jalankan perintah berikut:

az aks trustedaccess rolebinding list --resource-group $aksclusterresourcegroup --cluster-name $targetakscluster

Jika tidak diaktifkan, jalankan perintah berikut untuk mengaktifkan Akses Tepercaya:

az aks trustedaccess rolebinding create --cluster-name $targetakscluster --name backuprolebinding --resource-group $aksclusterresourcegroup --roles Microsoft.DataProtection/backupVaults/backup-operator --source-resource-id /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/BackupVaults/$backupvault

Memulihkan ke kluster AKS

Ambil titik pemulihan yang relevan

Ambil semua instans yang terkait dengan kluster AKS dan identifikasi instans yang relevan.

az dataprotection backup-instance list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --query aksAssignedIdentity.id

Setelah instans diidentifikasi, ambil titik pemulihan yang relevan.

az dataprotection recovery-point list --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --vault-name $backupvault

Menyiapkan permintaan pemulihan

Untuk menyiapkan konfigurasi pemulihan yang menentukan item yang akan dipulihkan ke kluster AKS target, jalankan az dataprotection backup-instance initialize-restoreconfig perintah .

az dataprotection backup-instance initialize-restoreconfig --datasource-type AzureKubernetesService >restoreconfig.json



{
  "conflict_policy": "Skip",
  "excluded_namespaces": null,
  "excluded_resource_types": null,
  "include_cluster_scope_resources": true,
  "included_namespaces": null,
  "included_resource_types": null,
  "label_selectors": null,
  "namespace_mappings": null,
  "object_type": "KubernetesClusterRestoreCriteria",
  "persistent_volume_restore_mode": "RestoreWithVolumeData"
}

Sekarang, siapkan permintaan pemulihan dengan semua detail yang relevan. Jika Anda memulihkan cadangan ke kluster asli, jalankan perintah berikut:

az dataprotection backup-instance restore initialize-for-item-recovery --datasource-type AzureKubernetesService --restore-location $region --source-datastore OperationalStore --recovery-point-id $recoverypointid --restore-configuration restoreconfig.json --backup-instance-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupInstances/$backupinstanceid >restorerequestobject.json

Jika kluster AKS Target untuk pemulihan berbeda dari kluster asli, jalankan perintah berikut:

az dataprotection backup-instance restore initialize-for-data-recovery --datasource-type AzureKubernetesService --restore-location $region --source-datastore OperationalStore --recovery-point-id $recoverypointid --restore-configuration restoreconfig.json --target-resource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$targetakscluster >restorerequestobject.json

Sekarang, Anda dapat memperbarui objek JSON sesuai kebutuhan Anda, lalu memvalidasi objek dengan menjalankan perintah berikut:

az dataprotection backup-instance validate-for-restore --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --restore-request-object restorerequestobject.json --vault-name $backupvault

Perintah ini memeriksa apakah kluster AKS dan vault Cadangan memiliki izin yang diperlukan satu sama lain dan grup sumber daya Snapshot untuk melakukan pemulihan. Jika validasi gagal karena izin yang hilang, Anda dapat menetapkannya dengan menjalankan perintah berikut:

az dataprotection backup-instance update-msi-permissions --datasource-type AzureKubernetesService --operation Restore --permissions-scope Resource --resource-group  $backupvaultresourcegroup --vault-name $backupvault --restore-request-object restorerequestobject.json --snapshot-resource-group-id /subscriptions/$subscriptionId/resourceGroups/$snapshotresourcegroup

Memicu pemulihan

Setelah penetapan peran selesai, Anda harus memvalidasi objek pemulihan sekali lagi. Setelah itu, Anda dapat memicu operasi pemulihan dengan menjalankan perintah berikut:

az dataprotection backup-instance restore trigger --restore-request-object restorerequestobject.json --ids /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupInstances/$backupinstancename 

Catatan

Selama operasi pemulihan, vault Backup dan kluster AKS harus memiliki peran tertentu yang ditetapkan untuk melakukan pemulihan:

  1. Kluster AKS target harus memiliki peran Kontributor pada Grup Sumber Daya Rekam Jepret.
  2. Identitas Pengguna yang dilampirkan dengan Ekstensi Cadangan harus memiliki peran Kontributor Akun Penyimpanan di akun penyimpanan tempat cadangan disimpan.
  3. Vault Backup harus memiliki peran Pembaca pada kluster AKS Target dan Grup Sumber Daya Rekam Jepret.

Pekerjaan pelacakan

Anda dapat melacak pekerjaan pemulihan menggunakan az dataprotection job perintah . Anda dapat mencantumkan semua pekerjaan dan mengambil detail pekerjaan tertentu.

Anda juga dapat menggunakan Resource Graph untuk melacak semua pekerjaan di semua langganan, grup sumber daya, dan brankas Cadangan. az dataprotection job list-from-resourcegraph Gunakan perintah untuk mendapatkan pekerjaan yang relevan.

az dataprotection job list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --operation Restore

Langkah berikutnya