第13章 Kubernetesと外部サービスの統合 外部サービスとKubernetesを統合する
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
本書の多くの章では、Kubernetesでサービスを構築、デプロイ、管理する方法について説明してきた。しかし、実際のところ、システムは真空の中に存在するわけではなく、構築するサービスのほとんどは、実行するKubernetesクラスタの外部に存在するシステムやサービスと相互作用する必要がある。これは、仮想マシンや物理マシンで稼働しているレガシーインフラからアクセスされる新しいサービスを構築するために必要なことかもしれない。さらに、構築しているサービスが、オンプレミスのデータセンター内の物理インフラで稼働している既存のデータベースやその他のサービスにアクセスする必要があるためかもしれない。最後に、相互接続が必要なサービスを持つ複数のKubernetesクラスタがあるかもしれない。これらすべての理由から、Kubernetesクラスタの境界をまたぐサービスを公開、共有、構築する機能は、実世界のアプリケーションを構築する上で重要な役割を果たす。
Kubernetesにサービスをインポートする
Kubernetesと外部サービスを接続するための最も一般的なパターンは、Kubernetesクラスタの外部に存在するサービスを消費するKubernetesサービスで構成される。多くの場合、これはKubernetesが新しいアプリケーション開発に使用されているか、オンプレミスのデータベースのようなレガシーリソースのインタフェースとして機能しているためだ。多くの既存アプリケーションでは、アプリケーションの一部は他の部分よりも移動しやすい。例えば、ミッションクリティカルなデータを含むデータベースは、データガバナンス、コンプライアンス、事業継続性などの理由から、オンプレミスに留まる必要があるかもしれない。同時に、こうしたレガシーデータベースへの新しいインタフェースをKubernetesで構築することには大きな利点がある。もしKubernetesへのマイグレーションのたびにアプリケーション全体のリフト&シフトが必要だとしたら、多くのアプリケーションは永遠にレガシー実装のままでなければならなくなるだろう。その代わりにこの章では、新しいアプリケーションのクラウドネイティブ開発を、従来の仮想マシンやベアメタルサーバ、あるいはメインフレーム上で稼働しているデータベースなどの既存サービスと統合する方法を紹介する。
Kubernetesから外部サービスにアクセスできるようにするタスクを考えると、最初の課題は単純にネットワーキングを正しく動作させることだ。ネットワーキングを動作させるための詳細は、データベースの場所とKubernetesクラスタの場所の両方に固有である。そのため、本書の範囲を超えているが、一般的にクラウドベースのKubernetesプロバイダは、ユーザが提供する仮想ネットワーク(VNET)へのクラスタのデプロイを可能にし、それらの仮想ネットワークをオンプレミスのネットワークでピアリングすることができる。
Kubernetesクラスタ内のPodとオンプレミスのリソース間のネットワーク接続を確立したら、次の課題は外部サービスをKubernetesサービスのように見せることだ。Kubernetesでは、サービス検出はDNS(Domain Name System)ルックアップを介して行われるため、外部データベースをKubernetesのネイティブな一部であるかのように感じさせるには、同じDNSでデータベースを検出できるようにする必要がある。 ...