開発者向け機能 - CodeReady Workspaces(IDE)

HOMEデベロッパー向け開発者向け機能CodeReady Workspaces(IDE)

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

  1. Project情報
  2. workspaceに必要なコンポーネントのリスト
  3. Plugin の定義
  4. 使用するRuntimeイメージ
  5. コンテナに設定する環境変数の定義
  6. エンドポイントの定義
---
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

選ぶなら業界をリードするコンテナプラットフォーム

OpenShiftならインフラ運用の効率化はもとよりアプリケーション開発者がソースコードの開発に専念できるように必要な機能までも提供してくれます