製品概要 - Red Hat OpenShift の主な特徴 開発者のメリット
製品概要インデックス
- OpenShift 概要
- Red Hat OpenShift の主な特徴
- Red Hat OpenShift の主な特徴 開発者のメリット
- 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と一緒にパッケージ化され、サービス間通信制御ができるようになります