|
|
WebOTX Manual V11.1 (第6版) 目次を表示 |
本節では、WebOTXを用いたシステム構築をするにあたり、必要となるマシン環境と連携するシステムについて説明します。
全体の構成イメージは以下です。
各環境の用途、導入するソフトウェアについて説明します。
WebOTX Developer製品をベースに、アプリケーション(マイクロサービスを含む)の開発、マイクロサービスパッケージの開発、テストプログラムの作成、評価やデバッグなどを行う環境で、開発者が利用します。
開発環境の成果物(ソースファイル、ビルドで使用する定義ファイルなど)は、ソースコードリポジトリ(本ガイドではGitを利用)でバージョン管理します。
| 導入ソフトウェア | 説明 |
|---|---|
| Java SDK | Java開発/実行環境 |
| WebOTX Developer | EclipseベースのWebOTX開発環境 |
| Mavenプラグイン | Maven実行環境 Eclipseプラグイン(m2e) |
CIツール(本ガイドではJenkinsを利用)をベースに、アプリケーション、マイクロサービスプロファイル版(WebOTX Uber JAR)、コンテナイメージのビルド/評価を継続的に行う環境で開発者が利用します。
最終的に、Kubernetes環境(ステージング/本番)へのデプロイを運用者が行います。
一連の処理はJenkinsのパイプラインとして定義し、ソースコードリポジトリの更新を契機に自動的に実行します。
| 導入ソフトウェア | 説明 |
|---|---|
| Jenkins | CIツール |
| Java SDK | Java開発/実行環境 |
| Maven | Maven実行環境 |
| Docker / Podman | コンテナ環境 |
| コンテナオーケストレーションツール操作環境 | OpenShift、Amazon EKSを操作するために必要なコマンドなど。 |
開発環境、もしくはビルド環境に相当し、Javaの評価環境で、開発者が利用します。
ビルドしたマイクロサービスプロファイル版のApplication Server(WebOTX Uber JAR)を単体で起動して評価します。
ビルド環境に相当し、Docker/Podmanコンテナの評価環境で、開発者が利用します。
ビルドしたApplication Serverのコンテナイメージを起動して評価します。
本番環境に限りなく近い最終動作チェックを行うコンテナオーケストレーションツール環境で、運用者が利用します。
| 導入ソフトウェア | 説明 | |
|---|---|---|
| コンテナオーケストレーションツール環境 | OpenShift製品 Amazon EKS製品 |
|
| WebOTX Operator | Application Serverのコンテナイメージを配備・稼働させるための自動化製品 | |
| Prometheus | メトリクス収集監視 | |
| ELKスタック | ログ収集監視 | |
| Elasticsearch | 蓄積したデータの検索・分析エンジンを担います。 | |
| Logstash | サーバーサイドのデータ処理パイプラインで複数のソースから同時にデータを取り込み、変換してElasticsearchなどの格納庫(スタッシュ)に送信します。 | |
| Kibana | Elasticsearchのデータをチャートやグラフで可視化します。 | |
| サービスメッシュ (Istio) | サービスメッシュとは、マイクロサービスの各サービス間の通信を専用のソフトウェアに仲介させることで、マイクロサービス特有の課題を解決する仕組みです。 | |
| Istio | トラフィック管理 | |
| Jaeger | 分散サービス間のトランザクションをトレース | |
| Kiali | ダッシュボードによるトラフィックとテレメトリの可視化 | |
| Grafana | データ時系列分析.ダッシュボードツール | |
ユーザーのサービスを実際に公開するコンテナオーケストレーションツール環境で、運用者/ユーザが利用します。
導入ソフトウェアは、ステージング環境と同じです。
各環境から連携するシステムを理解するための説明を記載します。
| 連携システム | 説明 |
|---|---|
| ソースコードリポジトリ(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プロジェクトのひな形) |
WebOTX Developerで利用する環境について設定します。
アプリケーションやWebOTX Uber JARのビルドに必要なMavenプロジェクトを扱うために、Mavenに関する設定を行います。
詳細については、 [ アプリケーション開発 > 開発環境の構築(WebOTX Developer) > 環境設定 > Maven実行環境の準備 ] を参照してください。
WebOTX DeveloperでMavenプロジェクトを扱うためには、Eclipseのプラグインをインストールします。
リポジトリアクセスにプロキシが必要な場合など、設定は、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/ |
マイクロサービスプロファイル版のWebOTX Uber JARをビルドした際に行う評価など、評価対象がJavaプログラムの場合には、開発環境やビルド環境のマシン自体を評価環境として利用できます。
最終形態であるコンテナイメージをビルドした際に行う評価では、コンテナ環境を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デーモン起動時の引数にポート定義(例えば-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 remote-client」(Podmanでも可能)をインストールすることで、リモート操作が可能となります。
詳細は、Webサイトの情報を参照してください。
| サイト | URL |
|---|---|
| リモート接続 | https://github.com/containers/podman/blob/master/docs/tutorials/remote_client.md#podman-remote-client-tutorial |
Jenkinsを利用したビルド環境の構築のために、以下のインストールを行います。
その後、CIを実行するために必要なJenkinsの設定を行います。
各ツール、アプリケーションのビルドで必要とされるバージョンを確認し、インストールします。
詳細は、Webサイトの情報を参照してください。
| サイト | URL |
|---|---|
| Oracle JDK | https://www.oracle.com/jp/java/technologies/javase-downloads.html |
| OpenJDK | http://jdk.java.net/ |
バージョンへの依存性はないので、最新のものをインストールします。
必要に応じて、リポジトリアクセスに必要なアカウントやプロキシの設定を行います。
詳細は、Webサイトの情報を参照してください。
バージョンへの依存性はないので、最新のものをインストールします。
必要に応じて、リポジトリアクセスに必要なアカウントやプロキシの設定を行います。
詳細は、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 |
バージョンへの依存性はないので、最新のものをインストールします。
[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 |
|---|---|
| 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/ |
必要に応じて、次のような環境を構築します。
Kubernetes環境におけるPrometheus/Grafanaの構築については、以下を参照してください。
各環境で提供されている構築情報についても、以下に示します。
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では、個別にインストールします。
詳細は、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のデプロイ時のカスタムリソースで設定を行います。
詳細については、以下を参照してください。
Kubernetes環境におけるELKスタックの構築については、以下を参照してください。
各環境で提供されている構築情報についても、以下に示します。
OpenShift環境では、クラスタロギングとしてELKスタックをサポートしています。
ClusterLogging Operatorを利用してインストールできます。
詳細は、Webサイトの情報を参照してください。(4.6の場合)
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 |
Logstashは、デフォルトでApplication Serverのコンテナと一緒にPodに含められています。
Elasticsearchと連携する場合には、Application Serverのカスタムリソースにおいて、Elasticsearchの接続先を設定します。
詳細については、以下を参照してください。
OpenShift環境では、以下のOperatorを用いてサービスメッシュをインストールします。
詳細は、Webサイトの情報を参照してください。(4.6の場合)
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/ |