Kubernetesにおけるバックアップの5つのベスト・プラクティス


Kubernetesにおけるバックアップの5つのベスト・プラクティス

アプリケーションとデータのバックアップは、企業のIT部門における原則的な規律です。また、Kubernetesはアプリケーションサービスの高可用性とスケーラビリティの確保に役立ちますが、これらの利点はデータを保護するものではありません。そのため、Kubernetesアプリケーションのデータ管理とバックアップは不可欠であり、標準的な運用手順に組み込む必要があります。

しかし、Kubernetesアプリケーションのバックアップには、従来のバックアップ・ソリューションとは大きく異なる独自のアプローチが必要です。Kubernetesでは、アプリケーションは複数のコンテナでクラスタ内のノードに展開されます。アプリケーションをデータやストレージ・ボリュームとともにバックアップするためには、多種のKubernetesオブジェクトや構成データのすべてを考慮したソリューションが必要です。また、このソリューションは、高速なアプリケーション開発とデプロイメントサイクル、DevOpsの「shift-left」の哲学、オペレータ特有の課題、保護ギャップ、セキュリティ要件などにも対応する必要があります。

これらのユニークな要件を考慮すると、Kubernetesのバックアップは困難な作業のように思えるかもしれませんが、プロセスを簡素化するためにできることがあります。ここでは、5つのベストプラクティスをご紹介します。

1.Kubernetesアーキテクチャの考慮
典型的なKubernetesアプリケーションは、ポッド、サービス、証明、機密など、何百ものコンポーネントで構成されています。Kubernetesのバックアップソリューションは、データのバックアップとリストアだけでなく、これらすべてのコンポーネントのバックアップとリストアができなければなりません。ソリューションがAPIを介してKubernetesのコントロール・プレーンと自動的に相互作用し、クラスタ上で実行されているKubernetesアプリを検出するだけでなく、基盤となるコンピュート、ネットワーク、ストレージのインフラと統合することが重要です。

ストレージの統合も重要な検討事項であり、バックアップ計画に含まれていなければなりません。アプリケーションの設定データと同様に、Kubernetesのストレージ(アプリケーションコンテナで利用可能な永続的ボリュームとして表される)には、保護する必要のある重要なビジネスデータが含まれています。最後に、ストレージをどこにバックアップするかを決めます。ローカルのブロック・ストレージに保存するのか、それともクラウドに保存するのか。バックアップデータ用のセカンダリストレージには、柔軟性と使いやすさが重要な要件となります。

2.リカバリープランの策定
Kubernetesアプリケーションは分散型アーキテクチャであるため、データの復元には多くのステップが必要です。例えば、クラスタの依存関係を確認し、復元されたデータの新しいKubernetesビューを作成し、どこで復元を開始するかを決定する必要があります。そして、バックアップデータのソースを特定し、保存先のストレージを準備する必要があります。すべての計画を立てたら、すべてのコンポーネントを更新して、新しく作成されたストレージリソースを反映させなければなりません。事前に詳細な計画を作成することで、この複雑なプロセスをナビゲートすることができます。幸いなことに、これを自動で行ってくれるKubernetesのバックアップソリューションがありますので、この機能をサポートしているソリューションを探してみてください。

しかし、しっかりとした実行計画は始まりに過ぎません。また、バックアップ・プラットフォームが様々なステップを関連するKubernetesのAPIコールに変換できることを確認する必要があります。これにより、リカバリー機能を完了するために必要なリソースが利用可能であり、クラウドネイティブ・アプリケーションのすべてのコンポーネントが再デプロイされ、適切に設定されることが保証されます。

3.オペレーションの簡素化
バックアップにコードやパッケージ、デプロイメントの変更が必要な場合、開発者がそれを避けてしまうリスクがあります。開発者の目的は迅速なアプリケーションの開発と展開であり、複雑なバックアッププロセスは開発の妨げになります。

そのため、バックアップはAPIでシームレスに行うべきです。ソリューションには、個々のコンポーネントではなくアプリケーションに焦点を当てた自動化されたバックアップ・ポリシーと、新しいアプリケーションがデプロイされたときにそれを検出してバックアップする機能があることを確認してください。最後に、バックアップ・ソリューションがシンプルなワークフローを提供し、運用チームが規制や監視の要求に簡単に対応できることを確認してください。開発者がアプリケーションをリストアしたり、データサービスのバックアップ操作を拡張したりできるようなセルフサービス機能があればさらに良好でしょう。

4.セキュリティの確保
他のデータ管理機能と同様に、セキュリティは非常に重要です。Kubernetesのバックアップを行う際には、アイデンティティとアクセス管理、およびロールベースのアクセス管理(RBAC)のコントロールを実装し、許可されたユーザーやグループのみがバックアップ・プラットフォームにアクセスできるようにします。これにより、バックアップの監視と検証、リストアの実行などのタスクを誰が実行できるかを制御することができ、スナップショットからアプリを復元するための権限を開発者に付与することが可能になります。

ユーザのソリューションは、追加のツールやAPIを必要とすることなく、クラウドプロバイダーの認証ソリューションに統合されるべきです。最後に、転送中または保存中のデータが確実に暗号化されていることを確認してください。

5.Kubernetesのポータビリティの活用
Kubernetesのポータビリティ機能を活用するためには、バックアップソリューションは、種々のディストリビューションやインフラ構成でリストアを実行し、バックアップバージョンのアプリケーションを新しい環境で実行できるように自動的に変換できる必要があります。これにより、色々なユースケースが可能になります。例として「バックアップはクラスター内のネームスペース、ストレージシステム、バージョン、アベイラビリティーゾーンやリージョンを越えて使用可能でなければならない」があります。バックアップソリューションは、すべてのアプリケーションの依存関係を新しい環境と互換性があるように変換できることが重要である。

リカバリプロジェクトと同様に、事前に移行計画を立てておくことが成功の秘訣です。

Kubernetesネイティブなバックアップが最善の策
Kubernetesアプリケーションをデータの損失や破損から守ることが目的であれ、テストや開発のためにデータをバックアップすることが目的であれ、アプリケーションを新しい環境に移行することが目的であれ、あるいは組織のディザスタリカバリの取り組みをサポートすることが目的であれ、バックアップは効率的な運用が不可欠です。Kubernetes環境に特化して設計されたソリューションではなく、従来のソリューションを使用すると、偶発的なデータ損失や設定ミスのリスクが高まり、アプリケーションデータを保護するために必要なアプリケーションを意識したきめ細かなバックアップとリカバリ機能を提供することができません。Kubernetes環境でバックアップとリカバリーのベストプラクティスを遂行するためには、Kubernetesネイティブのバックアップソリューションが最適なアプローチとなります。

関連トピックス:

カテゴリー: クラウド・仮想インフラ タグ: , , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

 

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

この記事のトラックバック用URL