第2章 OpenShift Container Platform の概要

OpenShift Container Platform は、クラウドベースの Kubernetes コンテナープラットフォームです。OpenShift Container Platform の基盤は、Kubernetes に基づいているため、同じテクノロジーを共有しています。アプリケーションおよびアプリケーションをサポートするデータセンターで、わずか数台のマシンとアプリケーションから、何百万ものクライアントに対応する何千ものマシンに拡張できるように設計されています。

OpenShift Container Platform を使用すると、以下を実行できます。

  • 開発者および IT 組織に、セキュアでスケーラブルなリソースへのアプリケーションのデプロイに使用できる、クラウドアプリケーションプラットフォームを提供する。
  • 設定および管理のオーバーヘッドを最小限に抑える。
  • Kubernetes プラットフォームをお客様のデータセンターおよびクラウドに導入する。
  • セキュリティー、プライバシー、コンプライアンス、ガバナンスの要件を満たす。

Kubernetes を基盤とする OpenShift Container Platform には、大規模な通信、ビデオストリーミング、ゲーム、銀行取引、およびその他のアプリケーションのエンジンと同様にサービスを提供する技術が組み込まれています。Red Hat のオープンテクノロジーに実装することで、コンテナー化されたアプリケーションを、単一クラウドを超えてオンプレミスおよびマルチクラウド環境へと拡張することが可能です。

2.1. OpenShift Container Platform の共通用語集

この用語集では、一般的な Kubernetes および OpenShift Container Platform の用語を定義します。

Kubernetes
Kubernetes は、コンテナー化されたアプリケーションのデプロイ、スケーリング、管理を自動化するための、オープンソースのコンテナーオーケストレーションエンジンです。
コンテナー
コンテナーは、ワーカーノードの OCI 準拠のコンテナーで実行されるアプリケーションインスタンスおよびコンポーネントです。コンテナーは、Open Container Initiative (OCI) 準拠のイメージのランタイムです。イメージはバイナリーアプリケーションです。ワーカーノードは、多数のコンテナーを実行できます。ノードの能力は、ベースとなるリソースがクラウド、ハードウェア、または仮想化のいずれであっても、そのリソースのメモリーおよび CPU の機能に関連します。
Pod

Pod は、1 つのホスト上に共にデプロイされる 1 つまたは複数のコンテナーです。一緒に配置されたコンテナーのグループおよびボリュームや IP アドレスなどの共有リソースで設定されます。Pod は、定義、デプロイ、および管理される最小のコンピュート単位でもあります。

OpenShift Container Platform では、Pod はデプロイ可能な最小単位として個別のアプリケーションコンテナーに代わるものです。

Pod は、OpenShift Container Platform ではオーケストレーションされた単位です。OpenShift Container Platform は、同じノード上の Pod のすべてのコンテナーをスケジュールし、実行します。複雑なアプリケーションは数多くの Pod で設定され、それぞれが独自のコンテナーを持ちます。これらは外部と連携し、また OpenShift Container Platform 環境内で相互に連携します。

レプリカセットおよびレプリケーションコントローラー
Kubernetes のレプリカセットと OpenShift Container Platform のレプリケーションコントローラーの両方が利用可能です。このコンポーネントの役割は、指定された数の Pod レプリカが常時実行されるようにすることです。Pod が終了または削除されると、レプリカセットまたはレプリケーションコントローラーが別の Pod を起動します。必要以上の Pod が実行されている場合、指定されたレプリカ数となるように、レプリカセットは必要な数だけ削除します。
Deployment および DeploymentConfig

OpenShift Container Platform は、Kubernetes の Deployment オブジェクトと OpenShift Container Platform の DeploymentConfigs オブジェクトの両方を実装します。ユーザーはどちらかを選択できます。

Deployment オブジェクトは、アプリケーションを Pod としてロールアウトする方法を制御します。これらは、レジストリーから取得してノード上に Pod としてデプロイするコンテナーイメージの名前を特定します。デプロイする Pod のレプリカ数を設定し、プロセスを管理するレプリカセットを作成します。示されるラベルは、Pod をデプロイするノードをスケジューラーに指示します。ラベルのセットは、レプリカセットがインスタンス化する Pod 定義に含まれます。

Deployment オブジェクトは、Deployment オブジェクトのバージョンと、許容されるアプリケーションの可用性を管理するための各種のロールアウトストラテジーに基づいて、ワーカーノードにデプロイされる Pod を更新できます。OpenShift Container Platform の DeploymentConfig オブジェクトにはさらに変更トリガーの機能が追加され、新しいバージョンのコンテナーイメージが利用可能になったり、その他の変更が生じたりすると、新しいバージョンの Deployment オブジェクトを自動的に作成できます。

サービス

サービスは、Pod の論理セットとアクセスポリシーを定義します。Pod が作成および破棄されるときに使用する他のアプリケーションの永続的な内部 IP アドレスおよびホスト名を提供します。

サービス層は、アプリケーションコンポーネント同士を結合します。たとえば、フロントエンドの Web サービスは、そのサービスと通信してデータベースインスタンスに接続します。サービスを使用すると、アプリケーションコンポーネント間の単純な内部負荷分散が可能になります。OpenShift Container Platform は、検出を容易にするために、サービス情報を実行中のコンテナーに自動的に挿入します。

ルート
ルートは、www.example.com などの外部から到達可能なホスト名を指定して、サービスを公開する手段です。各ルートは、ルート名、サービスセレクター、セキュリティー設定 (任意) で設定されます。ルーターは、定義されたルートやそのサービスによって識別されるエンドポイントを使用して、外部クライアントがアプリケーションへの到達に使用できる名前を指定できます。完全なマルチレイヤーのアプリケーションをデプロイすることは簡単ですが、OpenShift Container Platform 環境外からのトラフィックは、ルーティングレイヤーがないとアプリケーションに到達できません。
ビルド
ビルドとは、入力パラメーターを結果として作成されるオブジェクトに変換するプロセスです。ほとんどの場合、このプロセスは入力パラメーターまたはソースコードを実行可能なイメージに変換するために使用されます。BuildConfig オブジェクトはビルドプロセス全体の定義です。OpenShift Container Platform は、ビルドイメージからコンテナーを作成し、それらを統合レジストリーにプッシュすることで、Kubernetes を活用します。
プロジェクト

OpenShift Container Platform はプロジェクトを使用して、ユーザーや開発者のグループが連携できるようにし、分離およびコラボレーションの単位として機能します。リソースのスコープを定義し、プロジェクト管理者およびコラボレーターがリソースを管理できるようにし、クォータや制限でユーザーのリソースを制限し、追跡します。

プロジェクトは、追加のアノテーションを備えた Kubernetes namespace です。これは、通常ユーザーのリソースへのアクセスを管理する中心的な手段です。プロジェクトにより、ユーザーコミュニティーは、他のコミュニティーと切り離された状態で独自のコンテンツを整理し、管理することができます。ユーザーは、管理者からプロジェクトへのアクセス権限を受け取る必要があります。ただし、クラスター管理者は、開発者が専用のプロジェクトを作成するのを許可できます。この場合、ユーザーは自動的に専用のプロジェクトにアクセスできます。

各プロジェクトには、オブジェクト、ポリシー、制約、およびサービスアカウントの独自のセットがあります。

プロジェクトは namespace としても知られています。

Operator

Operator は Kubernetes ネイティブアプリケーションです。Operator の目的は、運用上の知識をソフトウェアに配置することです。従来、この知識は管理者の頭の中、シェルスクリプトのさまざまな組み合わせ、または Ansible などの自動化ソフトウェアにのみ存在していました。これは Kubernetes クラスター外にあり、統合するのが困難でした。Operator により、これらのすべてが変わります。

Operator は、ご自分のアプリケーションに合わせて構築されます。また、Kubernetes の概念や API とネイティブに統合することで、一般的な Day 1 作業 (インストールおよび設定) ならびに Day 2 作業 (スケールアップ/ダウン、設定の変更、更新、バックアップ、フェイルオーバー、および復元) を、Kubernetes クラスター内で実行されるソフトウェアの一部で実装し自動化します。これは Kubernetes ネイティブアプリケーションと呼ばれます。

Operator では、アプリケーションを Pod、デプロイメント、サービス、または設定マップなどの基本要素のコレクションとして扱わないでください。代わりに、Operator は、アプリケーションにとって意味のあるオプションを公開する単一のオブジェクトとして扱う必要があります。