Member-only story
Kubernetesの障害復旧
VMWareのVeleroを使用して、バックアップとリストア、障害復旧の実行、およびKubernetesリソースの移行を行います。
Kubernetes(特にGKE、EKS、AKSなどのマネージドKubernetesサービス)は、セルフヒーリングと水平スケーリング機能を備え、すぐに利用可能な信頼性と回復力を兼ね備えていますが、本番システムでは、ヒューマンエラー(誤ってネームスペースやシークレットを削除してしまうなど)やKubernetes以外のインフラ障害(永続ボリュームなど)から守るための障害復旧ソリューションが依然として必要です。マルチリージョンソリューションを採用する企業が増えてきていますが、シンプルなバックアップとリストアのオプションだけを必要としている場合は、複雑でコストがかかる可能性があります。この記事では、Veleroを使用してKubernetesリソースのバックアップとリストアを行い、障害復旧や移行ツールとしての使用方法を紹介します。
Are Backups Still Needed?
バックアップは依然必要なのでしょうか。
高可用性(HA)モードでサービスを実行する際によく見落とされる重要なポイントは、HA(つまりレプリケーション)はバックアップを持つことと同じではないということです。HA は地域(リージョン)の障害からは保護されますが、データの破損や偶発的な削除からは保護できません。コンテキストやネームスペースをごちゃ混ぜにして、誤って間違ったKubernetesリソースを削除したり更新したりすることは非常によくあります。これはカスタムリソース定義(CRD)であったり、シークレットであったり、ネームスペースであったりします。TerraformのようなIaaSツールや、これらのKubernetesリソースの一部を管理する外部ソリューション(例: Vault for secret、ChartMuseum for Helm chartなど)では、バックアップが不要であるという意見もあるかもしれません。それでも、クラスタ内でStatefulSetを実行している場合(例えば、ロギング用のELKスタックや、RDSやCloud SQLではサポートされていないプラグインをインストールするためのPostgresのセルフホスティングなど)、永続ボリューム障害から復旧するためにはバックアップが必要です。
Velero
Velero(旧称:Ark)は、Heptio(VMWareに買収された)が提供するオープンソースのツールで、Kubernetesクラスタのリソースや永続ボリュームのバックアップとリストアを行います。VeleroはKubernetesクラスタ内で動作し、様々なストレージプロバイダ(AWS S3、GCP Storage、Minioなど)や resticと統合して、オンデマンドまたは定期的にスナップショットを取ることができます。