Red Hatは2016年8月、Linuxコンテナソリューションのラインアップの拡充を発表した。それに併せてコンテナプラットフォームの主力製品である「OpenShift Enterprise」も「Red Hat OpenShift Container Platform」に改称した。その情報は「レッドハット、エンタープライズグレードのLinuxコンテナ製品を拡充」(@IT)にまとめられている。
今回評価したのは、「Red Hat OpenShift Container Platform」のコミュニティ版である「OpenShift origin」である。コミュニティー版であるため、「Red Hat OpenShift Container Platform」の最新バージョンの1つ前のバージョンが提供されること、商用製品のみで利用できる機能が一部が利用できないなどの差異が存在する。ただし、OpenShiftのメイン機能であるDokcer環境のクラスタリング、オーバーレイネットワークの構成、リソース監視、コンテナのデプロイ、プライベートDockerリポジトリの管理、ユーザー権限管理などの機能を持ち、Docker環境をPaaSとして利用するための多くの機能が提供されている。
Docker環境のクラスタリングにはKubernetesが使われている。通常、Kubernetesを使用する場合、オーバーレイネットワークにFlannelが使用されることが多いが、OpenShiftではOpenvSwitchを使用したオーバーレイネットワークを使用している。
ライセンスはApache License 2.0。2014年11月6日にv0.1としてリリースされ、2016年8月時点の最新バージョンは、商用のOpenShift 3.2に準拠した、2016年7月14日リリースのv1.2.1である。
OpenShift originのv1.2.0から、従来のソースからのビルド、またはLinux向けのバイナリのインストールに加えて、Dockerコンテナ形式、All-On-Oneの仮想マシンイメージが提供された。基本的にはRHELおよび互換OSのCentOS、Fedoraおよび、Docker専用OSであるAtomicHostで動作させることが前提となっている。
今回はCentOS 7.2をインストールしたサーバを3台準備し、OpenShiftのマスター×1台とノード×2台の構成で検証を行っている。マスターにAnsibleをインストールしてマスターとノード×2を自動構築するため、マスターからノードに対してSSHの鍵認証による接続および、ssh接続後のsudoによるrootへの昇格の権限も設定しておく必要がある。
インストール時にホスト名の名前解決が行われ、IPアドレスではなく、ホスト名での設定ファイルの作成が行われるため、DNSで名前解決ができる状態としておくことが望ましい。
インストールの手順はGoogle Cloud Platform 中井悦司氏のブログ記事の「OpenShift Origin構築手順メモ」が非常に詳細に記載されているため、参考にすることをお勧めしたい。検証に使用した環境の構築手順は、以下の弊社技術ブログで公開しているので参考にしていただきたい。
参考リンク:OpenShift originをインストールしてみた(Tech Sketch/TIS)
OpenShift orignのGitHub上にインストール用のAnsibleのPlaybookが公開されており、こちらをgit cloneでコピーして使用する。
同じGitHubのサイト上にopenshift-ansible Best Practices Guideが公開されており、それを参考にAnsibleの設定対象となるホスト情報を定義するhostsファイルを作成する。今回作成したhostsファイルは以下となる。
[OSEv3:children] masters nodes [OSEv3:vars] ansible_ssh_user=root deployment_type=origin [masters] tissvv094 [nodes] tissvv094 openshift_node_labels="{'region': 'infra', 'zone': 'default'}" tissvv095 openshift_node_labels="{'region': 'primary', 'zone': 'node01'}" tissvv096 openshift_node_labels="{'region': 'primary', 'zone': 'node02'}"
インストール終了後、マスターサーバにログインし、以下のコマンドを実行することでクラスタ構成が完了したことを確認できる。ノードが3台分出力されるのが正常な状態である。
$ sudo su - # oc login -u system:admin # oc get node NAME STATUS AGE tissvv094.front02.intra.tistest.jp Ready 3h tissvv095.front02.intra.tistest.jp Ready 11s tissvv096.front02.intra.tistest.jp Ready 26m
さらに以下のコマンドで、プロジェクトとして”test”を作成し、そのプロジェクトに対して稼働確認用のサンプルであるopenshift/deployment-exampleを登録をする。
# oc login Username: test Password: test # oc new-project test # oc new-app openshift/deployment-example
ブラウザでマスターサーバの8443ポートに接続すると、OpenShiftのダッシュボードへのログイン画面が表示されので、先ほど使用したtestユーザーでログインする。
ログインすると先ほど作成したプロジェクトが表示される。
Overviewに先ほど登録したopenshift/deployment-exampleがサービスとして登録されている。その画面でΛをクリックしてPod数を0→1にすると、openshift/deployment-exampleを構成するコンテナが起動される。
さらに「Λ」をクリックしてPod数を1→3にすると、さらにコンテナが追加される。
Applicationsで各コンテナがどのノードで動作して、どのIPアドレスが付与されているか確認できる。
Pod数を3→0に減らすとコンテナは順次停止され、ログが画面上に出力される。OpenShiftのコンテナの起動は、基本的にPod単位で行われ、画面上の操作だけで、起動・停止の制御を行うことができる。
登録したopenshift/deployment-example以外にも標準で以下のようなPodが利用可能な状態で登録されている。
複数のコンテナを組み合わせて1つのサービスとして提供できるPodの機能は非常に利便性が高く、デプロイもボタン1つであるため、運用負荷も軽減されるだろう。最小1台から利用を開始でき、ノードの追加も容易であるため、スモールスタートから拡張していくのに適している。
Red Hatはコンテナ技術の活用を重要視しており、OpenShiftはさらなる機能強化、改善が期待できると考えられる。ただ、有償製品との差別化も図られており、サポートや、差別化された機能が必要であればライセンスを購入し、「Red Hat OpenShift Container Platform」を使用することも有力な選択肢となるだろう。
Copyright © ITmedia, Inc. All Rights Reserved.