バックアップと復元
アップグレードを開始する前に、Kong Gatewayデータをバックアップしてください。 Kongでは、Kong Gatewayエンティティのバックアップとして、データベースネイティブバックアップと宣言型バックアップの2つのバックアップ方法をサポートしています。 データベースネイティブバックアップは、Kong Gatewayデータベース全体をバックアップするのに対し、宣言型バックアップは宣言型構成ファイルを管理することで機能します。
復旧の柔軟性を高めるため、両方の方法を使用してデータをバックアップすることをお勧めします。
- データベースネイティブツールは、宣言型ツールに比べて堅牢でかつデータを即座に復元できます。
- データが破損した場合は、まずデータベースレベルの復元を試みてください。そうでない場合は、新しいデータベースをブートストラップし、宣言型ツールを使用してエンティティデータ内でロードしてください。
キーリングマテリアルとKong Gateway構成ファイルは別々にバックアップする必要があります。 詳細については、以下のそれぞれのセクションを参照してください。
このガイドで説明するバックアップおよび復元の方法は、一般的な手順です。 インフラ、デプロイメント、ビジネス要件に合わせ、必要に応じて方法を修正してください。
バックアップと復元のための宣言型ツール
Kongには、宣言形式のKong Gatewayエンティティの管理をサポートするdecKとkong config CLIという2つの宣言型バックアップツールが付属しています。
-
データベースを基盤とするデプロイメント (従来モードおよびハイブリッドモード)では、これらのツールのいずれかを使用して作成されたバックアップは、追加の保護層として機能します。データベースネイティブのバックアップまたは復元によってデータベースが破損した場合は、宣言型ファイルにフォールバックしてデータを復元できます。
どちらのツールでも、データベースがデータのエクスポートとインポートに対応している必要があります。これらのツールを使用してデータをインポートまたはエクスポートするには、ユーザーとパスワードが初期化され、データベースがブートストラップされていることを確認してください。
-
DBレスのデプロイメント では特別なツールは必要ないため、宣言型のツールサポートはありません。宣言型ファイルを手動でバックアップします。
decKは一般的に、kong構成CLIよりも強力です。より多くの機能があり、キャッシュを自動的に無効化し、LRUキャッシュではなくデータベースからエンティティを取得します。さらに、パッチを適用する代わりにエンティティを上書きするので、指定した構成の正確なコピーがデータベースに保存されます。
ただし、decKには次のような制限もあります。
-
可用性 :decKではKong Gatewayがオンラインである必要があります。一方、kong config CLIではオンラインである必要はありません。
-
パフォーマンス :decKはエンティティの読み書きにAdmin APIを使用するため、特にエンティティの数が非常に多い場合は、予想以上に時間がかかることがあります。
この問題は、フラグ
--parallelism
をdeck gateway sync
またはdeck gateway diff
に渡してスレッド数を増やすか、またはdecKの 分散構成機能を使うことで解決できます。 -
decKが管理するエンティティ :decKは、RBACの役割、認証情報、キーリング、ライセンスなどのエンタープライズ専用エンティティを管理しません。これらのセキュリティ関連エンティティは、Admin APIまたはKong Managerを使用して個別に設定してください。 全リストについては、decKが管理するエンティティの参考資料を参照してください。
これらの制限があるため、データベースを使用して展開する場合は、データベースネイティブな方法を優先することをお勧めします。
Gatewayエンティティのバックアップ
データベースネイティブバックアップ
Kong Gatewayを新しいバージョンにアップグレードする場合は、kong migrations
ユーティリティを使用してデータベースの移行を実行する必要があります。kong migrations
コマンドは元に戻せません。移行で問題が発生した場合に備えて、アップグレードを開始する前はデータをバックアップすることをお勧めします。
データベースでKong Gatewayを実行している場合は、データベースネイティブな方法でデータベースを迅速に復旧できるように、生データのデータベースダンプを実行してください。これが、Kong Gatewayをバックアップするお勧めの方法です。
PostgreSQLでは、ユーティリティpg_dump
を使用して、 テキスト 形式、 tar 形式(圧縮なし)、 またはディレクトリ 形式(圧縮あり)でデータをダンプできます。以下に例を示します。
pg_dump -U kong -d kong -F d -f kongdb_backup_20230816
特に PostgreSQL インスタンスがKong Gateway以外のアプリケーションにもサービスを提供する場合は、CLI オプション-d
を使用して、エクスポートするデータベース(たとえば、kong
)を指定します。
宣言型バックアップ
Gatewayエンティティの復元
データベースネイティブの復元
データベースネイティブバックアップからKong Gateway構成データを復元するには、データベースが準備されていることを確認します。
PostgreSQLの場合:
-
kong.conf
で、pg_user
パラメータを使用してデータベースユーザーを設定します。pg_user = kong
-
kong.conf
で、pg_database
パラメータを使用してデータベース名を設定します。pg_database = kong
-
migrations
コマンドを使用してデータベースエンティティをブートストラップします。 詳細については、kong migrations
CLIリファレンスを参照してください。kong migrations bootstrap
-
以下のように、ユーティリティ
pg_restore
を使用してデータを復元できるようになりました。pg_restore -U kong -C -d postgres --if-exists --clean kongdb_backup_20230816/
宣言型の復元
ロールバックする必要がある場合は、Kong Gateway インスタンスを元のバージョンに戻してください。 宣言的な設定を検証して、それを Kong Gateway インスタンスに適用します。
キーリング素材のバックアップと復元
キーリングとデータ暗号化を有効にしている場合は、キーリング素材を個別にバックアップおよび復元する必要があります。
注 :暗号化キーは必ず安全な場所に保管してください。 暗号化キーを紛失すると、暗号化された Kong Gateway 設定データには永久にアクセスできなくなります。他の方法で回復させることはできません。
技術的な詳細については、手動バックアップ方法および自動バックアップ方法を参照してください。
その他のファイル
次のファイルを手動でバックアップします。
- Kong Gateway構成ファイルの
kong.conf
。 - キー、証明書、
nginx-kong.conf
、その他のファイルなど、Kong Gatewayプレフィックス内のファイル。 - Kong Gatewayデプロイメント用に作成したその他のファイル。
これらのファイルにはKong Gatewayエンティティが含まれていませんが、これらがないとKong Gatewayを起動できません。
注 : Kong Gatewayがステートレスである商用サービスを構築した場合、つまりAMIコンテナまたはDockerコンテナで構成されるすべてがバージョン管理で定義され、実行中のプラットフォームにプッシュされる場合、Kong Gatewayの構成パラメータを独自の操作方法または安全な方法でバックアップします。