Red Hat Openshift - Container Platform昨年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 VMOpenShift Container PlatformまたはOpenShift Enterpriseの無料版)をダウンロードするか、またはパブリックDockerイメージを実行して新しいクラスタを起動することです。(ただし、1.10などのDocker旧バージョンを実行する必要があるため注意が必要です)。テストから生産環境に移行する場合は、HAクラスタとしてAWSにOpenShiftを配備する方法に関する詳細なマニュアルがRed Hatから入手できます。少なくともOpenShiftビジネスパートナーでサポートされているNFRサブスクリプションが必要で、Red Hat Enterprise Linuxサーバー自己サポート評価版(30日間)サブスクリプションで試用することはできません。(私を信用していただくか、または2日間試してみてください!)

この演習は本当に簡単です。開発目的のためにNuxeo 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ボリューム:

AWSのEBSボリューム- OSでpsボリュームを作成する

  $ 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テンプレートMongoDBのパラメータ

以上です!MongoDBコンテナが起動しています。

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:[email protected]: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プロジェクトの名前の場合

Nuxeoを導入する

新しいDockerイメージのビルドをチェックすることができます(現在内部レジストリにプッシュされています)。

イメージビルド

次は展開です。

展開

最後に、次は、実行中のポッドです。 実行中のNuxeo Pod

この時点で、MongoDBとNuxeo Platformが作動しています。

MongoDBとNuxeo Platform

あと残っていることは、Nuxeo Platformにアクセスするためにルートを設定するだけです。

ルートの作成

これで完成!永続的なMongoDBで構成されたNuxeo Platformは、http://nuxeo-route-test-nuxeo.apps.io.nuxeo.com/で動作しています。 (これは私のテストアプリケーションへのリンクであり、一例にすぎません。今すぐこのリンクにアクセスできない場合は、テストアプリケーションが削除されているので、自分で試して結果を見る必要があります!)

Nuxeoを実行中