製品概要 - Red Hat OpenShift の主な特徴 開発者のメリット

HOME製品情報製品概要Red Hat OpenShift の主な特徴 開発者のメリット

製品概要インデックス

  1. OpenShift 概要
  2. Red Hat OpenShift の主な特徴
  3. Red Hat OpenShift の主な特徴 開発者のメリット
  4. Red Hat OpenShift の主な特徴 運用管理者のメリット

マルチテナントの開発体制実現の支援機能

  • 開発者用のWebコンソールを利用した、セルフサービスでの開発が可能
    • 下記などを利用したイメージビルド/デプロイの自動化が可能
      • Gitリポジトリに置いているソースコード
      • コンテナイメージ (DockerやOpen Container Initiative仕様に準拠)
      • Dockerfile
      • 開発言語/ミドルウェア/データベースなどの開発環境のカタログ
  • Webコンソールは、OpenShiftのMaster Node上で動作するコンテナアプリ
  • 開発したコンテナイメージは、OpenShift内部のレジストリに保存され、他チームがデプロイに利用することも可能
    • イメージのバージョン管理により、デプロイの再現性や一貫性を向上
  • OpenShiftの管理者が予め設定した権限やリソース制限のもとで、開発者が各プロジェクト※の中でコンテナアプリを開発
    • 管理者によって、予め割り当てられたプロジェクトを利用
    • 開発者が利用する、CPU/メモリ/ストレージの上限設定が可能
プロジェクトは、OpenShiftのコンテナ開発/デプロイの作業単位となる概念のこと。技術的には、Kubernetesのnamespaceにいくつかのアノテーションが付いたものです。

OpenShiftで提供される、セルフサービス開発の利用例

Gitリポジトリのソースコードを利用して、OpenShift環境にNode.jsアプリをデプロイ

開発者用コンソールを利用した、コンテナアプリのモニタリング

開発者が利用している各プロジェクトの、各Podのメトリクス(CPU/メモリ/送受信帯域幅など)を、開発者用コンソールから確認可能

コンテナアプリのビルド/テスト/デプロイの完全自動化

  • OpenShiftに統合されたPipelines (Tekton) を利用可能
    • ソースコードの静的解析/ビルド、単体/インテグレーションテストを実施 (CI部分を担当)
    • サーバレスなアーキテクチャ
  • OpenShiftに統合されたGitOps (Argo CD) を利用可能
    • GitリポジトリをSingle Source of Truthとし、デプロイ先の状態変化を自動検知して、定義された状態を維持
  • TektonとArgo CDは、Operatorによって運用を自動化

OpenShiftに統合されたWeb IDE

  • Eclipse Cheをベースとした、Kubernetes-NativeなWebブラウザベースのIDEであるRed Hat CodeReady WorkspacesをOpenShiftの標準機能として提供
    • 開発者が自分のマシンで環境構築する手間をかけることなく、ブラウザベースの統一された開発環境を利用することで、迅速な開発開始が可能
  • 開発者用のWebコンソールに統合されており、コンソール上のリンクから簡単にアクセス可能
  • Che-Theia IDEがデフォルトのエディタになっており、Visual Studio Code(VS Code)のプラグインが利用可能
  • OpenShiftのCLIも利用できるため、このWeb IDEからOpenShift上へのアプリデプロイ・テストも実行可能
  • CodeReady Workspacesは、OpenShift上のコンテナアプリとして稼働
  • 開発環境をコード化(Devfile)することで、開発環境自体にも冪等性を持たせることが可能

CodeReady Workspacesが提供する開発環境

様々な開発環境のテンプレートを利用可能

コード化された開発環境: Devfile

  • 開発環境をYAML形式で記述したファイル
    • 開発するソースコードの参照先
    • 開発コンポーネント
      • エディタ/プラグイン/ビルドツール/ランタイム/コンテナイメージ/ユーザが定義するコマンド、など
  • 作成したdevfileからワークスペース(Workspace Pod)の自動構築が可能
    • 開発者は、コンソールでDevfileの内容を直接入力するか、Devfileを置いたGitリポジトリのURLを指定するだけでO.K.
  • 参考情報:
apiVersion: 1.0.0
metadata:
  name: 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 # 指定したコンテナをTerminalやコマンド実行に利用
    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
    commands: # ユーザが定義するコマンド
      - name: maven build
        actions: 
- type: exec
  component: maven
  command: "mvn clean install"

OpenShift Serverless

  • Knativeをベースとした、ServerlessをOpenShiftの標準機能として提供
    • Zero Server Opsやアイドル時のコンピューティングコストを0にすることが可能
  • .NET/Go/Java/Node.js/PHP/Python/Ruby/Shellなど、様々なプログラミング言語に対応 (サンプルコード)
  • Serverlessの主要な特徴
    • Serving: 使う時だけアプリを起動し、使われていない時は0へスケール可能
    • Eventing: HTTPリクエストやデータのアップロードなど、様々なイベントをトリガーにしたアプリの起動が可能 (イベントソースのリスト)

OpenShift Service Mesh

  • IstioやMaistraをベースとして、マイクロサービス間の通信制御や複雑な運用機能をOpenShiftの標準機能として提供
    • ネットワークの検出、負荷分散、サービス間認証、障害回復、モニタリング
    • A/Bテスト、カナリアリリース、レート制限、アクセス制御、エンドツーエンド認証
  • Service Meshは、Sidecarと定義されるL7 Proxyコンテナ(Envoy Proxy)を管理
    • Envoyはルーティングやテレメトリ収集、アクセス制限/リトライなどを適宜実施

Service Meshを利用したサンプルアプリのデプロイ

  • 4つの異なるマイクロサービスで構成されるサンプルアプリ(Bookinfo)のデプロイイメージ
    • 運用管理者は、開発者から渡されたアプリをデプロイする際に、Istioの利用を有効化
    • 全てのマイクロサービスは、サービスの全ての送受信トラフィックをインターセプトするEnvoy Proxyと一緒にパッケージ化され、サービス間通信制御ができるようになります

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

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