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