クラウドでのKubernetesクラスタの設定について
クラウド内のKubernetesベースのトポロジには、ネットワーク・リソース、インスタンスの計算、Kubernetesノードなど多数のコンポーネントが含まれます。このような複雑なトポロジを効率的にデプロイおよび管理するには、Terraform構成ファイルでクラウド・インフラストラクチャをコード(IaC)として定義します。
トポロジを変更するには、適切なTerraformモジュールをバージョン管理し、リソース定義を更新して、改訂した構成を適用します。必要に応じて、前のバージョンのインフラストラクチャに簡単にロールバックできます。
このソリューションで提供されるTerraformビルディング・ブロックを使用して、クラウドベースのKubernetes環境に必要なインフラストラクチャをデプロイします。
アーキテクチャ
このソリューションで提供されるサンプル・トポロジでは、単一の仮想クラウド・ネットワーク(VCN)と必要なネットワーキングおよびKubernetesリソースをすべて単一のOracle Cloud Infrastructureリージョンに格納するためのTerraformコードが提供されます。
注意:
Terraformコードには入力変数が含まれており、これを使用してコンテナ化されたワークロードのネットワーク要件に合うようにアーキテクチャをチューニングしたり、必要なノード・プールのサイズと数、フォルト・トレランスの制約などを調整できます。- 仮想クラウド・ネットワーク(VCN)
トポロジ内のすべてのリソースは単一ネットワーク内に存在します。ネットワークのCIDR接頭辞を定義します(デフォルト: 10.0.0/16 )。
- サブネットサンプル・トポロジのVCNには、4つのサブネットがあります。サブネットのサイズを定義します。
サブネット デフォルトのCIDR接頭辞 説明 ベース・サブネット 10.0.1.0/29 オプションのベース・ホスト用のパブリック・サブネット。 ロード・バランサ・サブネット 10.0.2.32/27公開の場合(10.0.2.0/27が非公開の場合) ロード・バランサ・ノードのサブネット。サブネットがパブリックとプライベートのどちらであるかを選択します。 管理サブネット 10.0.1.8/29 オプションの管理ホストのプライベート・サブネットで、これには、 kubectl
、helm
、Oracle Cloud Infrastructure CLIなど、Kubernetesクラスタの管理に必要なツールが含まれます。ワーク・ノード・サブネット 10.0.64.0/18 Kubernetesワーカー・ノードのサブネット。サブネットがパブリックとプライベートのどちらであるかを選択します。 すべてのサブネットはリージョンです。つまり、アーキテクチャ・ダイアグラムのAD1、AD2およびAD3のように省略された、リージョン内のすべての可用性ドメインにまたがります。このため、ドメインの障害から保護されます。リージョン内の任意の可用性ドメインにデプロイするリソースに、リージョナル・サブネットを使用できます。
- ネットワーク・ゲートウェイ
- サービス・ゲートウェイ(オプション)
サービス・ゲートウェイを使用すると、VCNのリソースから、Oracle Cloud Infrastructure Object Storage、Oracle Cloud Infrastructure File Storage、Oracle Cloud Infrastructure DatabaseなどのOracleサービスにアクセスできるようになります。つまり、パブリック・インターネットへのトラフィックは公開されません。サービス・ゲートウェイを介した接続は、VCN内のリソースから開始できますが、リソースが通信するサービスからは開始できません。
- NATゲートウェイ(オプション)
NATゲートウェイを使用すると、VCNのプライベート・サブネットにアタッチされたコンピュート・インスタンスは、パブリック・インターネットにアクセスできます。NATゲートウェイを介した接続は、VCN内のリソースから開始できますが、パブリック・インターネットからは開始できません。
- インターネット・ゲートウェイ
インターネット・ゲートウェイを使用すると、パブリック・インターネットとVCN内のパブリック・サブネットのすべてのリソース間の接続が可能になります。
- サービス・ゲートウェイ(オプション)
- 基礎ホスト(オプション)
Bastionホストは、クラウドの外部からのトポロジへのエントリ・ポイントとして機能するコンピュート・インスタンスです。
基本ホストは通常DMZにプロビジョニングされます。これにより、クラウドの外部から直接アクセスできないプライベート・ネットワークにそれらのリソースを配置することで、機密のリソースを保護できます。定期的に監査できる、単一の既知のエントリ・ポイントを公開できます。したがって、トポロジの機密性の高いコンポーネントの公開は、それらへのアクセスを危険にさらすことなく回避できます。
サンプル・トポロジ内のベース・ホストはパブリック・サブネットに接続され、パブリックIPアドレスを持ちます。イングレス・セキュリティ・ルールは、パブリック・インターネットからベース・ホストへのSSH接続を許可するように構成されています。追加のセキュリティ・レベルを提供するために、特定のIPアドレス・ブロックからベース・ホストへのSSHアクセスのみを制限できます。
プライベート・サブネットのOracle Cloud Infrastructureインスタンスには、ベース・ホストを介してアクセスできます。これを行うには、
ssh-agent
転送を有効にします。この転送では、ベース・ホストに接続し、コンピュータから資格証明を転送して次のサーバーにアクセスできます。また、SSHトンネリングを動的に使用して、プライベート・サブネット内のインスタンスにアクセスできます。動的トンネルは、ローカルポート上のSOCKSプロキシを提供しますが、リモートホストからの接続です。 - ロード・バランサ・ノード(サンプル・コードには含まれません)
ロード・バランサ・ノードは、コンテナ化されたアプリケーションを実行している使用可能なKubernetesノードにトラフィックをインターセプトおよび分散します。アプリケーションをパブリック・インターネットからアクセスできる必要がある場合はパブリック・ロード・バランサを使用し、それ以外の場合はパブリックIPアドレスのないプライベート・ロード・バランサを使用します。アーキテクチャにはロード・バランサ・ノードは表示されません。
- 管理ホスト(オプション)
管理ホストを使用することで、
kubectl
、helm
およびクラウド外部のOracle Cloud Infrastructure CLIなどのインフラストラクチャ管理ツールのインストールおよび実行を回避できます。サンプル・トポロジ内の管理ホストはプライベート・サブネットにあり、ベース・ホストを介してアクセスできます。管理ホスト上でOracle Cloud Infrastructure CLIを実行できるようにするには、それをインスタンス・プリンシパルとして指定する必要があります。 - Kubernetes就業者ノード
Kubernetes就業者ノードは、コンテナ化済アプリケーションをデプロイできるコンピュート・インスタンスです。サンプル・トポロジでは、すべての就業者ノードが単一ノード・プールにあり、プライベート・サブネットにアタッチされます。ノード・プール数、各プールのサイズ、および要件に基づいたパブリック・サブネットを使用するかどうかをカスタマイズできます。
就業者ノードがプライベート・サブネットにアタッチされている場合、パブリック・インターネットから直接アクセスすることはできません。ユーザーは、ロード・バランサを介してコンテナ化されたアプリケーションにアクセスできます。
就業者ノードへのSSHアクセスを有効にする場合、管理者は、ベース・ホストを介して就業者ノードへのSSH接続を作成できます。
このアーキテクチャは、3つの就業者ノードを示し、それぞれがリージョン内の個別の可用性ドメインAD1、AD2およびAD3になります。注意:
コンテナ化されたアプリケーションをデプロイするリージョンに単一の可用性ドメインが含まれている場合、就業者ノードは可用性ドメイン内のフォルト・ドメイン(FD)間で分散されます。
必要なサービスおよび権限について
このソリューションには、次のサービスと権限が必要です。
サービス | 必要な権限 |
---|---|
Oracle Cloud Infrastructure Identity and Access Management | 動的グループおよびポリシーを管理します。 |
Oracle Cloud Infrastructure Networking | Vcn、サブネット、インターネット・ゲートウェイ、NATゲートウェイ、サービス・ゲートウェイ、ルート表およびセキュリティ・リストを管理します。 |
Oracle Cloud Infrastructure Compute | コンピュート・インスタンスを管理します。 |
Oracle Cloud Infrastructure Container Engine for Kubernetes | クラスタとノード・プールを管理します。
「クラスタの作成とデプロイメントのポリシー構成」を参照してください。 |