3.7. OpenShift アプリケーションのワークスペースへのインポート
CodeReady Workspaces ワークスペースでアプリケーションの新規インスタンスをデプロイするには、以下のいずれかのシナリオを使用します。
- 既存ワークスペースの変更: Dashboard ユーザーインターフェースの使用
-
実行中のアプリケーションの使用:
crwctl
を使用した dev ファイルの生成
3.7.1. OpenShift アプリケーションのワークスペース devfile 定義への追加
この手順では、OpenShift アプリケーションを組み込むために CodeReady Workspaces ワークスペース devfile を定義する方法を説明します。
デモの目的で、以下の 2 つの Pod を持つサンプル OpenShift アプリケーションを使用します。
- この nodejs-app.yaml で指定される Node.js アプリケーション
- この mongo-db.yaml で指定される MongoDB Pod
OpenShift クラスターでアプリケーションを実行するには、以下を実行します。
$ node=https://raw.githubusercontent.com/redhat-developer/devfile/master/samples/web-nodejs-with-db-sample/nodejs-app.yaml && \ mongo=https://raw.githubusercontent.com/redhat-developer/devfile/master/samples/web-nodejs-with-db-sample/mongo-db.yaml && \ oc apply -f ${mongo} && \ oc apply -f ${node}
前提条件
- Red Hat CodeReady Workspaces の実行中のインスタンスでクラスターにログインしている。Red Hat CodeReady Workspaces のインスタンスをインストールするには、CodeReady Workspaces のインストールについて参照してください。
-
crwctl
管理ツールが利用可能である。Using the crwctl management toolセクションを参照してください。
手順
最も簡単な devfile を作成します。
apiVersion: 1.0.0 metadata: name: minimal-workspace 1
- 1
minimal-workspace
の名前を指定します。CodeReady Workspaces サーバーがこの devfile を処理すると、devfile はデフォルトのエディター (Che-Theia) とデフォルトのエディタープラグイン (ターミナルなど) のみを持つ最小の CodeReady Workspaces ワークスペースに変換されます。
OpenShift アプリケーションをワークスペースに追加するには、devfile を変更して
Kubernetes
コンポーネントタイプを追加します。たとえば、NodeJS-Mongo アプリケーションを
minimal-workspace
に組み込むには、以下を実行します。apiVersion: 1.0.0 metadata: name: minimal-workspace components: - type: openshift reference: https://raw.githubusercontent.com/.../mongo-db.yaml - alias: nodejs-app type: openshift reference: https://raw.githubusercontent.com/.../nodejs-app.yaml entrypoints: - command: ['sleep'] 1 args: ['infinity']
- 1
sleep infinity
コマンドは、Node.js アプリケーションのエントリーポイントとして追加されます。このコマンドは、ワークスペースの開始フェーズでアプリケーションが起動しないようにします。この設定により、ユーザーはテストまたはデバッグ目的で必要に応じてアプリケーションを起動できます。
devfile にコマンドを追加して、開発者のアプリケーションのテストをより容易にします。
apiVersion: 1.0.0 metadata: name: nodejs-with-db projects: - name: nodejs-mongo-app source: type: git location: 'https://github.com/ijason/NodeJS-Sample-App.git' commitId: 187d468 # refers to the last commitId the project compiles (with express3) components: - type: openshift reference: https://raw.githubusercontent.com/redhat-developer/devfile/master/samples/web-nodejs-with-db-sample/mongo-db.yaml - alias: nodejs-app type: openshift reference: https://raw.githubusercontent.com/redhat-developer/devfile/master/samples/web-nodejs-with-db-sample/nodejs-app.yaml commands: - name: run 1 actions: - type: exec component: nodejs-app command: cd ${CHE_PROJECTS_ROOT}/nodejs-mongo-app/EmployeeDB/ && npm install && sed -i -- ''s/localhost/mongo/g'' app.js && node app.js
- 1
- devfile に追加された
run
コマンドは、コマンドパレットから Che-Theia のタスクとして利用できます。実行すると、コマンドは Node.js アプリケーションを起動します。
devfile を使用してワークスペースを作成し、起動します。
$ crwctl workspace:start --devfile <devfile-path>
関連資料