CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
前回は、OpenShiftが提供する環境の全体像を紹介しました。「アプリケーションの開発/実行環境をイメージ化する」というDockerの機能を活用して、従来のPaaSよりも広い範囲の利用方法に対応していることが分かりました。今回からは、この全体像を元にして、「ImageStream」「BuildConfig」「DeployConfig」と言ったOpenShiftに固有の機能を紹介していきます。
今回は、イメージストリーム(ImageStream)による、Dockerイメージのバージョン管理機能です。
はじめに、前回示したOpenShiftの全体像を改めて掲載しておきます(図1)。
図1 OpenShiftが提供する環境の全体像
この図を見ると、さまざまな担当者の間をDockerイメージが移動していく様子が分かります。イメージに含まれる内容で考えると、イメージの種類は大きく次の3つに分かれます。
・ベースイメージ:OSレベルのファイルのみが入ったイメージ
・開発テンプレートイメージ:開発に必要なフレームワークなどが入ったイメージ
・アプリケーションイメージ:実行可能なアプリケーションが入ったイメージ
図1では、「公式RHELイメージ」と「開発環境イメージ」が、それぞれ、ベースイメージと開発テンプレートイメージに相当します。そして、「開発中アプリイメージ」「開発済みアプリイメージ」「テスト済みアプリイメージ」は、すべて、アプリケーションイメージにあたります。1つのアプリケーションイメージが、「開発中」→「開発済み(テスト中)」→「テスト済み」と段階を経て変わっていくわけですが、これは、図2のように捉えることができます。
図2 イメージストリームによるイメージのバージョン管理
図2の一番右側は、開発者が日々あたらしく作り出すイメージです。Gitでソースコードを管理していると、日々、新しくコードが追加/修正されていきますが、これと同じ考え方です。開発者がビルドしたイメージには、すべて固有のハッシュ値が付与されて、それぞれが区別できるようになっています。このように、特定のイメージに対する日々の変化を追跡する仕組みが「イメージストリーム」になります。
また、イメージストリーム上の特定のイメージ対して、識別用の「タグ」を付けることができます。図2の例では、本番環境で使用中のイメージには、「本番用」というタグが付いています。また、新しく追加したイメージには、自動的に「Latest」というタグが付与されます。
アプリケーションの開発が進んでいき、リリーステストが可能になった段階で、アプリ開発者は、このイメージをテスト担当者に引き継ぎます。これは、「テスト用」というタグを付けることで行ないます。図2のように、「テスト用」タグを付けることで、テスト担当者に対して、テスト対象のイメージを指定します。
一方、リリーステストを終えたテスト担当者は、そのイメージを本番環境にデプロイするわけですが、これは、「本番用」タグを付けかえることで対応します。図2には、現在、本番環境で使用中のイメージに「本番用」タグがついています。これを新たにテストが完了したイメージに付けかえることで、新しく本番環境にデプロイするイメージを指定します。このように、異なるステージのアプリケーションイメージを1つのイメージストリームでまとめて管理しつつ、タグの付け替えによって、担当者間でイメージを引き継いでいきます。
この考え方は、ベースイメージや開発テンプレートイメージにも当てはまります(図3)。たとえば、既存のベースイメージに含まれるパッケージをアップデートした場合、ベースイメージのイメージストリームに新たなイメージが追加されます。この時、この新しいイメージを用いて、開発テンプレートイメージを作り直す必要がでてきますが、これは、「開発テンプレート用」というタグの付け替えで行ないます。このタグがついたベースイメージから、新しい開発テンプレートイメージを自動ビルドするように設定しておけば、開発テンプレートイメージのイメージストリームに、新たなイメージが自動的に追加されます。
図3 ベースイメージから開発テンプレートを自動ビルド
さらに、このイメージストリームの中でも、実際にアプリ開発者に利用させるものには、「公開用」というタグを付けておきます。アプリ開発者が新しいコードを作成すると、このタグのついたテンプレートイメージを用いて、アプリケーションイメージのビルドが行われます。
ここまでの説明で、さまざまな種類のDockerイメージが「イメージストリーム」と「タグ」によって管理されることが分かりました。これらのイメージの実体は、OpenShift上に用意されたプライベートレジストリーにまとめて保管されます。
この時、レジストリー内部では、それぞれのイメージに固有のハッシュ値でお互いが区別されますが、それ以上の管理は行われません。Docker Hubにイメージを保存する際は、「enakai00/httpd:latest」のように、タグ名(この例では「latest」)を付けて管理しますが、プライベートレジストリー内部では、このようなタグは付与されません。イメージストリームのタグは、あくまで、プライベートレジストリーの外部で定義されるものになります。
今回は、OpenShiftのDockerイメージ管理機能である「イメージストリーム」を解説しました。本文中で使用した「本番用」などのタグ名は、あくまで説明用の例で、実際には任意の文字列が使用できます。実際にイメージストリームを操作する様子は、筆者のBlog記事も参考にしてください(*1)。
そして、イメージストリームと連携して、新しいイメージをビルドする、あるいは、テスト環境/本番環境にアプリケーションイメージをデプロイする際に必要となるのが、「ビルド設定(BuildConfig)」と「デプロイ設定(DeployConfig)」です。次回は、これらの機能を紹介したいと思います。
*1 「OpenShift OriginによるDockerイメージ管理(1)~イメージストリームを理解する」
++ CTC教育サービスから一言 ++
このコラムでLinuxや周辺技術の技術概要や面白さが理解できたのではないかと思います。興味と面白さを仕事に変えるには、チューニングやトラブルシューティングの方法を実機を使用して多角的に学ぶことが有効であると考えます。CTC教育サービスでは、Linuxに関する実践力を鍛えられるコースを多数提供しています。興味がある方は以下のページもご覧ください。
CTC教育サービス Linuxのページ
http://www.school.ctc-g.co.jp/linux/
筆者書籍紹介 Software Design plusシリーズ 「独習Linux専科」サーバ構築/運用/管理 ――あなたに伝えたい技と知恵と鉄則 本物の基礎を学ぶ!新定番のLinux独習書 中井悦司 著 B5変形判/384ページ 定価3,129円(本体2,980円) ISBN 978-4-7741-5937-9 詳しくはこちら(出版社WEBサイト) |
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes