第5章 参照
5.1. Source-to-Image (S2I)
Red Hat JBoss Web Server for OpenShift イメージには、S2I スクリプト と Maven が含まれています。
5.1.1. OpenShift の JWS での Maven アーティファクトリーポジトリーミラーの使用
Maven リポジトリーは、プロジェクト jar、ライブラリー jar、プラグイン、その他のプロジェクト固有のアーティファクトなどのビルドアーティファクトおよび依存関係を保持します。また、S2I ビルドの実行中にアーティファクトをダウンロードするための場所も定義します。Maven Central Repository の使用に加えて、ローカルのカスタムリポジトリー (mirror) もデプロイします。
ローカルミラーを使用する利点は次のとおりです。
- 地理的に近く、高速な同期ミラーを使用できる。
- リポジトリーコンテンツの制御が強化されます。
- パブリックサーバーおよびリポジトリーに依存する必要なく、異なるチーム (開発者、CI) 全体でアーティファクトを共有できる。
- ビルド時間が改善される。
Maven リポジトリーマネージャー はミラーへのローカルキャッシュとして機能できます。リポジトリーマネージャーがすでにデプロイされ、外部で http://10.0.0.1:8080/repository/internal/ にアクセスできる場合、S2I ビルドはこのリポジトリーを使用できます。内部 Maven リポジトリーを使用するには、MAVEN_MIRROR_URL
環境変数をアプリケーションのビルド設定に追加します。
新規ビルド設定の場合は、oc new-app
または oc new-build
で --build-env
オプションを指定します。
$ oc new-app \ https://github.com/jboss-openshift/openshift-quickstarts.git#master \ --image-stream=jboss-webserver<version>-openjdk8-tomcat9-openshift-rhel7:latest\* --context-dir='tomcat-websocket-chat' \ --build-env MAVEN_MIRROR_URL=http://10.0.0.1:8080/repository/internal/ \ --name=jws-wsch-app
既存のビルド設定の場合
MAVEN_MIRROR_URL
変数を必要とするビルド設定を特定します。$ oc get bc -o name buildconfig/jws
MAVEN_MIRROR_URL
環境変数をbuildconfig/jws
に追加します。$ oc env bc/jws MAVEN_MIRROR_URL="http://10.0.0.1:8080/repository/internal/" buildconfig "jws" updated
ビルド設定が更新されたことを確認します。
$ oc env bc/jws --list # buildconfigs jws MAVEN_MIRROR_URL=http://10.0.0.1:8080/repository/internal/
-
oc start-build
を使用したアプリケーションの新規ビルドのスケジュール
アプリケーションのビルド中、Maven 依存関係はデフォルトのパブリックリポジトリーではなく、リポジトリーマネージャーからプルされることを確認できます。ビルドが完了すると、ミラーにはビルド時に取得され、使用されるすべての依存関係が含まれます。
5.1.2. Red Hat JBoss Web Server for OpenShift イメージに含まれるスクリプト
run
- Catalina (Tomcat) の実行
assemble
-
Maven を使用してソースを構築し、パッケージ (
.war
) を作成し、$JWS_HOME/tomcat/webapps
ディレクトリーに移動します。
5.1.3. OpenShift データソースの JWS
データソースには 3 つのタイプがあります。
-
デフォルトの内部データソース: これらは PostgreSQL、MySQL、および MongoDB です。これらのデータソースは、Red Hat レジストリー介して OpenShift ではデフォルトで利用でき、イメージストリームに追加の環境ファイルを設定する必要がありません。データベースを検出可能にして、データソースとして使用されるようにするには、
DB_SERVICE_PREFIX_MAPPING
環境変数を OpenShift サービスの名前に設定します。 - その他の内部データソース: これらは、Red Hat レジストリーを介してデフォルトでは利用できない、OpenShift 上で実行されるデータソースです。これらのデータソースの設定は、OpenShift Secret に追加された環境ファイルによって提供されます。
- 外部データソース: 外部データソースの OpenShift.Configuration で実行されないデータソースは、OpenShift のシークレットに追加された環境ファイルによって提供されます。
データソース環境ファイルは、プロジェクトの OpenShift Secret に追加されます。これらの環境ファイルは、ENV_FILES
環境プロパティーを使用してテンプレート内で呼び出されます。
データソースは、特定の環境変数の値に基づいて自動的に作成されます。最も重要な環境変数は DB_SERVICE_PREFIX_MAPPING
です。DB_SERVICE_PREFIX_MAPPING
はデータソースの JNDI マッピングを定義します。この変数で使用できる値は、POOLNAME-DATABASETYPE=PREFIX
トリプレットのコンマ区切りリストです。 説明を以下に示します。
-
POOLNAME
はデータソースの pool-name として使用されます。 -
DATABASETYPE
は使用するデータベースドライバーです。 -
PREFIX
は、データソースを設定するために使用される環境変数の名前に使用される接頭辞です。
起動スクリプトは、イメージの起動時に実行される個別のデータソースを DB_SERVICE_PREFIX_MAPPING
環境変数に定義された各 POOLNAME-DATABASETYPE=PREFIX
トリプレットに対して作成します。
データソース設定環境変数の完全リストは、ここに記載されているデータソース設定環境変数のリスト を参照してください。
5.1.4. OpenShift と互換性のある環境変数の JWS
ビルド設定は、Source-to-Image build
コマンドに環境変数を含めることで変更できます (「OpenShift の JWS での Maven アーティファクトリーポジトリーミラーの使用」 を参照)。Red Hat JBoss Web Server for OpenShift イメージに有効な環境変数は以下のとおりです。
変数名 | 表示名 | 説明 | 値の例 |
---|---|---|---|
ARTIFACT_DIR | 該当なし |
このディレクトリーからの | target |
APPLICATION_NAME | アプリケーション名 | アプリケーションの名前 | jws-app |
CONTEXT_DIR | コンテキストディレクトリー | ビルドする Git プロジェクト内のパス。root プロジェクトディレクトリーの場合は空です。 | tomcat-websocket-chat |
GITHUB_WEBHOOK_SECRET | Github Webhook Secret | GitHub トリガーシークレット | [a-zA-Z0-9]{8} からの式 |
GENERIC_WEBHOOK_SECRET | Generic Webhook Secret | 汎用ビルドトリガーシークレット | [a-zA-Z0-9]{8} からの式 |
HOSTNAME_HTTP | カスタム HTTP ルートのホスト名 | http サービスルートのカスタムホスト名。デフォルトホスト名の場合は空白のままにします。 | <application-name>-<project>.<default-domain-suffix> |
HOSTNAME_HTTPS | カスタム HTTPS ルートのホスト名 | https サービスルートのカスタムホスト名。デフォルトホスト名の場合は空白のままにします。 | <application-name>-<project>.<default-domain-suffix> |
IMAGE_STREAM_NAMESPACE | イメージストリーム名前空間 | Red Hat ミドルウェアイメージの ImageStreams がインストールされている名前空間 | openshift |
JWS_HTTPS_SECRET | シークレット名 | 証明書ファイルが含まれるシークレットの名前 | jws-app-secret |
JWS_HTTPS_CERTIFICATE | 証明書名 | シークレット内の証明書ファイルの名前 | server.crt |
JWS_HTTPS_CERTIFICATE_KEY | 証明書キー名 | シークレット内の証明書キーファイルの名前 | server.key |
JWS_HTTPS_CERTIFICATE_PASSWORD | 証明書のパスワード | 証明書のパスワード | P5ssw0rd |
JWS_ADMIN_USERNAME | Jws 管理ユーザー名 | JWS 管理アカウントのユーザー名 | ADMIN |
JWS_ADMIN_PASSWORD | Jws 管理パスワード | Jws 管理アカウントのパスワード | P5sw0rd |
SOURCE_REPOSITORY_URL | Git リポジトリー URL | アプリケーションの Git ソース URI | https://github.com/jboss-openshift/openshift-quickstarts.git |
SOURCE_REPOSITORY_REFERENCE | Git リファレンス | Git ブランチ/タグ参照 | 1.2 |
IMAGE_STREAM_NAMESPACE | イメージストリーム名前空間 | Red Hat ミドルウェアイメージの ImageStreams がインストールされている名前空間 | openshift |
MAVEN_MIRROR_URL | Maven ミラー URL | 設定する Maven ミラー/リポジトリーマネージャーの URL。 | http://10.0.0.1:8080/repository/internal/ |