昨年9月、Red Hatは、OpenShift 3.3 Container Platformをリリースし、サービス(PaaS)ソリューションワールドとしてのプラットフォームでレベルアップしました。OpenShift Container Platformは、Red Hat Enterprise LinuxとKubernetesに基づいて構築されているPaaSで、最低限の設定と管理オーバーヘッドで安全でスケーラブルなリソースに新しいアプリケーションを導入するクラウドアプリケーションプラットフォームを提供します。統合されたDockerレジストリ、パイプライン、ワンクリックイメージ展開、より使いやすくなったUIなど、多くのクールな機能が搭載されており、あらゆるクラウドで既存のアプリケーションとクラウドネイティブアプリケーションを実行するための業界有数のエンタープライズKubernetesプラットフォームに仕上がっています。当社は、OpenShiftを使用してアプリケーションを展開するPaaSアプローチに関心を持っている顧客や見込み客がいることが分かりました。そこで、私たちはOpenShift Platformを活用して試してみることにしました!
これをテストするには、かなりのオプションがありますが、最も簡単な方法は、OpenShift Origin用のAll-In-One VM(OpenShift Container PlatformまたはOpenShift Enterpriseの無料版)をダウンロードするか、またはパブリックDockerイメージを実行して新しいクラスタを起動することです。(ただし、1.10などのDocker旧バージョンを実行する必要があるため注意が必要です)。テストから生産環境に移行する場合は、HAクラスタとしてAWSにOpenShiftを配備する方法に関する詳細なマニュアルがRed Hatから入手できます。少なくともOpenShiftビジネスパートナーでサポートされているNFRサブスクリプションが必要で、Red Hat Enterprise Linuxサーバー自己サポート評価版(30日間)サブスクリプションで試用することはできません。(私を信用していただくか、または2日間試してみてください!)
この演習は本当に簡単です。開発目的のためにNuxeo Content Services Platformをできるだけ速くMongoDBで作動するように設定したいと思います。また、プロセスにmarketplaceパッケージをいくつかインストールし、MongoDBが永続的なストレージとして使用するAWS EBSボリュームを設定する方法を紹介します(もちろん、この場合、OpenShiftクラスタがAWS上で実行されていると仮定します)。
2つのオプションがあります。OpenShiftCLIクライアントをダウンロードして使用することも、UIから(ほとんど)すべて実行することもできます。両方のオプションを表示しますが、クライアントと比較してUIが非常に限られていることに注意してください。ここで手順を見てみましょう。
1. OpenShiftを起動させる 将来(または上記の選択肢に応じて10分後)に、OpenShiftクラスタを起動させていると仮定してみましょう。
All-In-One VMを実行するには、以下を使用する必要があります。
$ vagrant init openshift/origin-all-in-one
$ vagrant up --provider=virtualbox
コンソールはhttps://10.2.2.2:8443で動作しています
HAクラスタをインストールすることを選択した場合は、ここのマニュアルに従ってください。これでAWSでこのアーキテクチャが完成します。
2. OpenShiftにログインし、プロジェクトを作成する
これをAll-In-Oneイメージでテストすることを選択した場合は、ユーザ名/パスワード「admin/admin」を使用してログインできます。
$ oc login https://10.2.2.2:8443
$ oc new-project test-nuxeo
ここで、サーバー「https://www.google.com/support/10.2.2.2:8443」で「test-nuxeo」プロジェクトを使用してください。
AWSクラスタをインストールしている場合は、Webコンソールからトークンを生成できます。クラスタがopenshift-master.io.nuxeo.com/に配備されていると仮定します。https://openshift-master.io.nuxeo.com/console/command-lineにアクセスし、生成されたトークンをコピーしてログインします。$ oc login https://openshift-master.io.nuxeo.com --token=XXX
ここで、新しいプロジェクトを作成します。
3. EBSボリュームをセットアップし(AWSクラスタ)、MongoDBを導入する
AWS上でOpenShiftクラスタを実行している場合、クラスタ管理者のみがすべてのプロジェクトで利用可能な永続的ボリュームを設定できます。外部ストレージが必要なアプリケーションは、自動的に接続して使用できます。
- AWSのEBSボリューム:
$ cat aws-pv.yaml
apiVersion: "v1"
kind: "PersistentVolume"
metadata:
name: "pv00001"
spec:
capacity:
storage: "1Gi"
accessModes:
- "ReadWriteOnce"
awsElasticBlockStore:
fsType: "ext4"
volumeID: "vol-026b24515ee34265c"
$ oc create -f aws-pv.yaml
persistentvolume "pv00001" created
これで、[プロジェクトに追加]/[カタログの参照]をクリックし、以下のように既存の「mongodb-persistent」テンプレートを選択するだけで、新しいMongoDBを導入できます(便宜上、すべてのパラメータを値「nuxeo」に設定します)。このテンプレートでは、複数のレプリカへのスケーリングはサポートされていません。
以上です!MongoDBコンテナが起動しています。
Nuxeoも起動しましょう!
4. Nuxeo Dockerイメージを構築して実行する
デフォルトでは、OpenShift内で起動するコンテナはどれも、コンテナ内のルートユーザを使用できません。OpenShiftはコンテナがルートとして実行されるのを防ぐため、「nuxeo:latest」を実行することはできません。この制約を緩和するためにセキュリティコンテキストを編集することができます(ここで説明されているソリューションに従います)。または、ルートの代わりにユーザ「nuxeo」として実行される若干修正されたDockerfileから新しいNuxeoイメージを構築できます。
githubリポジトリと環境変数を直接渡して、魔法が起こるのを待てばよいのです。OpenShiftがDockerイメージを作成し、それを内部レジストリにプッシュし、Nuxeoコンテナを起動します。
MongoDBテンプレートを使用してNuxeoを起動し、「nuxeo-web-ui」マーケットプレイスパッケージをインストールしたいので、新しいアプリケーションを作成し、これを環境変数として渡します。
$oc new-app https://github.com/mcedica/nuxeo-openshift-image.git
-e NUXEO_TEMPLATES=default,mongodb
-e NUXEO_CUSTOM_PARAM=nuxeo.mongodb.server=mongodb://admin:nuxeo@mongodb:27017
-e NUXEO_PACKAGES=nuxeo-web-ui
--> Found Docker image ad7074a (12 days old) from Docker Hub for "nuxeo:8.10"
--> Creating resources ...
imagestream "nuxeo" created
imagestream "nuxeo-openshift-image" created
buildconfig "nuxeo-openshift-image" created
deploymentconfig "nuxeo-openshift-image" created
service "nuxeo-openshift-image" created
--> Success
Build scheduled, use 'oc logs -f bc/nuxeo-openshift-image' to track its progress.
Run 'oc status' to view your app.
または、Webコンソールで[プロジェクトに追加]をクリックし、[イメージを展開]に移動し、必要に応じてセキュリティ制約を変更したと仮定して「nuxeo:latest」を入力し*、上記の環境変数を設定します。
セキュリティ制約:All-In-One OpenShift Origin VMでテストする場合は、何もする必要はありません。どのコンテナもルートとしてすでに実行できます。OpenShift Open HA Clusterをインストールしていてデフォルトのnuxeo:latestDockerイメージをインストールする場合は、次のコマンドを実行します。
$oc edit scc anyuid
ユーザに追加: system:serviceaccount:$PROJECT:default #$PROJECTがあなたのOSプロジェクトの名前の場合
新しいDockerイメージのビルドをチェックすることができます(現在内部レジストリにプッシュされています)。
次は展開です。
この時点で、MongoDBとNuxeo Platformが作動しています。
あと残っていることは、Nuxeo Platformにアクセスするためにルートを設定するだけです。
これで完成!永続的なMongoDBで構成されたNuxeo Platformは、http://nuxeo-route-test-nuxeo.apps.io.nuxeo.com/で動作しています。 (これは私のテストアプリケーションへのリンクであり、一例にすぎません。今すぐこのリンクにアクセスできない場合は、テストアプリケーションが削除されているので、自分で試して結果を見る必要があります!)