開発者向け機能 - CodeReady Workspaces(IDE)
開発者機能
OpenShift Container Platform
- 開発者向け機能の位置付け
- S2Iビルド/Red Hat 公式コンテナイメージ
- CodeReady Workspaces(IDE)
- OpenShift Pipelines/OpenShift GitOps(CICD)
- OpenShift Serverless
OpenShift Virtualization
CodeReady Workspaces 2
Based on Eclipse Che 7
- Kubernetesベースの開発環境: Kubernetes上で完全にコンテナ化された開発環境を提供
- 新しいエディタ: ブラウザ上で実現する最新の開発体験
- VSCode extension compatibility: 既存のVSCode extensionを利用可能
- Devfile: 開発環境をDevfileで定義
- OpenShift VSCode Plug-in: OpenShift での開発を更に高速に
- 簡単な操作と監視: 組み込みのPrometheus, Grafanaダッシュボード
Workspaces: OpenShift上で集中的にホストされるSandbox
CRW workspace とは OpenShift上で動く開発者サンドボックスコーディングに必要な全てがコンテナにパッケージングされる。
- Workspaceで提供されるもの:
- アプリケーションランタイム
- ビルドツール一式
- 開発ツール: ブラウザベースエディタ + プラグイン
- プロジェクトのソースコードリポジトリとの連携
Workspace Pods
- Tools
-
- Editor
- Plug-ins
- Commands
- VCS
- Runtime Env
-
- Runtime Dep
- Env Variables
- Common Libraries
- Test Env
-
- Testing Tools
- Target environment
- Log services
VSCode extensionsによるカスタマイズ
「Software Collections(for RHEL7)」および「Application Streams (for RHEL8)」のコンテナイメージのサポートがOpenShiftのサブスクリプションに含まれています。
- Visual Studio Code extensions 互換
- Extensions は依存ライブラリと一緒にパッケージング
- プラグインレジストリに個別にプラグインを登録可
VSCodeで利用可能なRed Hat extensionsは全てCodeReady Workspaces 2使用可
Devfileを使ったworkspaceのコード管理
Devfileを用いて再現可能 & 設定容易なポータブル開発環境を定義
ランタイム、ソースコード、リポジトリ、ツール、プラグインやコードを実行・ビルド・デバッグする為に必要なコマンド一式を揃えた開発環境をdevfile(YAML)による抽象化で定義することが可能
- Devfileの定義
-
- Project
-
- Name
- Repo
- Branch
- Editor
- Tools
- Runtime Env
- Build Env
- Commands
-
- Build
- Run
- Debug
Devfile Example
- Project情報
- workspaceに必要なコンポーネントのリスト
- Plugin の定義
- 使用するRuntimeイメージ
- コンテナに設定する環境変数の定義
- エンドポイントの定義
--- apiVersion: 1.0.0 metadata: generateName: java-web-vertx- projects: - name: java-web-vertx source: type: git location: "https://github.com/che-samples/web-java-vertx" components: - type: chePlugin id: redhat/java/latest - type: dockerimage alias: maven image: quay.io/eclipse/che-java8-maven:nightly env: - name: JAVA_OPTS value: "-Duser.home=/home/user" - name: MAVEN_OPTS value: $(JAVA_OPTS) memoryLimit: 512Mi endpoints: - name: '8080/tcp' port: 8080 mountSources: true volumes: - name: m2 containerPath: /home/user/.m2