(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【OpenShift】Templateを利用してRocket.Chatをインストールする

スポンサーリンク

はじめに

OpenShiftではデフォルトで展開されているテンプレートの他に自分のプロジェクトにテンプレートを配置することができます。
本記事ではRocket.ChatをOpenshiftに構築する公式手順を参考に、テンプレートからリソースを生成する流れについて記載しました。

環境情報
$ ibmcloud oc cluster ls
...
OK
名前                    ID                     状態     作成日        ワーカー   ロケーション   バージョン              リソース・グループ名   プロバイダー
X   ...   normal   ..  3          Tokyo          4.6.X_openshift   Default                classic

テンプレートの作成

テスト用のプロジェクトを新規作成して

$ oc new-project test

Githubより公式のテンプレートをローカルに保存します。

$ git clone https://github.com/RocketChat/Rocket.Chat

以下ディレクトリに二種類のテンプレートが用意されていて

$ ls Rocket.Chat/.openshift/
rocket-chat-ephemeral.json  rocket-chat-persistent.json

差分はデータベースを永続化されるか否かになっています。

$ diff rocket-chat-ephemeral.json rocket-chat-persistent.json
...
<                         "volumes": [
<                             {
<                                 "name": "mongodb-data",
<                                 "emptyDir": {}
<                             }
<                         ],
>                         "volumes": [
>                             {
>                                 "name": "${DATABASE_SERVICE_NAME}-data",
>                                 "persistentVolumeClaim": {
>                                     "claimName": "${DATABASE_SERVICE_NAME}"
>                                 }
>                             }
>                         ], ..

今回はemptirDirを利用するテンプレートを作成しました。

$ oc create -f rocket-chat-ephemeral.json
template.template.openshift.io/rocket-chat-ephemeral created
$ oc get template
NAME                    DESCRIPTION                                                              PARAMETERS        OBJECTS
rocket-chat-ephemeral   Rocket.Chat with a MongoDB database running with an Ephemeral storage.   7 (3 generated)   6

アプリケーションを作成する

今回用意したテンプレートを利用するため以下のようにoc new-appを行うと

$ oc new-app --template="test/rocket-chat-ephemeral" -p MONGODB_DATABASE=rocketchat -p MONGODB_USER=rocketchat-admin -p MONGODB_PASSWORD=rocketchat

標準出力にて

--> Deploying template "test/rocket-chat-ephemeral" for "test/rocket-chat-ephemeral" to project test ..
     rocket-chat-ephemeral
     ---------
     Rocket.Chat with a MongoDB database running with an Ephemeral storage.

   ...
--> Success ...

と出力されてアプリケーションが展開できます。

尚、以下のようにテンプレートを指定しない場合はエラーとなりました。

$ oc new-app rocket-chat -p MONGODB_DATABASE=rocketchat -p MONGODB_USER=rocketchat-admin -p MONGODB_PASSWORD=rocketchat
error: only a partial match was found for "rocket-chat": "test/rocket-chat-ephemeral"
Argument 'rocket-chat' was classified as an image, image~source, or loaded template reference.
The argument "rocket-chat" only partially matched the following Docker image, OpenShift image stream, or template:

終わりに

Openshiftではopenshiftという名前空間にデフォルトでテンプレートが用意されていますが

$ oc get template --all-namespaces
NAMESPACE      NAME                                                DESCRIPTION                                                                        PARAMETERS        OBJECTS
openshift      3scale-gateway                                      3scale's APIcast is an NGINX based API gateway used to integrate your interna...   ...      3
openshift      amq63-basic                                         Application template for JBoss A-MQ brokers. These can be deployed as standal...   ...     6
...

自分のプロジェクトに作成することで省力化してアプリケーションを展開できます。

以上、ご参考になれば幸いです。