Red Hat OpenShift は、エンタープライズ向けに設計されたオープンソースのコンテナオーケストレーションプラットフォームです。中心となるのは、オープンソースプロジェクト OKD(旧称 OpenShift Origin) を基盤とした OpenShift コンテナオーケストレーションソフトウェアで、複数のコンテナ技術が統合されています。
OpenShift には、Kubernetes コンポーネントに加え、大規模エンタープライズで求められる セキュリティ機能 や 生産性向上の機能 が組み込まれており、特に ハイブリッドクラウド環境 での利用に適しています。
OpenShift Container Platform は、パブリッククラウドまたはオンプレミスインフラ上で稼働する企業向け プライベート PaaS(Platform as a Service) です。Red Hat Enterprise Linux (RHEL) 上で動作し、Kubernetes によるオーケストレーションで管理される Docker ベースのアプリケーションコンテナ群として機能します。
本記事は、オープンソースに関する包括的なガイドシリーズの一部です。
OpenShift Container Platform には、以下のような豊富な機能と特長があります。
OpenShift は、開発者がアプリケーションを容易に構築できるよう設計された Docker ベースのシステム です。Linux ベースのコンテナイメージ作成を抽象化するレイヤードアーキテクチャを採用し、複数ホスト上のコンテナのクラスター管理とオーケストレーションは Kubernetes が担います。
OpenShift Container Platform はこれに加えて、ソースコード、イメージ、アプリケーションの管理といった追加機能を提供します。さらにクラスターを支えるネットワーク基盤を備え、大規模組織におけるユーザーやチームのトラッキングを可能にします。
OpenShift Container Platform はマイクロサービスで構成されています。これらには REST API(コアオブジェクトへのアクセスを提供)や コントローラー(コンテナ化されたワークロードに変更を加え、ステータスを報告)が含まれます。これらマイクロサービスは Kubernetes クラスター上で稼働し、オブジェクトデータを etcd に保存します。
REST API への呼び出しにより、システムの状態を変更できます。コントローラーは REST API を通じて送られた望ましい状態を読み取り、それに従ってオブジェクトを変更します。例えば、ユーザーが「ビルド」オブジェクトを作成すると、ビルドコントローラーがリクエストを検知して実行し、完了後に REST API を通じてオブジェクトのステータスを更新します。
この仕組みにより、OpenShift Container Platform の多くの機能を拡張でき、ビルドの実行方法をイメージ管理とは独立してカスタマイズできます。コントローラーをカスタマイズすれば、定義したロジックに基づいた動作を実現できます。
さらに、API を利用して一般的な管理作業をスクリプト化でき、コントローラーを通じてシステムの状態を監視したり変更を実行したりできます。また、ユーザーアクティビティのイベントストリームに基づき、コンテナを活用してシステム変更を行い、ワークロードを実際の負荷や要件に応じて動的に調整することも可能です。
ソース: OpenShift
Red Hat OpenShift と Kubernetes は、どちらもコンテナ化アプリケーションを実行するための代表的なプラットフォームです。前述のとおり、OpenShift は本質的に Kubernetes を基盤としており、基本機能に加えて追加の機能を備えています。以下では主な違いを整理します。
● ディストリビューション
Kubernetes はオープンソースのコンテナオーケストレーションプラットフォームであり、Amazon EKS、Azure AKS、Google GKE、Rancher など複数のベンダーがマネージドサービスを提供しています。
一方、OpenShift は Kubernetes を基盤としていますが、Kubernetes ディストリビューションとは見なされません。OpenShift は拡張機能やアドオンを提供する独自のプラットフォームです。
● ワークフローと構成
OpenShift は Kubernetes を基盤としているため、基本原則は共通しています。クラスターにアプリケーションをデプロイする際は、YAML または JSON で構成ファイルを記述し、デプロイ方法を定義します。両者ともにロードバランシングやルーティング機能をサポートし、オンプレミスでもパブリッククラウドでも稼働可能です。
● API と統合性
OpenShift は Kubernetes API に準拠しているため、Kubernetes にデプロイ可能なアプリケーションは OpenShift にもデプロイ可能です。違いは、OpenShift が独自のツールや拡張機能をサポートしている点にあります。
● コマンドラインツール
Kubernetes ディストリビューションは通常、kubectl を主要なコマンドラインツールとして使用します。OpenShift では oc が利用され、kubectl と似ていますが、複雑な管理作業を簡素化する追加機能を備えています。
● ログ管理とダッシュボード
Kubernetes はさまざまなログツールと互換性があり、ユーザーは好みに応じてログ管理方法を選択できます。OpenShift ではログ管理は EFK(Elasticsearch、Fluentd、Kibana) に依存します。
Kubernetes のダッシュボードはアドオンであり、コアコンポーネントではありませんが、OpenShift には Web 管理コンソール が標準搭載されています。
● オペレーティングシステムのサポート
Kubernetes のノードは任意の Linux OS 上で動作でき、ワーカーノードは Windows 上でも稼働可能です。これに対し、OpenShift のノードは Red Hat Enterprise Linux CoreOS を必須とします。