新しい IBM Developer JP サイトへようこそ!サイトのデザインが一新され、旧 developerWorks のコンテンツも統合されました。 詳細はこちら

IBM Developer Blog

IBM Developer サイトで最新の出来事をフォローし、情報を入手しましょう。

エンタープライズ Kubernetes アプリケーション OpenShift の歴史と、そこに IBM Cloud Kubernetes サービスが絡んできた経緯を振り返ります。


最近、Red Hat® OpenShift® が IBM Cloud 上のオファリングとして加わったことで、私は OpenShift の起源と、開発者たちの間で OpenShift が絶大な人気を集めている理由を知りたくなりました。先日行われた KubeCon Conference で話し合う機会を持った開発者や、昼食の場に居合わせた開発者の多くが、OpenShift をどのように使っているかについて語っていました。金融機関でトランザクションを分析している開発者からも、小売業で新しいカスタマー・エクスペリエンスを作り出している開発者からも OpenShift の話題を耳にしました。

OpenShift はハイブリッド・クラウドのエンタープライズ Kubernetes アプリケーション・プラットフォームです。IBM Cloud では現在、OpenShift をホスト型ソリューションまたはオンプレミス PaaS (Platform as a Service) として利用できるようになっています。このオファリングは Red Hat Enterprise Linux を基盤にコンテナーを中心として構成されていて、Kubernetes によってオーケストレーションおよび管理されています。

クラウド・コンピューティングが成長するにつれ、OpenShift は最もよく使われている開発およびデプロイメント・プラットフォームの 1 つになり、そのメリットに応じた尊敬の念を受けています。クラウド開発はこれまでよりも「普通のこと」になっているため、クラウド・ソリューションを作成するためのツールボックスに含まれる 1 つのツールとしての OpenShift の位置付けは興味深いところです。レガシーのオンプレミス・ソフトウェア、クラウドの機能、Cloud Foundry、あるいはベアメタルの手法を融合していることも考えられます。

このブログ記事で、私は同僚の Olaph Wagoner と一緒に時間を遡って OpenShift の起源を振り返り、Kubernetes を使用したエンタープライズ・アプリケーション開発の世界で OpenShift が今後どのように進化していくのかを考えたいと思います。

以下のグラフは、OpenShift、IBM、Kubernetes のタイムラインを示しています。

OpenShift、IBM、Kubernetes のタイムライン

初期の OpenShift: 2011 年~ 2013 年

OpenShift が最初にリリースされたのは 2011 年です。Joe Fernandes 氏がブログ記事「Why Red Hat Chose Kubernetes for OpenShift」で説明しているように、当時は Linux コンテナーにデプロイされてユーザー・アプリケーションとして実行されていました。

OpenShift は 2011 年に誕生した時点では、Linux コンテナーにデプロイされて実行されるユーザー・アプリケーションでした。OpenShift V1 と V2 では、その基盤として Red Hat 独自のプラットフォーム固有のコンテナー・ランタイム環境とコンテナー・オーケストレーション・エンジンを使用していました。

OpenShift の歴史はそのリリース以前から始まっています。OpenShift が誕生した背景には、2010 年 11 月に発表された Makara の買収が絡んでいます。この買収により、OpenShift はシステムの抽象化層となるソフトウェアを入手し、PHP と Java アプリケーション対応のランタイム環境、Tomcat または JBoss アプリケーション・サーバー、そして Apache Web サーバーを組み込むようになりました。

初期の OpenShift では「ギア」が使用されていました。ギアは、一種のコンテナー・テクノロジーの独自仕様です。つまり、OpenShift ノードはある種のコンテナー化を組み込んでいたのです。ギアの例えは、そこに含まれているものに由来します。OpenShift がギアと名付けたのは、メカニズム全体を取り壊さずに実行環境を生成することができる分離されたクラスターです。個々のギアにはユーザーが関連付けられます。ギアからテンプレートを作成するために、OpenShift はカートリッジを使用しました。これが、Makara から獲得したソフトウェアです。

OpenShift 自体は 2012 年までオープンソースではありませんでした。2013 年 6 月に公開された V2 で、カートリッジの形式が変更されました。

あらゆるものを変える Docker

Docker は dotCloud という企業が開始したプロジェクトで、2013 年 3 月にオープンソース化されました。Docker は、開発者がスキルを磨き、すでに持っているスキルをこのプラットフォームに移入することを可能にする高度なツールにより、コンテナーを世に広めました。

Red Hat は Docker をいち早く採用し、2013 年 9 月に Docker とのコラボレーションを発表しました。一方、IBM は 2014 年 12 月に Docker との独自の戦略的パートナーシップを築きました。Docker は不可欠のコンテナー・テクノロジーのうちの 1 つであり、このプロジェクトが開始された初期の頃から何名もの IBM エンジニアがコードを提供しています。

Kubernetes

Google が取り組んでいた Kubernetes は 2014 年に初めて発表され、標準的なコンテナー管理手段になりました。

元々は Google が設計したものですが、現在はオープンソース・プロジェクトとして Cloud Native Computing Foundation (CNCF) によって保守されており、Red Hat と IBM から多大な貢献を受けています。

kubernetes.io での説明を引用すると、Kubernetes の目的は、複数のホストからなるクラスター全体にわたり「アプリケーション・コンテナーのデプロイ、スケーリング、運用を自動化するシステム」を提供することにあります。この目的を果たすべく、Kubernetes は Docker をはじめとする広範なコンテナー・ツールと連動します。

コンテナーを使用すると、データベースに依存しないモジュール式アプリケーション設計に移行できるため、マシンをスケーリングせずにアプリケーションをスケーリングすることが可能になります。

Kubernetes も IBM が初期の頃から貢献しているオープンソース・プロジェクトの 1 つです。以下のグラフではコンテナー関連プロジェクトへのコントリビューター上位 5 社というコンテキストで、IBM が Docker、Kubernetes、Istio のそれぞれにどのくらいの割合で貢献しているかを確認できます。このグラフには、IBM にとってのコンテナー・テクノロジーの重要性と、オープンソースに対する IBM の尽力が明らかに示されています。

オープンソース・コンテナー・テクノロジへの IBM の貢献の一部

OpenShift V3.0: オープンなスタンダード

2014 年 8 月、Red Hat は OpenShift V3 で Docker を採用する意向を発表しました。V2 から V3 への更新に際し、内部の仕組みが大々的に変更されました。OpenShift はギアとカートリッジではなく、コンテナーとイメージを使用するようになったのです。イメージのオーケストレーションに対応するために、V3 では Kubernetes も導入されました。

開発者の世界は Kubernetes の導入も温かく迎え入れました。それには次の理由が含まれます。

  • Kubernetes ポッドを使用すると、1 つ以上のコンテナーを 1 つのアトミック単位としてデプロイできます。

  • サービスからは 1 つの固定されたアドレスでポッドのグループにアクセスできます。また、統合された IP と DNS ベースのサービス・ディスカバリーを使用して一連のサービスをリンクすることもできます。

  • レプリケーション・コントローラーにより、目的の数のポッドが常に稼働中になるよう管理されます。また、ラベルを使用してポッドと他の Kubernetes オブジェクトを識別できます。

  • 強力なネットワーキング・モデルが、複数のホストにわたるコンテナーの管理を可能にします。

  • ストレージのオーケストレーション機能を使用して、コンテナー内でステートレスなサービスとステートフルなサービスの両方を実行できます。

  • 単純化されたオーケストレーション・モデルによりアプリケーションを迅速に起動できます。複雑な 2 層スケジューラーを使用する必要はありません。

  • 開発者とオペレーターのニーズは異なることを踏まえ、両方の要件が考慮されたアーキテクチャーになっています。そのため、開発者にとって重要な機能とオペレーターにとって重要な機能のどちらも妥協する必要がありません。

OpenShift は、Source-To-Image およびパイプライン・テクノロジーによって迅速にアプリを作成してデプロイできる強力なユーザー・インターフェースを導入しました。Kubernetes をベースとしたこれらのインターフェースは、開発を単純化して新しい開発者層を引き込みます。

IBM はすでに、OpenShift を構成する主要なオープンソース・コンポーネントにコードをコミットしています。以下のグラフは、OpenShift と Kubernetes のタイムラインを示しています。

OpenShift と Kubernetes のタイムライン

OpenShift V4.0 と今後の行方

Red Hat は明らかにコンテナー・テクノロジーの最前線に立っています。CNCF プロジェクトへの貢献に関しても、Google に次いで第 2 位です。Red Hat の最近の実績としては、2018 年 1 月の CoreOS の買収も含める価値があります。CoreOS の主力製品は、コンテナー化されたアプリケーションを実行するために設計された軽量の Linux オペレーティング・システムでした。Red Hat はこれを OpenShift の V4 で「Red Hat Enterprise Linux CoreOS」として利用可能にしています。

V4 に向けて行われている多くの画期的な開発は他にもまだあります。上のタイムラインのグラフに示されているように、OpenShift Service Mesh により、Istio のモニタリング機能に Jaeger と Kiali の可視化能力が結合されることになります。さらに Knative サーバーレス機能が組み込まれ、アプリケーション管理の自動化を促す Kubernetes の Operator も組み込まれます。

V4 にはさまざまな取り組みが結集されてもいます。IBM は IstioKnativeTekton の主要なオープンソース・コード・コントリビューターです。これらのテクノロジーは今後の 10 年に向けたコンテナー・ベースのエンタープライズ開発の経路となります。

OpenShift V4.0 が発表されたのはつい最近のことであり、Red Hat OpenShift on IBM Cloud™ という Red Hat OpenShift と IBM Cloud Kubernetes サービスを結合する新しいコラボレーションが始まっています。その他のハイライトについては、上のタイムラインのグラフをご覧ください。

まとめ

OpenShift の起源と歴史を調べるのは興味深いことでした。OpenShift というレンズを通してソフトウェア開発を見ると、この 10 年間はまさにコンテナーの時代と言えます。

Red Hat が過去 10 年にわたり、コンテナー・プラットフォームを作り出すためにどれだけのエネルギーを注ぎ、焦点を絞って意欲を傾け、テクノロジーの層を重ね、IBM が興味を示しているテクノロジーを前進させ、エンジニアリング・リソースを投入してきたかを考えると感動的なものがあります。

今後もこれらすべてのクラウド・テクノロジーを使用して、知識と進化が重ねられていくことを期待しています。