複数の環境に対する自動DNS管理を使用したKubernetesクラスタのデプロイ
社内外の環境(開発、テスト、本番など)向けのクラウドDNS戦略の管理は、自動化されたソリューションなしでは複雑で時間がかかることがあります。理想的には、ユーザーと顧客の両方がドメインに移動でき、DNSソリューションが正しい環境のIPアドレスに直接移動する必要があります。この理想的なシナリオはユーザーフレンドリーであり、人的エラーを防ぐことができます。
Kubernetes ExternalDNSは、グローバル・ロード・バランシング、自動フェイルオーバー、DNSベースのトラフィック管理、ドメイン・ネーム・システム・セキュリティ拡張機能(DNSSEC)などの組込みのセキュリティ機能など、ユーザーが必要なドメインに簡単に移動できるようにするDNSソリューションを自動化する機能を提供し、改ざんやなりすまし攻撃から保護します。
このリファレンス・アーキテクチャでは、Oracle Cloud Infrastructure DNSゾーンおよびKubernetes ExternalDNSを使用した単一のkubernetesクラスタ・デプロイメントを使用して、複数の環境用に設計されたDNSソリューションを構成します。
アーキテクチャ
このアーキテクチャでは、OCI DNSゾーンにデプロイされたOCI Kubernetes Engineクラスタを使用して、ロード・バランサを介して公開されたサービスの「Aレコード」を保持します。このアーキテクチャでは、OCI Kubernetes Engine (OKE)クラスタに3つのワーカー・ノードと、デプロイメント分離用の3つの異なるネームスペースがあります。このアーキテクチャは、複数ではなく単一のクラスタを使用する複数環境OKEデプロイメントに使用します。
次の図は、このリファレンス・アーキテクチャを示しています。
マルチテナント-oke-dns-architecture.zip
各環境(開発、テスト、本番)には、ネームスペース、ポッド、サービスなどの独自のkubernetesコンポーネントのセットがあります。Kubernetes ExternalDNSでは、外部に公開されるkubernetesサービスのDNSレコードを自動的に作成および管理できます。これにより、外部クライアントがクラスタ内のサービスにアクセスしやすくなります。Kubernetesコンポーネントは、Kubernetes ExternalDNSにルーティングされ、OCIの各サービス・ロード・バランサを指す「レコード」が作成されます。
次の図は、このソフトウェアアーキテクチャーを示しています。
このアーキテクチャには、次のコンポーネントがあります。
- リージョン
Oracle Cloud Infrastructureリージョンとは、可用性ドメインと呼ばれる1つ以上のデータ・センターを含む、ローカライズされた地理的領域です。リージョンは他のリージョンから独立し、長距離の場合は(複数の国または大陸にまたがって)分離できます。
- 可用性ドメイン
可用性ドメインは、リージョン内の独立したスタンドアロン・データ・センターです。各可用性ドメイン内の物理リソースは、他の可用性ドメイン内のリソースから分離されているため、フォルト・トレランスが提供されます。可用性ドメインどうしは、電力や冷却、内部可用性ドメイン・ネットワークなどのインフラを共有しません。そのため、ある可用性ドメインでの障害は、リージョン内の他の可用性ドメインには影響しません。
- フォルト・ドメイン
フォルト・ドメインは、可用性ドメイン内のハードウェアおよびインフラストラクチャのグループです。各アベイラビリティ・ドメインに3つのフォルト・ドメインがあり、電源とハードウェアは独立しています。複数のフォルト・ドメインにリソースを分散する場合、アプリケーションは、物理サーバーの障害、システム・メンテナンスおよびフォルト・ドメイン内の電源障害を許容できます。
- 仮想クラウド・ネットワーク(VCN)およびサブネット
VCNは、Oracle Cloud Infrastructureリージョンで設定する、カスタマイズ可能なソフトウェア定義のネットワークです。従来のデータ・センター・ネットワークと同様に、VCNを使用するとネットワーク環境を制御できます。VCNには重複しない複数のCIDRブロックを含めることができ、VCNの作成後にそれらを変更できます。VCNをサブネットにセグメント化して、そのスコープをリージョンまたは可用性ドメインに設定できます。各サブネットは、VCN内の他のサブネットと重複しない連続した範囲のアドレスで構成されます。サブネットのサイズは、作成後に変更できます。サブネットはパブリックにもプライベートにもできます。
- ロード・バランサ
Oracle Cloud Infrastructure Load Balancingサービスは、単一のエントリ・ポイントからバックエンドの複数のサーバーへの自動トラフィック分散を提供します。
- セキュリティ・リスト
サブネットごとに、サブネット内外で許可する必要があるトラフィックのソース、宛先およびタイプを指定するセキュリティ・ルールを作成できます。
- OCI Kubernetes Engine
Oracle Cloud Infrastructure Kubernetes Engine (Kubernetes EngineまたはOKE)は、コンテナ化されたアプリケーションをクラウドにデプロイするために使用できる、完全に管理されたスケーラブルで可用性の高いサービスです。アプリケーションで必要なコンピュート・リソースを指定すると、KubernetesエンジンがそれらをOracle Cloud Infrastructureの既存のテナンシにプロビジョニングします。OKEは、Kubernetesを使用して、ホストのクラスタにわたるコンテナ化されたアプリケーションのデプロイメント、スケーリングおよび管理を自動化します。
- DNS
Oracle Cloud Infrastructure Domain Name System (DNS)サービスは、拡張性の高いグローバル・エニーキャスト・ドメイン・ネーム・システム(DNS)ネットワークで、DNSのパフォーマンス、自己回復性およびスケーラビリティが向上し、エンド・ユーザーがお客様のアプリケーションにいたるところからできるだけ速く接続できるようにします。
- パブリック/プライベートDNSゾーン
Oracle Cloud Infrastructure DNSサービスを使用すると、ゾーンを管理できます。ゾーンは、DNSネームスペースの一部です。Start of Authorityレコード(SOA)は、ゾーンを定義します。ゾーンには、特に指定がないかぎり、ツリー内でその下にあるすべてのラベルが含まれます。
レコメンデーション
- 仮想クラウド・ネットワーク(VCN)
VCNを作成するときには、必要なCIDRブロックの数を決定し、VCN内のサブネットにアタッチする予定のリソースの数に基づいて各ブロックのサイズを決定します。標準のプライベートIPアドレス領域内にあるCIDRブロックを使用します。
サブネットを設計するときには、トラフィック・フローおよびセキュリティ要件を考慮してください。特定の層またはロール内のすべてのリソースを、セキュリティ境界として機能できる同じサブネットにアタッチします。
- ロード・バランサの帯域幅
ロード・バランサの作成時に、固定帯域幅を提供する事前定義済のシェイプを選択するか、帯域幅範囲を設定するカスタム(フレキシブル)シェイプを指定して、トラフィック・パターンに基づいて帯域幅を自動的にスケーリングできます。どちらの方法でも、ロード・バランサの作成後にいつでもシェイプを変更できます。
考慮事項
単一のOCI Kubernetes Engineクラスタ内に複数の環境をデプロイする場合は、次の点を考慮してください。
- セキュリティ
Kubernetesネットワーク・ポリシーを使用してネームスペース接続を分離し、ロールベースのアクセス制御を使用してネームスペースの管理へのアクセスを制御することを検討してください。