1. 構成要素の説明

本節では、WebOTXを用いたシステム構築をするにあたり、必要となるマシン環境と連携するシステムについて説明します。

1.1. 全体の構成

全体の構成イメージは以下です。

全体構成図

1.1.1. 各環境の説明

各環境の用途、導入するソフトウェアについて説明します。

1.1.1.1. 開発環境

WebOTX Developer製品をベースに、アプリケーション(マイクロサービスを含む)の開発、マイクロサービスパッケージの開発、テストプログラムの作成、評価やデバッグなどを行う環境で、開発者が利用します。
開発環境の成果物(ソースファイル、ビルドで使用する定義ファイルなど)は、ソースコードリポジトリ(本ガイドではGitを利用)でバージョン管理します。

導入ソフトウェア 説明
Java SDK Java開発/実行環境
WebOTX Developer EclipseベースのWebOTX開発環境
Mavenプラグイン Maven実行環境
Eclipseプラグイン(m2e)

1.1.1.2. ビルド環境

CIツール(本ガイドではJenkinsを利用)をベースに、アプリケーション、マイクロサービスプロファイル版(WebOTX Uber JAR)、コンテナイメージのビルド/評価を継続的に行う環境で開発者が利用します。
最終的に、Kubernetes環境(ステージング/本番)へのデプロイを運用者が行います。
一連の処理はJenkinsのパイプラインとして定義し、ソースコードリポジトリの更新を契機に自動的に実行します。

導入ソフトウェア 説明
Jenkins CIツール
Java SDK Java開発/実行環境
Maven Maven実行環境
Docker / Podman コンテナ環境
コンテナオーケストレーションツール操作環境 OpenShift、Amazon EKSを操作するために必要なコマンドなど。

1.1.1.3. 評価環境(スタンドアロン)

開発環境、もしくはビルド環境に相当し、Javaの評価環境で、開発者が利用します。
ビルドしたマイクロサービスプロファイル版のApplication Server(WebOTX Uber JAR)を単体で起動して評価します。


1.1.1.4. 評価環境(コンテナ)

ビルド環境に相当し、Docker/Podmanコンテナの評価環境で、開発者が利用します。
ビルドしたApplication Serverのコンテナイメージを起動して評価します。


1.1.1.5. ステージング環境

本番環境に限りなく近い最終動作チェックを行うコンテナオーケストレーションツール環境で、運用者が利用します。

導入ソフトウェア 説明
コンテナオーケストレーションツール環境 OpenShift製品
Amazon EKS製品
WebOTX Operator Application Serverのコンテナイメージを配備・稼働させるための自動化製品
Prometheus メトリクス収集監視
ELKスタック ログ収集監視
Elasticsearch 蓄積したデータの検索・分析エンジンを担います。
Logstash サーバーサイドのデータ処理パイプラインで複数のソースから同時にデータを取り込み、変換してElasticsearchなどの格納庫(スタッシュ)に送信します。
Kibana Elasticsearchのデータをチャートやグラフで可視化します。
サービスメッシュ (Istio) サービスメッシュとは、マイクロサービスの各サービス間の通信を専用のソフトウェアに仲介させることで、マイクロサービス特有の課題を解決する仕組みです。
Istio トラフィック管理
Jaeger 分散サービス間のトランザクションをトレース
Kiali ダッシュボードによるトラフィックとテレメトリの可視化
Grafana データ時系列分析.ダッシュボードツール

1.1.1.6. 本番環境

ユーザーのサービスを実際に公開するコンテナオーケストレーションツール環境で、運用者/ユーザが利用します。

導入ソフトウェアは、ステージング環境と同じです。


1.1.2. 連携システムの説明

各環境から連携するシステムを理解するための説明を記載します。

連携システム 説明
ソースコードリポジトリ(Git) アプリケーションのソースファイル、ビルドで使用する定義ファイル、環境構築時の設定ファイルなどをバージョン管理します。
GitHub Gitリポジトリをホスティングする公開サービスで、WebOTX Operatorの各種マニフェストファイル(YAML)を公開しています。
公開されているファイルについては、[ 構築・運用 > コンテナ型仮想化 > Operator > Operator の展開 ] の「公開マニフェスト(YAML)の利用」を参照してください。
コンテナレジストリ ビルドしたWebOTXコンテナイメージを管理します。
DockerHub Dockerコンテナの公開レジストリで、WebOTXでは以下のベースイメージを公開しています。
・WebOTX Application Server Express (フルプロファイル)
・WebOTX Application Server Standard
・WebOTX Operator for Kubernetes
Maven Central Repository Mavenがデフォルトで利用する公開リポジトリで、WebOTXでは以下を公開しています。
・「WebOTX Uber JAR」(マイクロサービスランタイム)
・Mavenプラグイン「WebOTX Uber JAR Maven Plugin」(WebOTX Uber JAR、マイクロサービスパッケージファイルの生成機能)
・Mavenアーキタイプ「ms-uberjar-archetype」(WebOTX Uber JARおよびDockerfileを作成するMavenプロジェクトのひな形)

1.2. 環境構築

1.2.1. 開発環境

1.2.1.1. WebOTX Developer

WebOTX Developerで利用する環境について設定します。

Maven関連

アプリケーションやWebOTX Uber JARのビルドに必要なMavenプロジェクトを扱うために、Mavenに関する設定を行います。

詳細については、 [ アプリケーション開発 > 開発環境の構築(WebOTX Developer) > 環境設定 > Maven実行環境の準備 ] を参照してください。

Eclipseプラグインのインストール

WebOTX DeveloperでMavenプロジェクトを扱うためには、Eclipseのプラグインをインストールします。

Mavenの設定

リポジトリアクセスにプロキシが必要な場合など、設定は、WebOTX Developerの[ウィンドウ]−[設定]−[Maven]−[User Settings]のsettings.xmlファイルに対して行います。

詳細は、Webサイトの情報を参照してください。

サイト URL
設定 https://maven.apache.org/configure.html

WebOTX Developerは、デフォルトでGitを利用可能です。

設定は、WebOTX Developerの[ウィンドウ]−[設定]−[チーム]−[Git]−[構成]の設定ファイル(.gitconfig)に対して行います。

詳細は、Webサイトの情報を参照してください。

サイト URL
設定 https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup

Gitサーバは任意のものを利用できるが、たとえばGitLabなどを自前でインストールできます。

詳細は、Webサイトの情報を参照してください。

サイト URL
トップ https://www.gitlab.jp/
インストール https://www.gitlab.jp/install/

1.2.2. 評価環境

1.2.2.1. スタンドアロン環境

マイクロサービスプロファイル版のWebOTX Uber JARをビルドした際に行う評価など、評価対象がJavaプログラムの場合には、開発環境やビルド環境のマシン自体を評価環境として利用できます。

1.2.2.2. コンテナ環境

最終形態であるコンテナイメージをビルドした際に行う評価では、コンテナ環境をLinux上に用意する必要があります。開発環境やビルド環境と異なるマシンとなる場合は、コンテナ環境に応じたリモート操作のための設定も行います。

インストール

Linuxのバージョンに応じて、以下のコンテナ環境を構築します。

OS コンテナ環境
Red Hat Enterprise Linux 7 Server Docker
Red Hat Enterprise Linux 8 Server Podman

インストール方法については、コンテナ向け製品 WebOTX Application Server Express/Standard V10.4 for Container(Linux版)のインストールガイド、[Application Server]−[インストールガイド]−[Linux]を参照してください。

コンテナイメージ作成時にRed Hat Networkにアクセスする必要があるため、インストールガイドではプロキシサーバの設定についても紹介しています。

リモート操作の設定
Dockerの場合

Dockerでは、dockerデーモンに外部受付け用のポートを追加し、クライアントはコマンドでその接続先を指定することで、リモート操作が可能となります。

Dockerの設定で、dockerデーモン起動時の引数にポート定義(例えば-H tcp://0.0.0.0:2375)を追加します。

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

dockerコマンド実行時に、以下のように接続先を指定します。

# docker -H tcp://192.168.0.1:2375 images

セキュリティを向上させる場合は、ファイアウォールで接続元を制限したり、SSHやTLS(HTTPS)により保護する対策をとる必要があります。

詳細は、Webサイトの情報を参照してください。

サイト URL
リモート接続 https://docs.docker.com/engine/install/linux-postinstall/#control-where-the-docker-daemon-listens-for-connections
通信保護 https://docs.docker.com/engine/security/protect-access/

Podmanの場合

Podmanでは、クライアント側に「Podman remote-client」(Podmanでも可能)をインストールすることで、リモート操作が可能となります。

詳細は、Webサイトの情報を参照してください。

サイト URL
リモート接続 https://github.com/containers/podman/blob/master/docs/tutorials/remote_client.md#podman-remote-client-tutorial

1.2.3. ビルド環境

Jenkinsを利用したビルド環境の構築のために、以下のインストールを行います。

その後、CIを実行するために必要なJenkinsの設定を行います。

1.2.3.1. Java SDK

各ツール、アプリケーションのビルドで必要とされるバージョンを確認し、インストールします。

詳細は、Webサイトの情報を参照してください。

サイト URL
Oracle JDK https://www.oracle.com/jp/java/technologies/javase-downloads.html
OpenJDK http://jdk.java.net/

1.2.3.2. Git

バージョンへの依存性はないので、最新のものをインストールします。

必要に応じて、リポジトリアクセスに必要なアカウントやプロキシの設定を行います。

詳細は、Webサイトの情報を参照してください。

サイト URL
トップ https://git-scm.com/doc
ダウンロード https://git-scm.com/downloads
インストール https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
設定 https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

1.2.3.3. Maven

バージョンへの依存性はないので、最新のものをインストールします。

必要に応じて、リポジトリアクセスに必要なアカウントやプロキシの設定を行います。

詳細は、Webサイトの情報を参照してください。

サイト URL
Apache Maven Project https://maven.apache.org/index.html
ダウンロード https://maven.apache.org/download.html
インストール https://maven.apache.org/install.html
設定 https://maven.apache.org/configure.html
1.2.3.4. Jenkins
インストール

バージョンへの依存性はないので、最新のものをインストールします。

設定
Global Tool Configuration

[Jenkinsの管理]−[Global Tool Configuration]

インストール済みの各ツールの連携設定を行います。

設定 説明
JDK インストール先をJAVA_HOMEに指定します。
※インストール分指定可能
Git インストールしたgitコマンドのパスを指定します。
Maven インストール先をMAVEN_HOMEに指定します。
プラグインの管理

[Jenkinsの管理]−[プラグインの管理]−[利用可能]

以下のプラグインを利用します。

プラグイン 説明
Git Plugin JenkinsでGitを使用します。
Pipeline Pipelineを利用するプロジェクトを作成します。
Pipeline Maven Integration Plugin PipelineでMavenを使います。
GitLab Plugin GitLabからのWebhook起動に使います。
Workspace Cleanup Plugin ジョブの最後にワークスペースを削除します。

[Jenkinsの管理]−[プラグインの管理]−[高度な設定]

必要に応じて以下を設定します。

設定項目 説明
HTTP Proxyの設定 アップデートサイトのアクセスでプロキシが必要な場合に指定します。
アップデートサイト tlsなしのサイトを利用する場合に以下のURLに変更します。
http://updates.jenkins-ci.org/update-center.json
参考URL
サイト URL
Jenkins User Documentation https://www.jenkins.io
ダウンロード https://www.jenkins.io/download/
インストール https://www.jenkins.io/doc/book/installing
設定 https://www.jenkins.io/doc/book/using/

1.2.4. ステージング/本番環境

必要に応じて、次のような環境を構築します。

1.2.4.1. Prometheus/Grafana
インストール

Kubernetes環境におけるPrometheus/Grafanaの構築については、以下を参照してください。

各環境で提供されている構築情報についても、以下に示します。


OpenShift環境

OpenShiftでは、プラットフォームモニタリングコンポーネントのセットとして、デフォルトでopenshift-monitoring プロジェクトにインストールされます。

詳細は、Webサイトの情報を参照してください。(4.6の場合)

サイト URL
モニタリング https://access.redhat.com/documentation/ja-jp/openshift_container_platform/4.6/html-single/monitoring/index
Amazon EKS環境

Amazon EKSでは、個別にインストールします。

詳細は、Webサイトの情報を参照してください。

サイト URL
メトリクス https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/prometheus.html
モニタリング https://www.eksworkshop.com/intermediate/240_monitoring/
設定

WebOTXのメトリクスをPrometheusから取得できるようにするには、Application Serverのデプロイ時のカスタムリソースで設定を行います。

詳細については、以下を参照してください。


1.2.4.2. ELKスタック
インストール

Kubernetes環境におけるELKスタックの構築については、以下を参照してください。

各環境で提供されている構築情報についても、以下に示します。


OpenShift環境

OpenShift環境では、クラスタロギングとしてELKスタックをサポートしています。

ClusterLogging Operatorを利用してインストールできます。

詳細は、Webサイトの情報を参照してください。(4.6の場合)

サイト URL
ドキュメント https://docs.openshift.com/container-platform/4.6/welcome/index.html
クラスタロギング https://docs.openshift.com/container-platform/4.6/logging/cluster-logging.html
インストール https://docs.openshift.com/container-platform/4.6/logging/cluster-logging-deploying.html
Kibanaでの参照 https://docs.openshift.com/container-platform/4.6/logging/cluster-logging-visualizer.html

Amazon EKS環境

AWSでは、ELKスタックをAmazon Elasticsearch Serviceでサポートしています。

OpenShiftも含め、AWS上にクラスタ環境を構築している場合に利用できます。

詳細は、Webサイトの情報を参照してください。

サイト URL
ドキュメント https://aws.amazon.com/jp/elasticsearch-service/

その他環境

Elasticsearchは、WindowsやLinux、コンテナなどさまざまなプラットフォームへのインストールをサポートしています。コンテナオーケストレーションツール環境の事前確認として、評価環境にインストールするのも有効です。

詳細は、Webサイトの情報を参照してください。

サイト URL
メイン https://www.elastic.co/jp/
ダウンロード https://www.elastic.co/jp/downloads/elasticsearch
ドキュメント https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

WebOTXでの設定

Logstashは、デフォルトでApplication Serverのコンテナと一緒にPodに含められています。

Elasticsearchと連携する場合には、Application Serverのカスタムリソースにおいて、Elasticsearchの接続先を設定します。

詳細については、以下を参照してください。


1.2.4.3. サービスメッシュ (Istio)
インストール
OpenShift環境

OpenShift環境では、以下のOperatorを用いてサービスメッシュをインストールします。

詳細は、Webサイトの情報を参照してください。(4.6の場合)

サイト URL
ドキュメント https://docs.openshift.com/container-platform/4.6/welcome/index.html
サービスメッシュ https://docs.openshift.com/container-platform/4.6/service_mesh/v2x/ossm-architecture.html
インストール https://docs.openshift.com/container-platform/4.6/service_mesh/v2x/installing-ossm.html

Amazon EKS環境

Amazon EKS環境では、個別にIstioをインストールします。

詳細は、Webサイトの情報を参照してください。

サイト URL
Istio https://istio.io/
ドキュメント https://istio.io/latest/docs/
インストール https://istio.io/latest/docs/setup/install/

AWSでは、App Meshという独自のマネージドサービスも提供されています。

詳細は、Webサイトの情報を参照してください。

サイト URL
ドキュメント https://www.eksworkshop.com/advanced/330_servicemesh_using_appmesh/