マイクロサービスをKubernetesクラスタにデプロイ
マイクロサービス・アーキテクチャでは、各マイクロサービスはシンプルなタスクを実行し、REST APIリクエストなどの軽量のメカニズムを使用してクライアントまたは他のマイクロサービスと通信します。実行されるタスクに最適なプログラミング言語を使用して、各マイクロサービスをコーディングできます。マイクロサービスベースのアプリケーションはデプロイとメンテナンスが簡単です。
アーキテクチャ
このリファレンス・アーキテクチャは、Oracle Cloud InfrastructureのKubernetesクラスタにDockerコンテナとしてデプロイされたPython FlaskおよびRedisマイクロサービスを示しています。コンテナは、Oracle Cloud Infrastructure RegistryからDockerイメージをプルします。
次の図は、このリファレンス・アーキテクチャを示しています。

図マイクロサービスの説明-oci.png
このアーキテクチャには次のコンポーネントがあります。
- リージョン
Oracle Cloud Infrastructureリージョンは、可用性ドメインと呼ばれる1つ以上のデータ・センターを含む、ローカライズされた地理的領域です。リージョンは他のリージョンから独立し、広大な距離(国または大陸間)を分離できます。
- 可用性ドメイン
可用性ドメインは、リージョン内のスタンドアロンの独立したデータ・センターです。各可用性ドメインの物理リソースは、フォルト・トレランスを提供する他の可用性ドメインのリソースから分離されます。可用性ドメインでは、電源や冷却、内部の可用性ドメイン・ネットワークなどのインフラストラクチャは共有されません。そのため、ある可用性ドメインでの障害が、リージョン内の他の可用性ドメインに影響することはほとんどありません。
- フォルト・ドメイン
フォルト・ドメインは、アベイラビリティ・ドメイン内のハードウェアおよびインフラストラクチャのグループ。各可用性ドメインには、独立した電源とハードウェアを備えた3つのフォルト・ドメインがあります。複数のフォルト・ドメインにリソースを分散すると、アプリケーションは物理サーバーの障害、システム・メンテナンスおよびフォルト・ドメイン内の電源障害を許容できます。
- 仮想クラウド・ネットワーク(VCN)とサブネット
VCNは、Oracle Cloud Infrastructureリージョンで設定する、カスタマイズ可能なソフトウェア定義のネットワークです。VCNは、従来のデータ・センター・ネットワークと同様に、ネットワーク環境を完全に制御できます。VCNには複数の重複しないCIDRブロックを含めることができ、VCNの作成後に変更できます。VCNをサブネットに分割できます。サブネットは、リージョンまたは可用性ドメインにスコープ指定できます。各サブネットは、VCN内の他のサブネットと重複しない連続したアドレスの範囲で構成されます。サブネットのサイズは、作成後に変更できます。サブネットはパブリックまたはプライベートにできます。
- Container Engine for Kubernetes
Oracle Cloud Infrastructure Container Engine for Kubernetesは、コンテナ化されたアプリケーションをクラウドにデプロイするために使用できる、完全に管理されたスケーラブルで可用性の高いサービスです。アプリケーションで必要なコンピュート・リソースを指定すると、Container Engine for KubernetesがそれらをOracle Cloud Infrastructureの既存テナンシにプロビジョニングします。Container Engine for Kubernetesは、Kubernetesを使用して、ホストのクラスタ間でコンテナ化されたアプリケーションのデプロイメント、スケーリングおよび管理を自動化します。
- レジストリ
Oracle Cloud Infrastructure Registryは、開発から本番へのワークフローを簡略化できる、Oracle管理のレジストリです。レジストリによって、Dockerイメージなどの開発アーティファクトを簡単に格納、共有および管理できます。Oracle Cloud Infrastructureの高可用性とスケーラブルなアーキテクチャにより、アプリケーションを確実にデプロイおよび管理できます。
推奨
お客様の要件は、ここで説明するアーキテクチャとは異なる場合があります。開始点として次の推奨事項を使用します。
- VCN
VCNを作成する際、VCNのサブネットにアタッチする予定のリソース数に基づいて、必要なCIDRブロックの数および各ブロックのサイズを決定します。標準プライベートIPアドレス領域内にあるCIDRブロックを使用します。
プライベート接続を設定する予定のその他のネットワーク(Oracle Cloud Infrastructure、オンプレミス・データ・センターまたは別のクラウド・プロバイダ)と重複しないCIDRブロックを選択します。
VCNを作成した後、そのCIDRブロックを変更、追加および削除できます。
サブネットを設計する際は、トラフィック・フローおよびセキュリティ要件を考慮してください。セキュリティ境界として機能する、特定の層またはロール内のすべてのリソースを同じサブネットにアタッチします。
リージョナル・サブネットを使用します。
簡素化するために、このアーキテクチャでは、パブリック・サブネットを使用してContainer Engine for Kubernetesをホストします。プライベート・サブネットを使用することもできます。その場合、NATゲートウェイを使用して、クラスタからのパブリック・インターネットへのアクセスを許可します。
- Container Engine for Kubernetes
このアーキテクチャでは、ワーカー・ノードはVM.Standard2.1シェイプを使用し、Oracle Linuxで実行されます。2つのワーカー・ノードを使用して2つの異なるマイクロサービスをホストしますが、各クラスタ上に最大1000ノードを作成できます。
- レジストリ
Oracle Cloud Infrastructure Registryを内部使用のためのプライベートDockerレジストリとして使用し、Dockerイメージをレジストリにプッシュして、レジストリからプルします。また、それをパブリックDockerレジストリとして使用することもできます。これにより、インターネット・アクセスを持つユーザーおよび適切なURLを使用して、レジストリ内のパブリック・リポジトリからイメージをプルできます。
注意事項
- 拡張性
ロードに応じて、Kubernetesクラスタ内のワーカー・ノードの数を更新して、アプリケーションをスケール・アウトできます。同様に、クラスタ内のワーカー・ノード数を減らすことでスケール・インできます。Kubernetesクラスタにサービスを作成すると、ロード・バランサを作成して、そのサービスに割り当てられているノード間でサービス・トラフィックを分散できます。
- アプリケーションの可用性
フォルト・ドメインでは、単一の可用性ドメイン内で最適な耐障害性が提供されます。複数の可用性ドメインで同じタスクを実行するインスタンスまたはノードをデプロイすることもできます。この設計では、冗長性を導入することで、単一障害点を取り除きます。
- 管理性
このアーキテクチャは2つのマイクロサービスを使用します。1つはPython Flaskマイクロサービスであり、CRUD操作を実行するシンプルなWebアプリケーションです。その他のマイクロサービスは、Redisインメモリー・データベースです。Python-Flaskマイクロサービスは、Redisマイクロサービスと通信してデータを取得します。
- セキュリティ
会社が所有するどのOracle Cloud Infrastructureリソースに誰がアクセスできるか、およびその方法を制限するポリシーを使用します。
Container Engine for Kubernetesは、Oracle Cloud Infrastructure Identity and Access Management (IAM)と統合されています。IAMは、ネイティブOracle Cloud Infrastructureのアイデンティティ機能による簡単な認証を提供します。
デプロイ
OKEクラスタをデプロイするために必要なコードは、GitHubにあります。このコードはマイクロサービスをデプロイしません。
コードを1回のクリックでOracle Cloud Infrastructure Resource Managerにプルし、スタックを作成してデプロイできます。または、GitHubからコンピュータにコードをダウンロードし、コードをカスタマイズし、Terraform CLIを使用してアーキテクチャをデプロイします。
- Oracle Cloud Infrastructure Resource Managerを使用してデプロイ:
をクリックします
まだサインインしていない場合は、テナンシおよびユーザー資格証明を入力します。
- 契約条件をレビューして受け入れます。
- スタックをデプロイするリージョンを選択します。
- 画面に表示されるプロンプトと指示に従ってスタックを作成します。
- スタックの作成後、「Terraformアクション」をクリックし、「プラン」を選択します。
- ジョブが完了するまで待機し、プランを確認します。
変更を行うには、「スタック詳細」ページに戻り、「スタックの編集」をクリックして必要な変更を行います。次に、「計画」処理を再実行します。
- これ以上変更が必要ない場合は、「スタックの詳細」ページに戻り、「Terraformアクション」をクリックして「適用」を選択します。
- Terraform CLIを使用してデプロイ:
- GitHubに移動します。
- コードをダウンロードしてローカル・コンピュータにクローニングします。
README.md
の手順に従ってください。
変更ログ
このログには、重大な変更がリストされます。
2023年11月22日 |
|
2022年9月15日 | デプロイ可能なTerraformにOKEクラスタが含まれていることが明確になりました。マイクロサービスはデプロイされません。 |
2021年11月10日 |
|
2021年1月5日 | Oracle Cloud Infrastructure Resource Managerを使用したアーキテクチャのデプロイ手順が追加されました。 |
2020年9月9日 | 「デプロイ」セクションを追加しました。 |