4 環境およびモジュール
この章では、Oracle Cloud Native Environmentの環境とモジュールの概念について説明します。
環境
「環境」は、Oracle Cloud Native Environmentによってインストールおよび管理されるソフトウェアをカプセル化するネームスペースです。 それぞれの環境には、Kubernetesモジュールが必ず含まれています。
Platform CLIを使用すると、多数のデプロイメントを作成および管理できます。 各デプロイメントには環境が含まれ、各環境には多数のモジュールが含まれる場合があります。 これにより、同じOracle Cloud Native Environmentインストールを使用して、多数のKubernetesクラスタを作成できます。 各Kubernetesクラスタには専用ノード、2つのクラスタまたは環境ではサーバーを使用できません。
図4-1 環境
モジュール
「モジュール」は、Oracle Cloud Native Environmentによってインストールおよび管理できる一連のソフトウェアです。 1つのモジュールは、あるデプロイメント内で少なくとも1つの特定の役割を果たします。 同じロールを果たすモジュールは、管理された方法でスワップ・アウトできます。 モジュールは、別のモジュールをカプセル化できます。
使用可能なモジュールは次のとおりです。
-
Kubernetesモジュール
-
Calicoモジュール
-
Multusモジュール
-
Oracle Cloud Infrastructure Cloud Controller Managerモジュール
-
MetalLBモジュール
-
Rookモジュール
-
KubeVirtモジュール
-
Operator Lifecycle Managerモジュール
-
NGINX Ingress Controllerモジュール
-
Istioモジュール
-
Prometheusモジュール
-
Grafanaモジュール
Helmは、オプション・モジュールをインストールするためにPlatform API Serverによって使用されます。 Helmは、Kubernetesのパッケージ・マネージャです。 Helmにより、Kubernetesクラスタ内でのソフトウェアのデプロイおよび管理のタスクが簡単になります。 Helmでは、チャートを使用してデプロイ可能なパッケージを管理します。 チャートは、関連する一連のKubernetesリソースを説明するファイルの集合です。
モジュールは、Kubernetesオペレータのカスタム・リソース定義(CRD)を使用してインストールされます。 モジュール・オペレータは、Kubernetes APIを拡張するオペレータで、モジュールCRDを使用してモジュール・リソースを定義します。 モジュール・オペレータは、これらのCRDを解釈してモジュールを取り付けます。
Kubernetesモジュール
Oracle Cloud Native Environmentのコア・モジュールはKubernetesモジュールです。 Kubernetesモジュールは、Kubernetesクラスタを環境にデプロイするために使用されます。
図4-2 Kubernetesモジュール
Kubernetesモジュールは、Kubernetesをノードにインストールして構成し、クラスタを設定します。
図4-3 Kubernetesクラスタ
Kubernetesモジュールには次のものが含まれます:
-
Flannel: Kubernetesクラスタのデフォルト・オーバーレイ・ネットワーク。
-
CoreDNS: KubernetesクラスタのDNSサーバー。
-
CRI-O: Kubernetesクラスタのコンテナ・ランタイムを管理します。
-
runC: Kubernetesクラスタのデフォルト軽量で移植可能なコンテナ・ランタイム。
-
Kata Containers: Kubernetesクラスタのオプションの軽量仮想マシン・ランタイム。
Kubernetesモジュールのインストールおよび使用の詳細は、「Kubernetesモジュール」を参照してください。
Calicoモジュール
Calicoモジュールは、CalicoをKubernetesクラスタにインストールします。 これにより、CalicoをKubernetesデータ・プレーンのCNIとして使用できます。
Calicoモジュールのインストールおよび使用の詳細は、「Calicoモジュール」を参照してください。
Multusモジュール
Multusモジュールは、KubernetesクラスタにMultusをインストールします。 これにより、Multusを使用してポッドへのネットワーク・ブリッジを作成できます。 Multusは、Kubernetesデータ・プレーンのCNIとしてCalicoまたはFlannelとともに使用できます。
Multusモジュールのインストールおよび使用の詳細は、「Multusモジュール」を参照してください。
Oracle Cloud Infrastructure Cloud Controller Managerモジュール
Oracle Cloud Infrastructure Cloud Controller Managerモジュールは、Oracle Cloud Infrastructureを使用して動的にプロビジョニングされる永続ストレージおよびアプリケーション・ロード・バランサを設定するために使用します。
Oracle Cloud Infrastructureブロック・ボリュームおよびファイル・ストレージは、様々なOracle Cloud Infrastructure仮想マシンおよびベア・メタル・インスタンスと連携するように設計された、信頼性の高い高パフォーマンス・ストレージを提供します。 組込みの冗長性により、ストレージは永続的で、仮想マシンの存続期間を超えて耐久性があります。 Oracle Cloud Infrastructure Cloud Controller Managerモジュールは、Oracle Cloud InfrastructureストレージにアクセスするためのKubernetes StorageClassプロビジョナを作成します。
Oracle Cloud Infrastructureフレキシブル・ネットワーク・ロード・バランシング・サービス(「Oracle Cloud Infrastructureロード・バランサ」)は、1つのエントリ・ポイントからVirtual Cloud Network (VCN)内の多数のバックエンド・サーバーへの自動トラフィック分散を提供します。 接続レベルで動作し、レイヤー3/レイヤー4 (IPプロトコル)データに基づいて受信クライアント接続を正常なバックエンド・サーバーにロード・バランシングします。
「Oracle Cloud Infrastructureロード・バランサ」は、Oracle Cloud Infrastructureで実行されているKubernetesアプリケーションのネットワーク・ロード・バランサを提供します。
Oracle Cloud Infrastructure Cloud Controller Managerモジュールのインストールおよび使用の詳細は、「Oracle Cloud Infrastructure Cloud Controller Managerモジュール」を参照してください。
MetalLBモジュール
MetalLBは、ベア・メタル・ホストで実行されているKubernetesアプリケーション用のネットワーク・ロード・バランサです。 MetalLBを使用すると、ベア・メタル環境で、従来はクラウド・プロバイダのネットワーク・ロード・バランサを使用するKubernetes LoadBalancerサービスを使用できます。
MetalLBモジュールは、MetalLBを使用してKubernetesアプリケーションのネットワーク・ロード・バランサを設定するために使用します。
MetalLBモジュールのインストールおよび使用の詳細は、「MetalLBモジュール」を参照してください。
Rookモジュール
Rookモジュールは、Cephを使用して動的にプロビジョニングされる永続ストレージを設定するために使用します。 RookはCeph上に構築されたコンテナ・ストレージ・プラットフォームです。 Rookは、Kubernetesクラスタ内でKubernetesオペレータとしてデプロイされ、Kubernetesコンテナ・ストレージ・インタフェースを使用してCephでバックアップされた永続ストレージをプロビジョニングするために必要な作業を自動化します。
Rookモジュールのインストールおよび使用の詳細は、「Rookモジュール」を参照してください。
KubeVirtモジュール
KubeVirtモジュールは、KubeVirtをインストールします。 KubeVirtは、Kubernetesクラスタで仮想マシンを作成および管理できる仮想化テクノロジです。 KubeVirtは、仮想マシンに対するKubernetesオーケストレーションおよび管理の利点を活用し、仮想マシンとコンテナを統合インフラストラクチャで実行できるようにします。 混合ワークロードの管理を簡素化し、リソース使用率を向上させ、Kubernetesクラスタの全体的な柔軟性とスケーラビリティを強化します。
KubeVirtモジュールのインストールおよび使用の詳細は、「KubeVirtモジュール」を参照してください。
Operator Lifecycle Managerモジュール
Operator Lifecycle Managerモジュールは、Kubernetesクラスタ内のKubernetesオペレータのインストールおよびライフサイクル管理を管理します。
Kubernetesオペレータは、タスクを自動化し、Kubernetesを拡張するコードを記述できる設計パターンです。 オペレータは、Kubernetesのサービスを定義するために使用できる一連の概念であり、Kubernetesでの管理サービスの自動化に役立ちます。
Operator Lifecycle Managerモジュールのインストールおよび使用の詳細は、「Operator Lifecycle Managerモジュール」を参照してください。
NGINX Ingress Controllerモジュール
NGINX Ingress Controllerモジュールは、NGINX Ingress Controllerのインストールに使用されます。
NGINX Ingress Controllerは、クラスタ内のサービスにアクセスするためのKubernetesイングレス・リソースの実装です。 Kubernetesイングレス・リソースの詳細は、「アップストリームのドキュメント」を参照してください。
NGINX Ingress Controllerモジュールのインストールおよび使用の詳細は、「NGINX Ingress Controllerモジュール」を参照してください。
Istioモジュール
Istioは、Kubernetesクラスタ内のマイクロサービスに対応するすべての機能を備えたサービス・メッシュです。 Istioは、マイクロサービス管理のほとんどの側面(ID、認証、トランスポート・セキュリティ、メトリック・スクレイピングなど)を処理できます。
Oracle Cloud Native EnvironmentのIstioモジュールは、IstioをKubernetesモジュール(クラスタ)にインストールします。
Istioモジュールは、Istioによってのみ使用されるコンポーネントをインストールします:
-
エグレス・ゲートウェイ
-
イングレス・ゲートウェイ
-
Istiod
-
Prometheus (Prometheusモジュールによってインストール)
-
Grafana (Grafanaモジュールによってインストール)
Istioモジュールをデプロイすると、Prometheusもサポート・モジュールとしてデプロイされます。 Prometheusは、Kubernetesクラスタのモニタリングとメトリック収集に使用されます。 Istioとともにデプロイされる別のサポート・モジュールは、Grafanaです。 Grafanaは、データベースに格納されている時系列データのモニタリングおよび視覚化ツールです。この場合、Prometheusです。 Grafanaを使用すると、Kubernetesクラスタ内のネットワーク・トラフィックおよびサービスを視覚的に問い合せて監視できます。 Grafanaには、Prometheusに収集されたメトリックを視覚化するためのブラウザ・ベースのダッシュボードが含まれています。
Istioモジュールのインストールおよび使用の詳細は、「Istioモジュール」を参照してください。
Prometheusモジュール
Prometheusは、各種のソースからメトリックなどの時系列データを収集して格納し、簡単に取得できる方法で提供するシステム・モニタリングおよびアラートのツールキットです。
Oracle Cloud Native EnvironmentのPrometheusモジュールは、Kubernetesクラスタ内の重要なシステムの豊富なモニタリングで構成されます。
PrometheusモジュールはIstioモジュールに必要であり、Istioが使用するPrometheusの埋込みインスタンスを作成するために使用されます。
ノート:
このリリースでは、PrometheusモジュールはIstioモジュール・デプロイメントのコンテキストでのみ使用されます。
Grafanaモジュール
Grafanaは、Prometheusの時系列データを問い合せ、そのデータをビジュアル化するダッシュボードを作成できるモニタリングおよびビジュアル化ツールです。 Kubernetesクラスタ、実行中のサービスおよびネットワーク・トラフィックを視覚的に監視できます。
Oracle Cloud Native EnvironmentのGrafanaモジュールは、Prometheusに接続してデータを読み取るように構成されています。
IstioモジュールではGrafanaモジュールが必要であり、Istioで使用するGrafanaのインスタンスを作成するために使用されます。
ノート:
このリリースでは、GrafanaモジュールはIstioモジュール・デプロイメントのコンテキストでのみ使用されます。