Azure Backup を使用して Azure Kubernetes Service をバックアップする

この記事では、Azure Kubernetes Service (AKS) の構成とバックアップを行う方法について説明します。

Azure Backup では、クラスターにインストールする必要があるバックアップ拡張機能を使用して、AKS クラスター (クラスター リソースとクラスターにアタッチされている永続ボリューム) をバックアップすることができます。 バックアップ コンテナーは、このバックアップ拡張機能を介してクラスターと通信し、バックアップと復元操作を実行します。

Note

Azure Backup を使用した AKS のボールトへのバックアップとリージョンをまたがる復元は、現在プレビュー段階にあります。

開始する前に

  • 現在、AKS のバックアップでは、Azure Disk Storage ベースの永続ボリューム (CSI ドライバーによって有効化) のみがサポートされています。 バックアップは運用データストアにのみ保存されます (バックアップ データはテナントに保存され、コンテナーに移動されません)。 バックアップ コンテナーと AKS クラスターは、同じリージョンに存在する必要があります。

  • AKS バックアップでは、BLOB コンテナーとリソース グループを使用してバックアップを格納します。 BLOB コンテナーには、AKS クラスター リソースが保持されます。 永続ボリュームのスナップショットは、リソース グループに保存されます。 AKS クラスターとストレージの場所は、同じリージョンに存在する必要があります。 BLOB コンテナーの作成方法についてはこちらを参照してください。

  • 現在、AKS バックアップでは 1 日 1 回のバックアップがサポートされています。 1 日あたりのバックアップの頻度を増やすこともできます (4 時間、8 時間、12 時間ごと)。 このソリューションを使用すると、データを復元用に最大 360 日間保持することができます。 バックアップ ポリシーの作成の方法を確認してください。

  • バックアップ拡張機能をインストールして、AKS クラスターでバックアップと復元操作を構成する必要があります。 バックアップ拡張機能の詳細を確認してください。

  • バックアップの構成と復元操作を開始する前に、Microsoft.KubernetesConfigurationMicrosoft.DataProtection、および Microsoft.ContainerServiceTrustedAccessPreview 機能フラグがサブスクリプションに登録されていることを確認します。

  • AKS バックアップのバックアップや復元操作を開始する前に、すべての前提条件を実行してください。

サポートされているシナリオ、制限事項、可用性の詳細については、サポート マトリックスを参照してください。

バックアップ コンテナーの作成

バックアップ コンテナーは、経時的に作成された復旧ポイントを保存する管理エンティティです。 バックアップ コンテナーには、バックアップ操作を実行するためのインターフェイスも用意されています。 たとえば、オンデマンドでのバックアップ作成、復元の実行、バックアップ ポリシーの作成などの操作です。 AKS バックアップでは、バックアップ コンテナーと AKS クラスターが同じリージョンに存在する必要があります。 バックアップ コンテナーの作成方法についてはこちらを参照してください。

Note

バックアップ コンテナーは、新しくサポートされるデータソースをバックアップするために使用される新しいリソースです。 バックアップ コンテナーは Recovery Services コンテナーとは異なります。

Azure Backup を使用して、リージョンの障害から AKS クラスターを保護する場合:

  1. コンテナーの作成時に、バックアップ ストレージ冗長パラメーターをグローバル冗長として設定します。 コンテナーの冗長性が設定されると、無効にすることはできません。

    Screenshot shows how to enable the Backup Storage Redundance parameter.

  2. [コンテナーのプロパティ][リージョンをまたがる復元] パラメーターを [有効] に設定します。 このパラメーターを有効にすると、無効にすることはできません。

    Screenshot shows how to enable the Cross Region Restore parameter.

  3. コンテナー標準データストアの保持期間が設定されたバックアップ ポリシーを使用してバックアップ インスタンスを作成します。 このデータストアに保存されているすべての復旧ポイントは、セカンダリ リージョンに保存されます。

    Note

    コンテナー標準データストアは現在プレビュー段階です。

バックアップ ポリシーの作成

バックアップを構成する前に、バックアップの頻度と、バックアップの保有期間を定義したバックアップ ポリシーを作成する必要があります。

バックアップの構成時にバックアップ ポリシーを作成することもできます。

バックアップ ポリシーを作成するには:

  1. [バックアップ センター] に移動し、[ポリシー] を選択して新しいバックアップ ポリシーを作成します。

    Screenshot that shows how to start creating a backup policy.

    または、 [バックアップ センター]>[バックアップ ポリシー]>[追加] に移動します。

  2. [データ ソースの種類][Kubernetes Service] を選択して続行します。

    Screenshot that shows selecting the datasource type.

  3. バックアップ ポリシーの名前 ("既定のポリシー" など) を入力し、バックアップ ポリシーを作成する必要があるバックアップ コンテナー (作成した新しいバックアップ コンテナー) を選択します。

    Screenshot that shows providing the backup policy name.

  4. [スケジュールとリテンション期間] タブで、"バックアップの頻度" と、バックアップを運用およびコンテナー層 (別名、"データストア") に "保持する必要がある期間" を定義します。

    バックアップの頻度: "バックアップの頻度" (時間単位または日単位) を選択し、"バックアップの保有期間" を選択してください。

    Screenshot that shows selection of backup frequency.

    保持設定: 新しいバックアップ ポリシーには、2 つの保持ルールがあります。

    Screenshot that shows selection of retention period.

    日単位または時間単位で取得されるバックアップがより長い期間保存されるように、追加の保有ルールを作成することもできます。

    • 既定値: このルールにより、作成されたすべての運用層バックアップの既定の保有期間が定義されます。 このルールは編集のみ可能で、削除できません。

    • 毎日、最初に成功したバックアップを取得: 既定のルールに加えて、その日に最初に成功したバックアップをすべて、運用データストアとコンテナー標準ストアに保持することができます。 このルールは、編集および削除することができます (運用データストアでバックアップを保持する場合)。

      Screenshot that shows the retention configuration for Vault Tier and Operational Tier.

    また、"週、月、および年の最初に作成される正常なバックアップ" に対して同様のルールを定義することもできます。

    Note

    • 1 日の最初の正常なバックアップに加えて、週、月、年の最初に正常にバックアップするための保持ルールを定義できます。 優先順位の観点から、順序は年、月、週、日です。
    • コンテナー標準データストアは現在プレビュー段階です。 この機能を使用しない場合は、保持ルールを編集し、コンテナー標準データストアの横にあるチェック ボックスをオフにします。
    • コンテナー層に保存されているバックアップは、セカンダリ リージョン (Azure ペア リージョン) にもコピーできます。プライマリ リージョンが利用できない場合に、これを使用して AKS クラスターをセカンダリ リージョンに復元できます。 この機能を選択するには、"リージョンをまたがる復元" が有効になっている"geo 冗長コンテナー" を使用します。
  5. バックアップ頻度と保有設定を構成したら、[次へ] を選択します。

    Screenshot that shows the completion of a backup policy creation.

  6. [確認と作成] タブで、情報を確認し、[作成] を選びます。

バックアップを構成する

AKS バックアップを使用して、クラスター全体またはクラスターにデプロイされた特定のクラスター リソースをバックアップできます。 デプロイされたアプリケーションのスケジュールと保有の要件またはセキュリティ要件に従って、クラスターを複数回保護することもできます。

Note

同じ AKS クラスターに対して複数のバックアップ インスタンスを設定するには:

  • 同じバックアップ コンテナーに異なるバックアップ ポリシーを使用してバックアップを構成します。
  • 別のバックアップ コンテナーにバックアップを構成します。

AKS クラスターのバックアップを構成するには:

  1. Azure portal で、バックアップする AKS クラスターに移動します。

  2. リソース メニューで [バックアップ] を選択してから、[バックアップの構成] を選択します。

  3. バックアップまたは復元用に AKS クラスターを準備するには、[拡張機能のインストール] を選んで、クラスターにバックアップ拡張機能をインストールします。

  4. 入力として "ストレージ アカウント" と "BLOB コンテナー" を指定します。

    AKS クラスターのバックアップは、この BLOB コンテナーに保存されます。 ストレージ アカウントは、クラスターと同じリージョンとサブスクリプション内にある必要があります。

    [次へ] を選択します。

    Screenshot that shows how to add storage and blob details for backup.

  5. 拡張機能のインストールの詳細を確認し、[作成] を選びます。

    拡張機能のインストールが開始します。

    Screenshot that shows how to review and install the Backup extension.

  6. バックアップ拡張機能が正常にインストールされたら、[バックアップの構成] を選んで、AKS クラスターのバックアップの構成を開始します。

    このアクションは、バックアップ センターで実行することもできます。

    Screenshot that shows the selection of Configure Backup.

  7. バックアップ コンテナーを選択します。

    Screenshot that shows how to choose a vault.

    AKS クラスターをバックアップするには、バックアップ コンテナーで [Trusted Access] (信頼されたアクセス) を有効にしておく必要があります。 [信頼されたアクセス] を有効にするには、[アクセス許可の付与] を選びます。 既に有効な場合は、[次へ] を選びます。

    Screenshot that shows how to proceed to the next step after granting permission.

    Note

    • [信頼されたアクセス] を有効にする前に、サブスクリプション上の Microsoft.ContainerServices リソース プロバイダーの TrustedAccessPreview 機能フラグを有効にします。
    • AKS クラスターにバックアップ拡張機能がインストールされていない場合は、バックアップを構成するインストール ステップを実行します。
  8. バックアップのスケジュールとその保持期間を定義する "バックアップ ポリシー" を選びます。 [次へ] を選択します。

    Screenshot that shows how to choose a backup policy.

  9. [データソース] タブで、[追加/編集] を選んでバックアップ インスタンスの構成を定義します。

    Screenshot that shows how to define the Backup Instance Configuration.

  10. [バックアップするリソースの選択] ペインで、バックアップするクラスター リソースを定義します。

    詳細については、バックアップの構成に関する記事を参照してください。

    Screenshot that shows how to define the cluster resources for backup.

  11. [スナップショット リソース グループ] では、永続ボリューム (Azure Disk Storage) スナップショットの保存に使用するリソース グループを選択します。 次に、[検証] を選びます。

    Screenshot that shows how to validate the snapshot resource group.

  12. 検証が完了した後、スナップショット リソース グループのコンテナーに必要なロールが割り当てられていない場合は、エラーが表示されます。

    Screenshot that shows a validation error when required permissions aren't assigned.

  13. エラーを解決するには、[データソース名] の下でデータソースを選択し、[不足しているロールの割り当て] を選びます。

    Screenshot that shows how to start assigning roles.

    次のスクリーンショットは、選択できるロールの一覧を示しています。

    Screenshot that shows how to select missing roles.

  14. ロールの割り当てが完了したら、[次へ] を選択します。

    Screenshot that shows how to proceed to the backup configuration.

  15. [バックアップの構成] を選びます。

  16. 構成が完了したら、[次へ] を選択します。

    Screenshot that shows how to finish backup configuration.

    バックアップ構成が完了すると、バックアップ インスタンスが作成されます。

    Screenshot that shows the list of created backup instances.

    Screenshot that shows the backup instance details.

バックアップ構成

AKS バックアップ機能の一部として、すべてのクラスター リソースまたは特定のクラスター リソースをバックアップできます。 バックアップ構成に使用できるフィルターを使用して、バックアップするリソースを選択できます。 定義されたバックアップ構成は、バックアップ インスタンス名の値で参照されます。 次のオプションを使用して、バックアップする名前空間の値を選択できます。

  • [すべて (将来の名前空間を含む)]: これにより、基になるクラスター リソースがバックアップされるときに、現在および将来のすべての名前空間の値がバックアップされます。

  • [一覧から選択]: バックアップする AKS クラスター内の特定の名前空間の値を選択します。

    バックアップする特定のクラスター リソースを選択するには、リソースにアタッチされているラベルを使用して、バックアップにリソースを含めることができます。 入力したラベルを持つリソースのみがバックアップされます。 複数のラベルを使用できます。

    Note

    デプロイされ、バックアップ対象であるすべての YAML ファイルにラベルを追加する必要があります。 これには、永続ボリューム要求などの名前空間スコープのリソースと、永続ボリュームなどのクラスター スコープのリソースが含まれます。

    クラスター スコープのリソース、シークレット、永続ボリュームもバックアップする場合は、[その他のオプション] の下にある各項目を選択します。

Screenshot that shows various backup configurations.

AKS バックアップ中にフックを使用する

このセクションでは、バックアップ フックを使用して、MySQL がデプロイされた AKS クラスターのアプリケーション整合性スナップショット (MySQL インスタンスを含む永続ボリューム) を作成する方法について説明します。

AKS バックアップでカスタム フックを使用して、ボリュームのアプリケーション整合性スナップショットを実現できます。 ボリュームは、コンテナー化されたワークロードとしてデプロイされるデータベースに使用されます。

バックアップ フックを使用すると、ボリュームのアプリケーション スナップショットを取得できるように、MySQL ポッドを固定および固定解除するコマンドを定義できます。 次に、バックアップ拡張機能によって、フックでコマンドを実行するステップが調整され、ボリューム スナップショットが取得されます。

MySQL がデプロイされたボリュームのアプリケーション整合性スナップショットは、次のアクションを実行することによって作成されます。

  1. MySQL を実行しているポッドは固定されているため、データベースに対して新しいトランザクションは実行されません。
  2. ボリュームのスナップショットがバックアップとして取得されます。
  3. MySQL を実行しているポッドは固定解除されているため、データベースでトランザクションを再度実行できます。

MySQL をバックアップするためのバックアップ構成フローの一部としてバックアップ フックを有効にするには:

  1. PostgreSQL ポッドを固定および固定解除するコマンドを使用して、バックアップ フック用のカスタム リソースを記述します。

    定義済みのコマンドを含むサンプルの YAML スクリプト postgresbackuphook.yaml を使用することもできます。

    apiVersion: clusterbackup.dataprotection.microsoft.com/v1alpha1
    kind: BackupHook
    metadata:
    # BackupHook CR Name and Namespace
    name: bkphookname0
    namespace: default
    spec:
    # BackupHook Name. This is the name of the hook that will be executed during backup.
    # compulsory
    name: hook1
    # Namespaces where this hook will be executed.
    includedNamespaces: 
    - hrweb
    excludedNamespaces:
    labelSelector:
    # PreHooks is a list of BackupResourceHooks to execute prior to backing up an item.
    preHooks:
       - exec:
          command:
          - /sbin/fsfreeze
          - --freeze
          - /var/lib/postgresql/data
          container: webcontainer
          onError: Continue
    # PostHooks is a list of BackupResourceHooks to execute after backing up an item.
    postHooks:
       - exec:
          container: webcontainer
          command:
             - /sbin/fsfreeze
             - --unfreeze
          onError: Fail
          timeout: 10s
    
    
    
  2. バックアップを構成する前に、バックアップ フック カスタム リソースを AKS クラスターにデプロイする必要があります。

    スクリプトをデプロイするには、次の コマンドを実行します。

    kubectl apply -f mysqlbackuphook.yaml
    
    
  3. デプロイが完了したら、AKS クラスターのバックアップを構成できます。

    Note

    バックアップ構成の一部として、カスタム リソース名と、リソースがデプロイされる名前空間を入力として指定する必要があります。

    Screenshot that shows how to add the namespace for the backup configuration.

次のステップ