OpenShiftとは?
OpenShiftとは、Red Hat社が提供するコンテナソリューションを指します。OpenShiftを説明する前に、まずはコンテナの成り立ちを説明します。
コンテナ登場までは仮想マシンを用いたサーバー仮想化が広く利用されていましたが、個々の仮想ノードでOSが起動することでメモリー使用量やCPU消費がシステム資源から割当され、アプリケーション開発から導入までを切り替える際にも開発者がすぐに対応できない問題がありました。
そのため、DockerコンテナによるOSレベル仮想化ソフトウェアが登場し、Kubernetesがコンテナオーケストレーションのソフトウェアとして利用拡大しました。
OpenShiftは、Kubernetesを企業向けに活用するためにセキュリティアップデートとサポートを提供し差別化を図ったコンテナソリューションです。 参考:Red Hat OpenShift
OpenShiftの特長とメリット
Kubernetesはスピーディに機能追加がされており、およそ3か月ごとにマイナーバージョンアップがされています。マイナーバージョンアップのスピードが速いのが利点ですが、サポート終了も早いという欠点があります。このサイクルは企業が安定的・継続的に運用する際の障壁となっているのが実態です。
OpenShiftでは、安定的・継続的にシステム運用するために以下の特長とメリットを持っています。
・CI/CD(Continuous Integration/Continuous Delivery)機能の実装 開発コードをベースに、アプリケーション実行環境のコンテナをビルドする一連のCI/CD機能を実装しています。そのため、開発をしながらデリバリを継続実施する自動化された手順を運用に組み込み効率を高めることができます。
・長期サポートの提供 マイナーバージョンアップが短期間でリリースされるKubernetesでは、サポート期間の短さが悩みの種となっています。この課題に対し、OpenShiftではKubernetesを含んた製品長期サポートを提供しており、企業向けの利用を見据えた差別化が図られています。
・セキュリティ機能を標準搭載 OpenShiftでは、Kubernetesにエンタープライズ用途のセキュリティ機能を搭載しています。具体的には脆弱性に対処するセキュリティ修正をパッチ提供し、セキュリティ機能を追加搭載することでニーズに対応するものです。
OpenShiftとKubernetesの違いは?
Kubernetesは開発者に人気のあるコンテナソリューションです。しかしながら、商用で利用するためには追加モジュールを組み合わせる必要があります。車のパーツを例にわかりやすく言うと、Kubernetesは車のパーツを個別に調達し、好きな部品を組み合わせて利用するイメージです。
OpenShiftではわかりやすく言うと、必要な部品が装備されている完成車のイメージとなります。OpenShiftは企業向けに継続的・安定的に利用できる製品とサービスが同梱・内包されていますので、汎用的に企業向けに利用できるメリットがあります。
OpenShiftとDockerの違いは?
Dockerも代表的なコンテナソリューションで、OSレベル仮想化ソフトウェアとして用いられています。
Kubernetes登場まではDockerコンテナが直接活用されていました。しかしながら、Dockerはコンテナの自動化に必要とされるオーケストレーション機能が十分とは言えず、コンテナとして利用されているものの後に登場したKubernetesにオーケストレーションの主役の座を奪われてしまいました。
特にKubernetesベースのプロジェクトであるCloud Native Computing Foundation(CNCF)が発足してからは、Kubernetesがデファクトスタンダードとなっています。CNCFはクラウドベンダーや仮想化ソフトウェアベンダーの多くが賛同しているプロジェクトで、Linux Foundationのプロジェクトの1つに位置づけられています。
OpenShift入門と概要
OpenShiftは2011年、独自実装のLinuxコンテナソリューションとしてリリースされました。コンテナとは仮想マシンとは異なり、アプリケーションの動作環境を仮想的に実装する技術です。仮想OSが不要ですのでアプリケーションの起動が速く、効率的にシステム資源を利用することができます。
OpenShiftはその後仕様変更によりv3でDockerをコンテナとして採用し、Kubernetesをオーケストレーション技術として採用したことで利用者が増加しました。v4ではアーキテクチャの変更をさらに行い差別化が図られています。
OpenShiftのソースコードビルド方法ですが、Source-to-image(S2I)を用いることで簡単にDockerイメージを生成できるようになっています。
OpenShiftクラスタとは
OpenShiftクラスタとは、コンテナオーケストレーションの実装を意味します。OpenShiftクラスタを構築することで必要とされるアプリケーションをコンテナで管理し、負荷分散や業務切り替えに利用します。
OpenShiftのアーキテクチャと構成図
OpenShiftはマスターノードとワーカーノードに分類できます。マスターノードとは、ワークロードのデプロイを管理するノードで1つまたは複数のマスターノードで構成されています。ワーカーノードとは、コンテナアプリケーションの実行ノードで1つ以上のノードから成ります。
コンテナ管理の最小単位はPodと呼んであり、アプリケーションは1つ以上のPodとしてデプロイされます。各ノードはRed Hat Core OSがベースOSとして稼働し、その上で複数のコンテナが稼働します。さらにノード群全体をクラスタと呼び、マスターノードが全体を管理します。
Red Hat Core OSには、Ignition・cri-o・Kubeletが含まれています。Ignitionとは、OpenShift Container Platform のノード起動するための初回システム設定ソフトウェアです。cri-oは、Kubernetes ネイティブコンテナランタイムインターフェイスです。Kubeletは、Kubernetes のプライマリノードエージェントです。
構成図としてはクラウドサービスと連携するサービス層、端末接続を行うルーティング層の間にマスターノードとワーカーノードを配置します。ワーカーノードはクラスターネットワークで接続します。
OpenShiftの管理形態
OpenShiftは、ユーザがカスタマイズしながら運用するセルフマネージドソフトウェアとして利用できます。この他、主要パブリッククラウド上でフルマネージド型のサービスとしても利用可能です。OpenShiftサービスを提供する主要クラウドサービスは以下のものが挙げられます。
・Azure Red Hat OpenShift マイクロソフト社が提供するAzureで提供されるAzure Red Hat OpenShift(ARO)は、Kubernetesを拡張したOpenShiftクラスタをフルマネージドでデプロイ運用することができます。 参考:Azure Red Hat OpenShift のドキュメント
・Red Hat OpenShift on IBM Cloud IBM社が提供するIBM Cloud コンソールで、クラシック Red Hat OpenShift on IBM Cloudおよび仮想プライベート・クラウド(VPC)第 2 世代コンピュート・インフラストラクチャのクラスターデプロイが可能です。 参考:Red Hat OpenShift on IBM Cloud 概説
・Red Hat OpenShift Service on AWS AWSが提供するRed Hat OpenShift Service on AWS(ROSA)は、オンプレミスのKubernetesをパブリッククラウド上のフルマネージドOpenShiftクラスタへの移行を促進します。公式サイトの説明情報は豊富ですので、Red Hat社AWS社ともに力をいれていることが分かります。 参考:Red Hat OpenShift Service on AWS概要 参考:Red Hat OpenShift Service on AWS詳細 参考:AWS での Red Hat OpenShift
OpenShiftを活用して、企業向けコンテナソリューションに適用しましょう
OpenShiftは企業向けにKubernetesを利用する上で障壁となっていた、長期保守とセキュリティ機能を搭載します。CI/CD機能も実装されているので、開発コードをすぐに商用展開することができます。
パブリッククラウドとの連携もしっかりされているので、企業向けおすすめのコンテナソリューションです。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから