はじめに
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 ...
自分のプロジェクトに作成することで省力化してアプリケーションを展開できます。
以上、ご参考になれば幸いです。