OpenShift Container Platform への Red Hat build of Quarkus アプリケーションのデプロイ
概要
Red Hat build of Quarkus ドキュメントへのフィードバックの提供
エラーを報告したり、ドキュメントを改善したりするには、Red Hat Jira アカウントにログインし、課題を送信してください。Red Hat Jira アカウントをお持ちでない場合は、アカウントを作成するように求められます。
手順
- 次のリンクをクリックして チケットを作成します。
- Summary に課題の簡単な説明を入力します。
- Description に課題や機能拡張の詳細な説明を入力します。問題があるドキュメントのセクションへの URL も記載してください。
- Submit をクリックすると、課題が作成され、適切なドキュメントチームに転送されます。
第1章 Red Hat build of Quarkus アプリケーションを OpenShift Container Platform にデプロイする
OpenShift Container Platform は、コンテナー化されたアプリケーションの開発および実行に使用する Kubernetes ベースのプラットフォームです。Quarkus は、適切なデフォルトとユーザー指定の設定に基づいて OpenShift Container Platform リソースを自動的に生成する機能を提供します。
アプリケーション開発者は、Red Hat build of Quarkus アプリケーションを Red Hat OpenShift Container Platform にデプロイできます。この機能は、複数のデプロイメントオプションをサポートする quarkus-openshift
拡張機能によって提供されます。
1.1. OpenShift Container Platform ビルドストラテジーの概要
- Docker ビルド
- このストラテジーは、OpenShift Container Platform クラスターの外 (ローカルまたは CI 環境) にアーティファクトをビルドし、それを Dockerfile と併せて OpenShift Container Platform ビルドシステムに提供します。アーティファクトには、JAR ファイルまたはネイティブ実行可能ファイルが含まれます。コンテナーは OpenShift Container Platform クラスター内にビルドされ、イメージストリームとして提供されます。
OpenShift Container Platform Docker ビルドストラテジーは、JVM を対象とする Quarkus アプリケーション、またはネイティブ実行可能ファイルにコンパイルされた Quarkus アプリケーションをサポートすることから、推奨されるビルドストラテジーとなっています。ただし、以前の Quarkus バージョンとの互換性を考慮して、デフォルトのビルドストラテジーは S2I です。OpenShift Container Platform Docker ビルドストラテジーを選択するには、quarkus.openshift.build-strategy
プロパティーを使用します。
- Source to Image (S2I)
- ビルドプロセスは、OpenShift Container Platform クラスター内で実行されます。Red Hat build of Quarkus は、S2I を使用して Red Hat build of Quarkus を JVM アプリケーションとしてデプロイすることを完全にサポートしています。
- バイナリー S2I
- このストラテジーでは、S2I ビルドプロセスへの入力として JAR ファイルを使用するため、アプリケーションのビルドとデプロイが高速化されます。
1.1.1. Quarkus でサポートされるビルドストラテジー
次の表は、Red Hat build of Quarkus 3.15 でサポートされるビルドストラテジーの概要を示しています。
ビルドストラテジー | Red Hat build of Quarkus ツールのサポート | JVM のサポート | ネイティブのサポート | JVM Serverless のサポート | ネイティブ Serverless のサポート |
---|---|---|---|---|---|
Docker ビルド | はい | はい | はい | はい | はい |
S2I バイナリー | はい | はい | いいえ | いいえ | いいえ |
Source S2I | いいえ | はい | いいえ | いいえ | 不可 |
1.2. プロジェクトのブートストラップ
まず、OpenShift 拡張機能を含む新しいプロジェクトが必要です。次に、アプリケーションをビルドしてデプロイする前に、OpenShift クラスターにログインする必要があります。
1.2.1. OpenShift 拡張機能の追加
アプリケーションを OpenShift Container Platform クラスター内で実行されるコンテナーイメージとしてビルドし、デプロイするには、Red Hat build of Quarkus OpenShift エクステンション quarkus-openshift
を依存関係としてプロジェクトに追加する必要があります。
Quarkus OpenShift エクステンションは、イメージストリーム、ビルド設定、デプロイメント、サービス定義などの OpenShift Container Platform リソースも生成します。Quarkus アプリケーションに quarkus-smallrye-health
エクステンションが含まれている場合は、OpenShift Container Platform はヘルスエンドポイントにアクセスし、アプリケーションの起動、liveness (実行状態)、readiness (準備状態) を確認できます。
Red Hat build of Quarkus 3.8 以降、OpenShift で非推奨となった DeploymentConfig
オブジェクトも Red Hat build of Quarkus で非推奨になりました。Deployment は、Quarkus OpenShift エクステンションのデフォルトおよび推奨されるデプロイメントの種類です。DeploymentConfig
を使用して以前にデプロイしたアプリケーションを再デプロイする場合、デフォルトでは、これらのアプリケーションは Deployment
を使用しますが、以前の DeploymentConfig
は削除されません。これにより、新しいアプリケーションと古い両方のアプリケーションがデプロイメントされるため、古い DeploymentConfig
を手動で削除する必要があります。ただし、引き続き DeploymentConfig
を使用する場合は、quarkus.openshift.deployment-kind
を DeploymentConfig
に明示的に設定することで実行できます。
前提条件
- Quarkus Maven プロジェクトがある。
手順
以下のいずれかの方法を使用して、プロジェクトに
quarkus-openshift
エクステンションを追加します。pom.xml
ファイルを設定します。pom.xml
<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-openshift</artifactId> </dependency>
OpenShift Container Platform CLI で次のコマンドを入力します。
./mvnw quarkus:add-extension -Dextensions="io.quarkus:quarkus-openshift"
Quarkus CLI で次のコマンドを入力します。
quarkus extension add 'quarkus-openshift'
1.3. OpenShift Container Platform クラスターにログインします。
OpenShift CLI (oc
) を使用して、OpenShift Container Platform クラスターにログインできます。詳細は、OpenShift CLI の使用を開始する を参照してください。
例: OpenShift CLI を使用してログインする
oc login -u myUsername 1
- 1
- サーバー URL、パスワードなどの必要な情報の入力を求められます。
または、API トークンを使用してログインすることもできます。
例: API トークンを使用して OpenShift CLI を使用してログインする
oc login --token=myToken --server=myServerUrl
トークンは、OpenShiftウェブコンソールの _Copy Login Command_ リンクから要求できます。
最後に、OpenShift CLI をまったく使用する必要はありません。代わりに、quarkus.kubernetes-client.api-server-url
設定プロパティーを設定し、quarkus.kubernetes-client.token
、または quarkus.kubernetes-client.username
と quarkus.kubernetes-client.password
でそれぞれ認証します。
Quarkus CLI を使用:
quarkus build quarkus deploy openshift
Maven を使用:
./mvnw install -Dquarkus.kubernetes-client.api-server-url=myServerUrl -Dquarkus.kubernetes-client.token=myToken
Gradle を使用:
./gradlew build -Dquarkus.kubernetes-client.api-server-url=myServerUrl -Dquarkus.kubernetes-client.token=myToken
1.3.1. 必要な OpenShift Container Platform プロジェクトに切り替える
Red Hat OpenShift Container Platform CLI を使用して、アプリケーションを作成し、OpenShift Container Platform プロジェクトを管理できます。提供された情報を使用して OpenShift Container Platform プロジェクトを作成するか、既存プロジェクトに切り替えます。
前提条件
-
OpenShift Container Platform クラスター、およびインストールされている
oc
ツールの最新の互換バージョンにアクセスできる。
手順
oc
ツールにログインします。oc login
次のコマンドを入力し、現在のプロジェクトスペースを表示します。
oc project -q
次のいずれかの手順を使用して、必要な OpenShift Container Platform プロジェクトに移動します。
プロジェクトがすでに存在する場合は、そのプロジェクトに切り替えます。
oc project <project_name>
プロジェクトが存在しない場合は、新規プロジェクトを作成します。
oc new-project <project_name>
1.4. ビルドとデプロイ
次のいずれかのデプロイメントオプションを使用してビルドおよびデプロイできます。
1.4.1. S2Iビルド以外
OpenShift 拡張機能は container-image-s2i を使用するように設定されています。ただし、次のような他のコンテナーイメージ拡張機能を使用することは可能です。
非 s2i コンテナーイメージ拡張機能を使用すると、外部の dockerImageRepository
を指す ImageStream
が作成されます。イメージがビルドされてレジストリーにプッシュされ、ImageStream
によって dockerImageRepository
で使用可能なタグが設定されます。
イメージのビルドに使用するエクステンションを選択するには次のようにします。
quarkus.container-image.builder=docker
あるいは、以下のような場合もあります。
quarkus.container-image.builder=jib
1.5. カスタマイズ
利用可能なすべてのカスタマイズオプションは 、OpenShift 設定オプション で使用できます。
いくつかの例は、以下のセクションで提供されています。
1.5.1. Route の公開
Quarkusアプリケーションの `Route` を公開するには次のようにします。
quarkus.openshift.route.expose=true
このプロパティーを application.properties
ファイルに追加する必要はありません。代わりに、コマンドライン引数として渡すこともできます。
./mvnw clean package -Dquarkus.openshift.route.expose=true
以下にリストされているすべてのプロパティも同様です。
1.5.1.1. Routeリソースの保護
着信接続を保護するために、OpenShift は証明書を提供するいくつかのタイプの TLS 終了を提供します。
ルートを保護する方法の詳細は、OpenShift Container Platform の ドキュメントを参照してください。
次の例は、quarkus.openshift.route.tls プロパティーを追加して、パススルー終了を使用してセキュリティー保護されたルートを設定する方法を示しています。
quarkus.openshift.route.expose=true quarkus.openshift.route.target-port=https ## Route TLS configuration: quarkus.openshift.route.tls.termination=passthrough quarkus.openshift.route.tls.insecure-edge-termination-policy=None
1.5.2. ラベル
生成されたリソースにラベルを追加するには次のようにします。
quarkus.openshift.labels.foo=bar
1.5.3. アノテーション
生成されたリソースにアノテーションを追加するには次のようにします。
quarkus.openshift.annotations.foo=bar
1.5.4. 環境変数
OpenShift Container Platform では、環境変数を定義する方法が複数提供されています。
- キーと値のペア。
- Secret または ConfigMap からすべての値をインポート
- Secret または ConfigMap の指定されたフィールドで識別される単一の値を補間
- 同じリソース内のフィールドから値を補間
1.5.4.1. キー/値のペアからの環境変数
生成されたリソースに環境変数としてキーとバリューのペアを追加する場合:
quarkus.openshift.env.vars.my-env-var=foobar
上記のコマンドは 、MY_ENV_VAR=foobar を
環境変数として追加します。キー my-env-var は
大文字に変換され、ダッシュはアンダースコアに置き換えられ、結果は MY_ENV_VAR
になります。
1.5.4.2. シークレットからの環境変数
`Secret` のすべてのキーと値のペアを環境変数として追加するには、以下の設定を適用し、ソースとして使用する各 `Secret` をカンマ ( `,` ) で区切ってください。
quarkus.openshift.env.secrets=my-secret,my-other-secret
これにより、コンテナー定義に次のものが生成されます。
envFrom: - secretRef: name: my-secret optional: false - secretRef: name: my-other-secret optional: false
以下は、 `my-secret` Secret から `keyName` フィールドで識別される値を `foo` 環境変数に抽出します。
quarkus.openshift.env.mapping.foo.from-secret=my-secret quarkus.openshift.env.mapping.foo.with-key=keyName
これにより、コンテナーの env
セクションに次の内容が生成されます。
- env: - name: FOO valueFrom: secretKeyRef: key: keyName name: my-secret optional: false
1.5.4.3. ConfigMap から環境変数を取得
`ConfigMap` からのすべてのキーと値のペアを環境変数として追加するには、以下の設定を適用し、ソースとして使用する各 `ConfigMap` をカンマ ( `,` ) で区切ってください。
quarkus.openshift.env.configmaps=my-config-map,another-config-map
これにより、コンテナー定義に次のものが生成されます。
envFrom: - configMapRef: name: my-config-map optional: false - configMapRef: name: another-config-map optional: false
以下は、 `my-config-map` ConfigMap から `keyName` フィールドで識別される値を `foo` 環境変数に抽出したものです。
quarkus.openshift.env.mapping.foo.from-configmap=my-configmap quarkus.openshift.env.mapping.foo.with-key=keyName
これにより、コンテナーの env
セクションに次の内容が生成されます。
- env: - name: FOO valueFrom: configMapKeyRef: key: keyName name: my-configmap optional: false
1.5.4.4. フィールドからの環境変数
ソースとして使用するフィールドのパスを指定することにより、別のフィールドの値を使用して新しい環境変数を追加することもできます。以下に例を示します。
quarkus.openshift.env.fields.foo=metadata.name
1.5.4.5. 生成されるデプロイメントリソースの変更
デプロイメント
リソースを生成するだけでなく、application.properties
を使用して、代わりに DeploymentConfig
、StatefulSet
、Job
、または CronJob
リソースを取得することもできます。
quarkus.openshift.deployment-kind=StatefulSet
1.5.4.5.1. Job リソースの生成
Job リソースを生成する場合は、 `application.properties` で以下のプロパティーを追加する必要があります。
quarkus.openshift.deployment-kind=Job
Picocli エクステンションを使用している場合、デフォルトで Job リソースが生成されます。
quarkus.openshift.arguments
プロパティーを通じて、Kubernetes ジョブが使用する引数を提供できます。たとえば、プロパティー quarkus.openshift.arguments=A,B
を追加します。
最後に、Kubernetes ジョブは OpenShift にインストールされるたびに起動されます。Kubernetes ジョブの実行方法の詳細は、サンプルジョブの実行を 参照してください。
quarkus.openshift.job.xxx
の下のプロパティーを使用して、Kubernetes ジョブ設定の残りを設定できます。詳細は、quarkus.openshift.job.parallelism を参照してください。
1.5.4.5.2. CronJob リソースの生成
CronJob リソースを生成する場合は、application.properties
ファイルを使用して次のプロパティーを追加する必要があります。
quarkus.openshift.deployment-kind=CronJob # Cron expression to run the job every hour quarkus.openshift.cron-job.schedule=0 * * * *
CronJob リソースでは 、quarkus.openshift.cron-job.schedule
プロパティーを通じてジョブをいつ起動するかを指定するために Cron 式が必要です。これらが提供されない場合、ビルドは失敗します。
quarkus.openshift.cron-job.xxx
の下のプロパティーを使用して、Kubernetes CronJob 設定の残りを設定できます (詳細は、quarkus.openshift.cron-job.parallelism を参照してください)。
1.5.4.6. 検証
2 つの定義間の競合 (たとえば、誤って値を割り当て、変数がフィールドから派生していることを指定するなど) が発生すると、ビルド時にエラーがスローされます。アプリケーションをクラスターにデプロイする前に問題を修正できますが、クラスターにデプロイすると、問題の原因を診断することがより困難になる可能性があります。
同様に、同じシークレットからのインジェクションを 2 回定義するなど、2 つの冗長な定義では問題は発生しませんが、その定義を重複させる意図がなかった可能性があることを通知する警告が報告されます。
1.5.4.6.1. Backwards compatibility
OpenShift 拡張機能の以前のバージョンでは、環境変数を追加するための異なる構文がサポートされていました。古い構文は引き続きサポートされていますが、非推奨となっているため、新しい構文に移行することを推奨します。
Old | New | ||
素の変数 |
|
| |
フィールドから |
|
| |
すべての `ConfigMap` から |
|
| |
すべての `Secret` から |
|
| |
ある `Secret` フィールドから |
|
| |
|
| ||
ある `ConfigMap` フィールドから |
|
| |
|
|
If you redefine the same variable by using the new syntax while keeping the old syntax, only the new version is kept, and a warning will be issued to alert you of the problem. For example, if you define both `quarkus.openshift.env-vars.my-env-var.value=foobar` and `quarkus.openshift.env.vars.my-env-var=newValue`, the extension generates an environment variable `MY_ENV_VAR=newValue` and issues a warning.
1.5.5. ボリュームのマウント
OpenShiftエクステンションを使用すると、アプリケーションのVolumeとマウントの両方を設定することができます。簡単な設定で任意のボリュームをマウントできます。
quarkus.openshift.mounts.my-volume.path=/where/to/mount
これにより、 Podのパス `/where/to/mount` にVolume `my-volume` のマウントを追加します。以下のセクションに示すように、ボリューム自体を設定できます。
1.5.5.1. シークレットのボリューム
quarkus.openshift.secret-volumes.my-volume.secret-name=my-secret
1.5.5.2. ConfigMap ボリューム
quarkus.openshift.config-map-volumes.my-volume.config-map-name=my-config-map
1.5.5.3. 永続ボリューム要求
quarkus.openshift.pvc-volumes.my-pvc.claim-name=my-pvc
1.6. 設定リファレンス
ビルド時に固定された設定プロパティー: その他の設定プロパティーはすべて実行時にオーバーライドできます。
設定プロパティー | 型 | デフォルト |
環境変数を読み込むためのシークレット名のオプションのリスト。
環境変数: | list of string | |
環境変数を読み込む ConfigMap 名のオプションのリスト。
環境変数: | list of string | |
環境変数名と、その値を取得する関連フィールド参照を関連付けるマップ。
環境変数: | Map<String,String> | |
環境変数の値。
環境変数: | string | |
値を抽出する Secret のオプションの名前。
環境変数: | string | |
値を抽出する ConfigMap のオプションの名前。
環境変数: | string | |
値が抽出されるフィールドを識別するキー。
環境変数: | string |
必須
|
コンテナーに環境変数を追加するときに使用するオプションの接頭辞。
環境変数: | string | |
コンテナーに環境変数を追加するときに使用するオプションの接頭辞。
環境変数: | string | |
このコンポーネントが属するグループの名前。
環境変数: | string | |
アプリケーションの名前。この値は、次のような Kubernetes リソースの命名に使用されます: - デプロイメント - サービスなど…
環境変数: | string | |
アプリケーションのバージョン。
環境変数: | string | |
生成されたリソースが属する名前空間。値が設定されていない場合、生成されたマニフェストのメタデータセクションに名前空間フィールドは追加されません。つまり、マニフェストがクラスターに適用されると、名前空間は現在の Kubernetes コンテキストから解決されます (詳細は、organize-cluster-access-kubeconfig を参照してください)。
環境変数: | string | |
すべてのリソースに追加するカスタムラベル。
環境変数: | Map<String,String> | |
すべてのリソースに追加するカスタムアノテーション。
環境変数: | Map<String,String> | |
アプリケーション用に生成されるサービスの種類
環境変数: |
|
|
Kubernetes アノテーションにビルドタイムスタンプを追加するかどうか。これは、同じアプリケーションの連続ビルドのマニフェストが異なるようにするのに非常に便利な方法であり、これにより Kubernetes が更新されたリソースを適用することが保証されます。
環境変数: | boolean |
|
環境変数: | boolean |
|
環境変数: | boolean |
|
作業ディレクトリー。
環境変数: | string | |
コマンド。
環境変数: | list of string | |
引数
環境変数: | list of string | |
サービスアカウント。
環境変数: | string | |
設定されている場合、設定に応じてコンテナーの名前が変更されます。
環境変数: | string | |
ポート番号。コンテナー港を指します。
環境変数: | int | |
ホストポート。
環境変数: | int | |
アプリケーションパス (Web アプリケーションパスを参照)。
環境変数: | string |
|
プロトコル。
環境変数: |
|
|
このポートをマップするノードポート。これは、serviceType が node-port に設定されている場合にのみ有効になります。
環境変数: | int | |
有効にすると、ポートはスキーマ HTTPS を使用するように設定されます。
環境変数: | boolean |
|
イメージプルポリシー
環境変数: |
|
|
イメージプルの秘密。
環境変数: | list of string | |
コンテナーイメージのユーザー名とパスワードが指定されている場合、イメージプルシークレットの生成を有効にします。
環境変数: | boolean |
|
環境変数: | int | |
環境変数: | string | |
プローブに使用する http パス。これを機能させるには、コンテナーポートも設定する必要があります。 コンテナーポートが設定されていると仮定すると (上記のコメントのとおり)、execAction または tcpSocketAction が設定されていない場合は、パスが設定されていなくても HTTP プローブが自動的に使用されます (その結果、ルートパスが使用されます)。Smallrye Health を使用すると、ヘルスチェックパスに応じてパスが自動的に設定されます。
環境変数: | string | |
環境変数: | string | |
プローブに使用するコマンド。
環境変数: | string | |
プローブに使用する TCP ソケット (形式は host:port)。
環境変数: | string | |
プローブに使用する gRPC ポート (形式は port または port:service のいずれか)。
環境変数: | string | |
有効になっていて、
環境変数: | boolean |
|
プローブを開始する前に待機する時間の長さ。
環境変数: |
| |
アクションを呼び出す期間。
環境変数: |
| |
各アクションを待機する時間の長さ。
環境変数: |
| |
使用する成功しきい値。
環境変数: | int |
|
使用する失敗しきい値。
環境変数: | int |
|
環境変数: | int | |
環境変数: | string | |
プローブに使用する http パス。これを機能させるには、コンテナーポートも設定する必要があります。 コンテナーポートが設定されていると仮定すると (上記のコメントのとおり)、execAction または tcpSocketAction が設定されていない場合は、パスが設定されていなくても HTTP プローブが自動的に使用されます (その結果、ルートパスが使用されます)。Smallrye Health を使用すると、ヘルスチェックパスに応じてパスが自動的に設定されます。
環境変数: | string | |
環境変数: | string | |
プローブに使用するコマンド。
環境変数: | string | |
プローブに使用する TCP ソケット (形式は host:port)。
環境変数: | string | |
プローブに使用する gRPC ポート (形式は port または port:service のいずれか)。
環境変数: | string | |
有効になっていて、
環境変数: | boolean |
|
プローブを開始する前に待機する時間の長さ。
環境変数: |
| |
アクションを呼び出す期間。
環境変数: |
| |
各アクションを待機する時間の長さ。
環境変数: |
| |
使用する成功しきい値。
環境変数: | int |
|
使用する失敗しきい値。
環境変数: | int |
|
環境変数: | int | |
環境変数: | string | |
プローブに使用する http パス。これを機能させるには、コンテナーポートも設定する必要があります。 コンテナーポートが設定されていると仮定すると (上記のコメントのとおり)、execAction または tcpSocketAction が設定されていない場合は、パスが設定されていなくても HTTP プローブが自動的に使用されます (その結果、ルートパスが使用されます)。Smallrye Health を使用すると、ヘルスチェックパスに応じてパスが自動的に設定されます。
環境変数: | string | |
環境変数: | string | |
プローブに使用するコマンド。
環境変数: | string | |
プローブに使用する TCP ソケット (形式は host:port)。
環境変数: | string | |
プローブに使用する gRPC ポート (形式は port または port:service のいずれか)。
環境変数: | string | |
有効になっていて、
環境変数: | boolean |
|
プローブを開始する前に待機する時間の長さ。
環境変数: |
| |
アクションを呼び出す期間。
環境変数: |
| |
各アクションを待機する時間の長さ。
環境変数: |
| |
使用する成功しきい値。
環境変数: | int |
|
使用する失敗しきい値。
環境変数: | int |
|
true (デフォルト) の場合、Prometheus によってメトリクス用にスクレイピングされる必要があるサービスを識別するための一連のアノテーションを出力します。 ServiceMonitor で Prometheus Operator を使用する設定では、アノテーションは必要ない場合もあります。
環境変数: | boolean |
|
true (デフォルト) の場合、Prometheus によってメトリクス用にスクレイピングされる必要があるサービスを識別するための一連のアノテーションを出力します。 ServiceMonitor で Prometheus Operator を使用する設定では、アノテーションは必要ない場合もあります。
環境変数: | boolean |
|
スクレイプ値に使用されるアノテーション接頭辞を定義します。この値は、他のアノテーション名のデフォルトのベースとして使用されます。生成されたアノテーションのベースを変更すると、再ラベル付けルールの定義が容易になり、予期しない連鎖効果を回避できるようになります。デフォルト値は
環境変数: | string |
|
スクレイピングする必要があるサービスを示すために使用されるアノテーションを定義します。デフォルトでは、定義された接頭辞に
環境変数: | string | |
スクレイピングするパスを示すために使用されるアノテーションを定義します。デフォルトでは、定義された接頭辞に
環境変数: | string | |
スクレイピングするポートを示すために使用されるアノテーションを定義します。デフォルトでは、定義された接頭辞に
環境変数: | string | |
スクレイピングに使用するスキームを示すために使用されるアノテーションを定義します。デフォルトでは、定義された接頭辞に
環境変数: | string | |
マウントするボリュームの名前。
環境変数: | string | |
マウントするパス。
環境変数: | string | |
コンテナーの volumeName をマウントする volumeName 内のパス。
環境変数: | string | |
readOnly
環境変数: | boolean |
|
マウントするシークレットの名前。
環境変数: | string |
必須
|
デフォルトモード8 進数を指定する場合、先頭にゼロが必要です。
環境変数: | string |
|
ファイルがマウントされるパス。
環境変数: | string |
必須
|
0 から 0777 までの値である必要があります。指定しない場合、ボリューム defaultMode が使用されます。
環境変数: | int |
|
任意
環境変数: | boolean |
|
マウントする ConfigMap の名前。
環境変数: | string |
必須
|
デフォルトモード8 進数を指定する場合、先頭にゼロが必要です。
環境変数: | string |
|
ファイルがマウントされるパス。
環境変数: | string |
必須
|
0 から 0777 までの値である必要があります。指定しない場合、ボリューム defaultMode が使用されます。
環境変数: | int |
|
任意
環境変数: | boolean |
|
emptyDir ボリューム
環境変数: | list of string | |
Git リポジトリー URL
環境変数: | string |
必須
|
マウントするリポジトリーのディレクトリー。
環境変数: | string | |
使用するコミットハッシュ。
環境変数: | string | |
マウントするクレームの名前。
環境変数: | string |
必須
|
デフォルトモード8 進数を指定する場合、先頭にゼロが必要です。
環境変数: | string |
|
任意
環境変数: | boolean |
|
マウントするディスクの名前。
環境変数: | string |
必須
|
partition。
環境変数: | int | |
ファイルシステムの種類。
環境変数: | string |
|
volumeName が読み取り専用かどうか。
環境変数: | boolean |
|
共有名。
環境変数: | string |
必須
|
シークレットの名前。
環境変数: | string |
必須
|
volumeName が読み取り専用かどうか。
環境変数: | boolean |
|
マウントするディスクの名前。
環境変数: | string |
必須
|
VHD Blob オブジェクトの URI、または Kind が Managed の場合は Azure マネージドデータディスクのリソース ID
環境変数: | string |
必須
|
ディスクの種類。
環境変数: |
|
|
ディスクキャッシュモード。
環境変数: |
| --read-write |
ファイルシステムの種類
環境変数: | string |
|
volumeName が読み取り専用かどうか。
環境変数: | boolean |
|
環境変数を読み込むためのシークレット名のオプションのリスト。
環境変数: | list of string | |
環境変数を読み込む ConfigMap 名のオプションのリスト。
環境変数: | list of string | |
環境変数名と、その値を取得する関連フィールド参照を関連付けるマップ。
環境変数: | Map<String,String> | |
環境変数の値。
環境変数: | string | |
値を抽出する Secret のオプションの名前。
環境変数: | string | |
値を抽出する ConfigMap のオプションの名前。
環境変数: | string | |
値が抽出されるフィールドを識別するキー。
環境変数: | string |
必須
|
コンテナーに環境変数を追加するときに使用するオプションの接頭辞。
環境変数: | string | |
コンテナーに環境変数を追加するときに使用するオプションの接頭辞。
環境変数: | string | |
コンテナーイメージ。
環境変数: | string | |
作業ディレクトリー。
環境変数: | string | |
コマンド
環境変数: | list of string | |
引数
環境変数: | list of string | |
サービスアカウント。
環境変数: | string | |
アプリケーションが公開されるホスト。
環境変数: | string | |
ポート番号。コンテナー港を指します。
環境変数: | int | |
ホストポート。
環境変数: | int | |
アプリケーションパス (Web アプリケーションパスを参照)。
環境変数: | string |
|
プロトコル。
環境変数: |
|
|
このポートをマップするノードポート。これは、serviceType が node-port に設定されている場合にのみ有効になります。
環境変数: | int | |
有効にすると、ポートはスキーマ HTTPS を使用するように設定されます。
環境変数: | boolean |
|
イメージプルポリシー
環境変数: |
|
|
イメージのプルの秘密。
環境変数: | list of string | |
環境変数: | int | |
環境変数: | string | |
プローブに使用する http パス。これを機能させるには、コンテナーポートも設定する必要があります。 コンテナーポートが設定されていると仮定すると (上記のコメントのとおり)、execAction または tcpSocketAction が設定されていない場合は、パスが設定されていなくても HTTP プローブが自動的に使用されます (その結果、ルートパスが使用されます)。Smallrye Health を使用すると、ヘルスチェックパスに応じてパスが自動的に設定されます。
環境変数: | string | |
環境変数: | string | |
プローブに使用するコマンド。
環境変数: | string | |
プローブに使用する TCP ソケット (形式は host:port)。
環境変数: | string | |
プローブに使用する gRPC ポート (形式は port または port:service のいずれか)。
環境変数: | string | |
有効になっていて、
環境変数: | boolean |
|
プローブを開始する前に待機する時間の長さ。
環境変数: |
| |
アクションを呼び出す期間。
環境変数: |
| |
各アクションを待機する時間の長さ。
環境変数: |
| |
使用する成功しきい値。
環境変数: | int |
|
使用する失敗しきい値。
環境変数: | int |
|
環境変数: | int | |
環境変数: | string | |
プローブに使用する http パス。これを機能させるには、コンテナーポートも設定する必要があります。 コンテナーポートが設定されていると仮定すると (上記のコメントのとおり)、execAction または tcpSocketAction が設定されていない場合は、パスが設定されていなくても HTTP プローブが自動的に使用されます (その結果、ルートパスが使用されます)。Smallrye Health を使用すると、ヘルスチェックパスに応じてパスが自動的に設定されます。
環境変数: | string | |
環境変数: | string | |
プローブに使用するコマンド。
環境変数: | string | |
プローブに使用する TCP ソケット (形式は host:port)。
環境変数: | string | |
プローブに使用する gRPC ポート (形式は port または port:service のいずれか)。
環境変数: | string | |
有効になっていて、
環境変数: | boolean |
|
プローブを開始する前に待機する時間の長さ。
環境変数: |
| |
アクションを呼び出す期間。
環境変数: |
| |
各アクションを待機する時間の長さ。
環境変数: |
| |
使用する成功しきい値。
環境変数: | int |
|
使用する失敗しきい値。
環境変数: | int |
|
マウントするボリュームの名前。
環境変数: | string | |
マウントするパス。
環境変数: | string | |
コンテナーの volumeName をマウントする volumeName 内のパス。
環境変数: | string | |
readOnly
環境変数: | boolean |
|
CPU の要件
環境変数: | string | |
メモリーの要件
環境変数: | string | |
CPU の要件
環境変数: | string | |
メモリーの要件
環境変数: | string | |
環境変数を読み込むためのシークレット名のオプションのリスト。
環境変数: | list of string | |
環境変数を読み込む ConfigMap 名のオプションのリスト。
環境変数: | list of string | |
環境変数名と、その値を取得する関連フィールド参照を関連付けるマップ。
環境変数: | Map<String,String> | |
環境変数の値。
環境変数: | string | |
値を抽出する Secret のオプションの名前。
環境変数: | string | |
値を抽出する ConfigMap のオプションの名前。
環境変数: | string | |
値が抽出されるフィールドを識別するキー。
環境変数: | string |
必須
|
コンテナーに環境変数を追加するときに使用するオプションの接頭辞。
環境変数: | string | |
コンテナーに環境変数を追加するときに使用するオプションの接頭辞。
環境変数: | string | |
コンテナーイメージ。
環境変数: | string | |
作業ディレクトリー。
環境変数: | string | |
コマンド
環境変数: | list of string | |
引数
環境変数: | list of string | |
サービスアカウント。
環境変数: | string | |
アプリケーションが公開されるホスト。
環境変数: | string | |
ポート番号。コンテナー港を指します。
環境変数: | int | |
ホストポート。
環境変数: | int | |
アプリケーションパス (Web アプリケーションパスを参照)。
環境変数: | string |
|
プロトコル。
環境変数: |
|
|
このポートをマップするノードポート。これは、serviceType が node-port に設定されている場合にのみ有効になります。
環境変数: | int | |
有効にすると、ポートはスキーマ HTTPS を使用するように設定されます。
環境変数: | boolean |
|
イメージプルポリシー
環境変数: |
|
|
イメージのプルの秘密。
環境変数: | list of string | |
環境変数: | int | |
環境変数: | string | |
プローブに使用する http パス。これを機能させるには、コンテナーポートも設定する必要があります。 コンテナーポートが設定されていると仮定すると (上記のコメントのとおり)、execAction または tcpSocketAction が設定されていない場合は、パスが設定されていなくても HTTP プローブが自動的に使用されます (その結果、ルートパスが使用されます)。Smallrye Health を使用すると、ヘルスチェックパスに応じてパスが自動的に設定されます。
環境変数: | string | |
環境変数: | string | |
プローブに使用するコマンド。
環境変数: | string | |
プローブに使用する TCP ソケット (形式は host:port)。
環境変数: | string | |
プローブに使用する gRPC ポート (形式は port または port:service のいずれか)。
環境変数: | string | |
有効になっていて、
環境変数: | boolean |
|
プローブを開始する前に待機する時間の長さ。
環境変数: |
| |
アクションを呼び出す期間。
環境変数: |
| |
各アクションを待機する時間の長さ。
環境変数: |
| |
使用する成功しきい値。
環境変数: | int |
|
使用する失敗しきい値。
環境変数: | int |
|
環境変数: | int | |
環境変数: | string | |
プローブに使用する http パス。これを機能させるには、コンテナーポートも設定する必要があります。 コンテナーポートが設定されていると仮定すると (上記のコメントのとおり)、execAction または tcpSocketAction が設定されていない場合は、パスが設定されていなくても HTTP プローブが自動的に使用されます (その結果、ルートパスが使用されます)。Smallrye Health を使用すると、ヘルスチェックパスに応じてパスが自動的に設定されます。
環境変数: | string | |
環境変数: | string | |
プローブに使用するコマンド。
環境変数: | string | |
プローブに使用する TCP ソケット (形式は host:port)。
環境変数: | string | |
プローブに使用する gRPC ポート (形式は port または port:service のいずれか)。
環境変数: | string | |
有効になっていて、
環境変数: | boolean |
|
プローブを開始する前に待機する時間の長さ。
環境変数: |
| |
アクションを呼び出す期間。
環境変数: |
| |
各アクションを待機する時間の長さ。
環境変数: |
| |
使用する成功しきい値。
環境変数: | int |
|
使用する失敗しきい値。
環境変数: | int |
|
マウントするボリュームの名前。
環境変数: | string | |
マウントするパス。
環境変数: | string | |
コンテナーの volumeName をマウントする volumeName 内のパス。
環境変数: | string | |
readOnly
環境変数: | boolean |
|
CPU の要件
環境変数: | string | |
メモリーの要件
環境変数: | string | |
CPU の要件
環境変数: | string | |
メモリーの要件
環境変数: | string | |
IP アドレス
環境変数: | string | |
IP に解決するホスト名。
環境変数: | list of string | |
nodeSelector のキー。
環境変数: | string |
必須
|
nodeSelector の値。
環境変数: | string |
必須
|
CPU の要件
環境変数: | string | |
メモリーの要件
環境変数: | string | |
CPU の要件
環境変数: | string | |
メモリーの要件
環境変数: | string | |
設定されている場合、シークレットはアプリケーションコンテナーにマウントされ、その内容がアプリケーション設定に使用されます。
環境変数: | string | |
設定されている場合、config map はアプリケーションコンテナーにマウントされ、その内容がアプリケーション設定に使用されます。
環境変数: | string | |
ロールの名前。
環境変数: | string | |
ルートの namespace。
環境変数: | string | |
ロールリソースに追加するラベル。
環境変数: | Map<String,String> | |
ポリシールールの API グループ。
環境変数: | list of string | |
ポリシールールの非リソース URL。
環境変数: | list of string | |
ポリシールールのリソース名。
環境変数: | list of string | |
ポリシールールのリソース。
環境変数: | list of string | |
ポリシールールの動詞。
環境変数: | list of string | |
クラスターロールの名前
環境変数: | string | |
ClusterRole リソースに追加するラベル。
環境変数: | Map<String,String> | |
ポリシールールの API グループ。
環境変数: | list of string | |
ポリシールールの非リソース URL。
環境変数: | list of string | |
ポリシールールのリソース名。
環境変数: | list of string | |
ポリシールールのリソース。
環境変数: | list of string | |
ポリシールールの動詞。
環境変数: | list of string | |
サービスアカウントの名前
環境変数: | string | |
サービスアカウントの名前空間。
環境変数: | string | |
サービスアカウントのラベル。
環境変数: | Map<String,String> | |
true の場合、このサービスアカウントは生成されたデプロイメントリソースで使用されます。
環境変数: | boolean | |
生成する RoleBinding リソースの名前。指定されていない場合は、アプリケーション名とロール参照名が使用されます。
環境変数: | string | |
RoleBinding リソースに追加するラベル。
環境変数: | Map<String,String> | |
生成されたロールバインディングリソース内の RoleRef 要素によって使用されるロールリソースの名前。デフォルトでは、view というロール名になります。
環境変数: | string | |
環境変数: | boolean | |
生成されたロールバインディングリソース内の Subject 要素によって使用される名前リソース。
環境変数: | string | |
生成されたロールバインディングリソース内の Subject 要素によって使用される種類のリソース。デフォルトでは、ServiceAccount の種類が使用されます。
環境変数: | string |
|
kind プロパティーと一致する apiGroup リソース。デフォルトでは空です。
環境変数: | string | |
生成されたロールバインディングリソース内の Subject 要素によって使用される名前空間リソース。デフォルトでは、生成されたリソースで提供されるものと同じものが使用されます。
環境変数: | string | |
生成する ClusterRoleBinding リソースの名前。指定されていない場合は、アプリケーション名とロール参照名が使用されます。
環境変数: | string | |
RoleBinding リソースに追加するラベル。
環境変数: | Map<String,String> | |
生成された ClusterRoleBinding リソース内の RoleRef 要素によって使用される ClusterRole リソースの名前。
環境変数: | string |
必須
|
生成されたロールバインディングリソース内の Subject 要素によって使用される名前リソース。
環境変数: | string | |
生成されたロールバインディングリソース内の Subject 要素によって使用される種類のリソース。デフォルトでは、ServiceAccount の種類が使用されます。
環境変数: | string |
|
kind プロパティーと一致する apiGroup リソース。デフォルトでは空です。
環境変数: | string | |
生成されたロールバインディングリソース内の Subject 要素によって使用される名前空間リソース。デフォルトでは、生成されたリソースで提供されるものと同じものが使用されます。
環境変数: | string | |
Level は、コンテナーに適用される SELinux レベルのラベルです。
環境変数: | string | |
コンテナーに適用される SELinux ロールラベル。
環境変数: | string | |
コンテナーに適用される SELinux タイプラベル。
環境変数: | string | |
コンテナーに適用される SELinux ユーザーラベル。
環境変数: | string | |
使用する GMSA 認証情報仕様の名前。
環境変数: | string | |
GMSACredentialSpec は、GMSA アドミッション Webhook (windows-gsma) が、GMSACredentialSpecName フィールドで名前が付けられた GMSA 認証情報仕様の内容をインライン化する場所です。
環境変数: | string | |
コンテナープロセスのエントリーポイントを実行するための Windows の UserName。
環境変数: | string | |
hostProcess は、コンテナーを 'Host Process' コンテナーとして実行する必要があるかどうかを決定します。
環境変数: | boolean | |
コンテナープロセスのエントリーポイントを実行するための UID。
環境変数: | long | |
コンテナープロセスのエントリーポイントを実行するための GID。
環境変数: | long | |
コンテナーが root 以外のユーザーとして実行される必要があることを示します。
環境変数: | boolean | |
コンテナーのプライマリー GID に加えて、各コンテナーで実行される最初のプロセスに適用されるグループのリスト。指定しない場合、グループはどのコンテナーにも追加されません。
環境変数: | 長いリスト | |
Pod の全コンテナーに適用される特別な補助グループです。
環境変数: | long | |
Sysctl は、Pod に使用される namespace 付き sysctl のリストを保持します。
環境変数: | Map<String,String> | |
ボリュームがマウントされるときにボリュームに fsGroup を適用するために使用されるポリシーを保持します。値: OnRootMismatch、Always
環境変数: | on-root-mismatch: ルートディレクトリーの権限と所有権がボリューム上の予想される権限と一致しない場合にのみ、ボリュームの所有権と権限が変更されることを示します。 always: ボリュームが Pod 内にマウントされるたびに、ボリュームの所有権と権限を常に変更する必要があることを示します。これはデフォルトの動作です。 | |
Git-ops の互換性を向上させるために、生成された Kubernetes リソースに非べき等フィールドを含めるかどうかを制御するために使用されるスイッチ。
環境変数: | boolean |
|
生成された設定に vcs-uri アノテーションを追加するかどうか。
環境変数: | boolean |
|
vcs-uri アノテーションのオプションのオーバーライド。
環境変数: | string | |
使用する OpenShift のフレーバー/バージョン。OpenShift の古いバージョンでは、サポートされるラベルとフィールドに若干の違いがあります。このオプションを使用すると、ユーザーはマニフェストを、使用する OpenShift のフレーバーに合わせて自動的に調整できます。
環境変数: |
|
|
使用するデプロイメントリソースの種類。サポートされている値は、デプロイメント、StatefulSet、Job、CronJob、および DeploymentConfig です。デフォルトは、
環境変数: |
| |
希望する Pod の数
環境変数: | int |
|
serviceType が nodePort に設定されている場合に設定する nodePort
環境変数: | int | |
true の場合、サービスが公開されます
環境変数: | boolean |
|
アプリケーションが公開されるホスト
環境変数: | string | |
ターゲットの名前付きポート。指定しない場合は、サービスリソースポートから差し引かれます。オプションは http と https です。
環境変数: | string |
|
エクスポジション (ルートまたは Ingress) リソースに追加するカスタムアノテーション
環境変数: | Map<String,String> | |
エクスポジション (ルートまたは Ingress) リソースに追加するカスタムラベル
環境変数: | Map<String,String> | |
証明機関の証明書の内容。
環境変数: | string | |
証明書の内容。
環境変数: | string | |
最終目的地の CA 証明書の内容。
環境変数: | string | |
ルートへの安全でない接続に対する望ましい動作。
環境変数: | string | |
キーファイルの内容。
環境変数: | string | |
終端タイプ。
環境変数: | string | |
ジョブが任意の時点で実行する必要のある Pod の最大数を指定します。
環境変数: | int | |
ジョブを実行するために正常に終了した Pod の希望数を指定します。
環境変数: | int | |
CompletionMode は、Pod の完了を追跡する方法を指定します。
環境変数: |
|
|
このジョブを失敗とマークするまでの再試行回数を指定します。
環境変数: | int | |
システムがジョブを終了しようとする前に、ジョブが継続的にアクティブになる可能性がある startTime を基準とした秒単位の期間を指定します。値は正の整数でなければなりません。
環境変数: | long | |
実行が終了したジョブ (完了または失敗) の有効期間を制限します。このフィールドが設定されている場合、Job の終了後に ttlSecondsAfterFinished を設定すると、自動的に削除される可能性があります。
環境変数: | int | |
Suspend は、Job コントローラーが Pod を作成するかどうかを指定します。
環境変数: | boolean |
|
ジョブコンテナーが失敗した場合にポリシーを再起動します。
環境変数: |
|
|
Cron 形式のスケジュールについては、Cron を参照してください。
環境変数: | string | |
ジョブスケジュールのタイムゾーン。デフォルト値は、kube-controller-manager のローカル時間です。
環境変数: | string | |
ConcurrencyPolicy はジョブの処理方法を説明します。
環境変数: |
|
|
ジョブを開始するためのオプションの期限 (秒単位)(何らかの理由によりスケジュールされた時間が経過する場合)。ジョブの実行が行われない場合、ジョブの失敗としてカウントされます。
環境変数: | long | |
保持する失敗した終了ジョブの数。デフォルト値は 1 です。
環境変数: | int | |
保持する成功した終了済みジョブの数。デフォルト値は 3 です。
環境変数: | int | |
ジョブが任意の時点で実行する必要のある Pod の最大数を指定します。
環境変数: | int | |
ジョブを実行するために正常に終了した Pod の希望数を指定します。
環境変数: | int | |
CompletionMode は、Pod の完了を追跡する方法を指定します。
環境変数: |
|
|
このジョブを失敗とマークするまでの再試行回数を指定します。
環境変数: | int | |
システムがジョブを終了しようとする前に、ジョブが継続的にアクティブになる可能性がある startTime を基準とした秒単位の期間を指定します。値は正の整数でなければなりません。
環境変数: | long | |
実行が終了したジョブ (完了または失敗) の有効期間を制限します。このフィールドが設定されている場合、Job の終了後に ttlSecondsAfterFinished を設定すると、自動的に削除される可能性があります。
環境変数: | int | |
Suspend は、Job コントローラーが Pod を作成するかどうかを指定します。
環境変数: | boolean |
|
ジョブコンテナーが失敗した場合にポリシーを再起動します。
環境変数: |
|
|
true の場合、Pod のデバッグモードが有効になります。
環境変数: | boolean |
|
使用するトランスポート。
環境変数: | string |
|
有効にすると、JVM はメインクラスを実行する前にデバッガーがアタッチされるのを待機することになります。false の場合、JVM はデバッガー接続をリッスンしながらメインクラスを直ちに実行します。
環境変数: | string |
|
デバッグソケットがリッスンするアドレスを指定します。
環境変数: | int |
|
true の場合、init タスクが生成されます。それ以外の場合、init タスクリソースの生成はスキップされます。
環境変数: | boolean |
|
init コンテナーが使用する init タスクイメージ。
環境変数: | string |
|
イメージプルポリシー
環境変数: |
|
|
true の場合、init タスクが生成されます。それ以外の場合、init タスクリソースの生成はスキップされます。
環境変数: | boolean |
|
init コンテナーが使用する init タスクイメージ。
環境変数: | string |
|
イメージプルポリシー
環境変数: |
|
|
true に設定すると、Quarkus はアプリケーションをターゲット Kubernetes クラスターにデプロイしようとします。
環境変数: | boolean |
|
デプロイが有効になっている場合は、このストラテジーに従って、ターゲットの Kubernetes クラスターのリソースを更新します。
環境変数: |
|
|
duration の値を書き込むには、標準の java.time.Duration
フォーマットを使用します。詳細は、Duration#parse() Java API ドキュメント を参照してください。
数字で始まる簡略化されたフォーマットも使用できます。
- 値が数値のみの場合は、秒単位の時間を表します。
-
数字の後に
ms
が続く値は、ミリ秒単位の時間を表します。
その他の場合は、解析のために簡略化されたフォーマットが java.time.Duration
フォーマットに変換されます。
-
数字の後に
h
、m
、またはs
が続く値には、接頭辞PT
が付きます。 -
数字の後に
d
が続く値は、接頭辞P
が付きます。
第2章 Red Hat build of Quarkus アプリケーションを OpenShift Container Platform に 1 ステップでデプロイする
アプリケーション開発者は、Red Hat build of Quarkus アプリケーションを 1 ステップでビルドし、OpenShift Container Platform にデプロイできます。次のいずれかのコマンドを実行します。
Quarkus CLI を使用:
quarkus build quarkus deploy openshift
Maven を使用:
./mvnw install -Dquarkus.openshift.deploy=true
Gradle を使用:
./gradlew build -Dquarkus.openshift.deploy=true
これらのコマンドを使用すると、アプリケーションをローカルでビルドし、コンテナーイメージのビルドをトリガーし、生成された OpenShift Container Platform リソースを自動的に適用できます。
生成されたリソースは Kubernetes デプロイメント
を使用しますが、Route
、BuildConfig
などの OpenShift 固有のリソースも引き続き使用します。
2.1. 前提条件
- OpenJDK 17 以降がインストールされています。
-
JAVA_HOME
環境変数を Java SDK の場所に設定している。 -
OpenShift Container Platform クラスター、およびインストールされている
oc
ツールの最新の互換バージョンにアクセスできる。 - 正しい OpenShift プロジェクト名前空間で作業しています。
このデプロイメントを実行するには、Red Hat build of Quarkus に quarkus-openshift
拡張機能を含める必要はありません。
2.2. 手順
- ビルドとデプロイを1つのステップでトリガーするためには次のようにします。
Quarkus CLI を使用:
quarkus build quarkus deploy openshift
Maven を使用:
./mvnw install -Dquarkus.openshift.deploy=true
Gradle を使用:
./gradlew build -Dquarkus.openshift.deploy=true
アプリケーションをすぐにテストする場合は、quarkus.openshift.route.expose
設定プロパティーを true
に設定して、サービスを自動的に公開します。
たとえば、上記のコマンドに -Dquarkus.openshift.route.expose=true を
追加します。詳細は、ルートの公開を 参照してください。
OpenShift Container Platform 4.14 以降、DeploymentConfig
オブジェクトは非推奨になりました。Deployment は、Quarkus OpenShift エクステンションのデフォルトおよび推奨されるデプロイメントの種類です。
この変更により、次の点に注意してください。
-
DeploymentConfig
を使用して以前にデプロイしたアプリケーションを再デプロイする場合、デフォルトでは、これらのアプリケーションはDeployment
を使用しますが、以前のDeploymentConfig
は削除されません。これにより、新しいアプリケーションと古い両方のアプリケーションがデプロイメントされるため、古いDeploymentConfig
を手動で削除する必要があります。ただし、引き続き DeploymentConfig を使用する場合は、quarkus.openshift.deployment-kind を DeploymentConfig に明示的に設定することで実行できます。 -
デプロイメントは
Kubernetes リソースであり、OpenShift 固有のものではないため、DeploymentConfig
の場合のようにImageStream
リソースを活用することはできません。したがって、イメージ参照には、イメージをホストするコンテナーイメージレジストリーを含める必要があります。
非推奨、自動ロールバック、トリガー、ライフサイクルフック、カスタムストラテジーの設定方法と使用方法の詳細は、Red Hat ナレッジベースの記事 DeploymentConfig API is being deprecated in Red Hat OpenShift Container Platform 4.14 を 参照してください。
2.3. 検証
OpenShift Container Platform Web コンソールを使用して、イメージストリームとサービスリソースが作成され、アプリケーションがデプロイされていることを確認します。
quarkus.container-image.group=<project/namespace name>
または、次の OpenShift Container Platform コマンドラインインターフェイス (CLI) コマンドを実行できます。
oc get is 1 oc get pods 2 oc get svc 3
次のコマンドを入力して、アプリケーションの Pod のログ出力を取得します。
oc logs -f <pod_name>
デフォルトでは、サービスは外部に公開されません。したがって、アプリケーションをビルドする前に
quarkus.openshift.route.expose=true
プロパティーを設定して、作成されたサービスを自動的に公開しなかった場合は、サービスを手動で公開できます。oc expose svc/openshift-quickstart 1 oc get routes 2 curl http://<route>/hello 3
2.4. 参考資料
第3章 Docker ビルドストラテジーを使用して、Red Hat build of Quarkus Java アプリケーションを OpenShift Container Platform にデプロイする
アプリケーション開発者は、デプロイメントオプションとして Docker ビルドストラテジーを使用して、アプリケーションを OpenShift Container Platform にデプロイできます。
このストラテジーは、OpenShift Container Platform クラスターの外 (ローカルまたは CI 環境) にアーティファクトをビルドし、それを Dockerfile と併せて OpenShift Container Platform ビルドシステムに提供します。アーティファクトには、JAR ファイルまたはネイティブ実行可能ファイルが含まれます。OpenShift Container Platform クラスターはコンテナーを構築し、それをイメージストリームとして提供します。
この機能は 、quarkus-openshift
拡張機能によって提供されます。カスタム Dockerfile を使用する場合は、そのファイルを src/main/docker
ディレクトリーまたはモジュール内の任意の場所に追加します。また、quarkus.openshift.jvm-dockerfile プロパティーを使用して Dockerfile へのパスを設定する必要があります。
3.1. 前提条件
- OpenJDK 17 または 21 がインストールされている。
-
JAVA_HOME
環境変数を Java SDK の場所に設定している。 - Apache Maven 3.8.6 以降がインストールされている。
-
quarkus-openshift
エクステンションが含まれる Quarkus Maven プロジェクトがある。 -
OpenShift Container Platform クラスター、およびインストールされている
oc
ツールの最新の互換バージョンにアクセスできる。 - 正しい OpenShift プロジェクト名前空間で作業しています。
3.2. 手順
application.properties
設定ファイルで Docker ビルドストラテジーを設定します。quarkus.openshift.build-strategy=docker
オプション: 環境に応じて、
application.properties
ファイルで次のプロパティーを設定します。信頼されていない証明書を使用している場合は、
KubernetesClient
の証明書信頼を有効にします。quarkus.kubernetes-client.trust-certs=true
サービスを公開し、OpenShift Container Platform ルートを作成するには、次のプロパティーを設定します。
quarkus.openshift.route.expose=true
事前に生成された Dockerfile の代わりにカスタム Dockerfile を使用するには、Dockerfile へのパスを設定します。
quarkus.openshift.jvm-dockerfile=<path_to_your_dockerfile>
たとえば、
Dockerfile.custom-jvm
という名前のカスタム Dockerfile を指定するには、次のようにします。quarkus.openshift.jvm-dockerfile=src/main/resources/Dockerfile.custom-jvm
アプリケーションをパッケージ化して、現在の OpenShift Container Platform プロジェクトにデプロイします。
./mvnw clean package -Dquarkus.openshift.deploy=true
3.3. 検証
次の検証手順では 、openshift-helloworld
サンプルアプリケーションを使用します。
現在の OpenShift プロジェクトに関連付けられている Pod のリストを表示します。
oc get pods
NAME READY STATUS RESTARTS AGE openshift-helloworld-1-build 0/1 Completed 0 11m openshift-helloworld-1-deploy 0/1 Completed 0 10m openshift-helloworld-1-gzzrx 1/1 Running 0 10m
アプリケーションの Pod のログ出力を取得するには、その名前とともに
oc logs -f
コマンドを使用します。次の例では、アプリケーションの名前が接頭辞として付いた最新の Pod に対応する、openshift-helloworld-1-gzzrx
Pod 名を使用しています。oc logs -f openshift-helloworld-1-gzzrx
Starting the Java application using /opt/jboss/container/java/run/run-java.sh ... INFO exec -a "java" java -Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager -XX:MaxRAMPercentage=50.0 -XX:+UseParallelGC -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:+ExitOnOutOfMemoryError -cp "." -jar /deployments/quarkus-run.jar __ ____ __ _____ ___ __ ____ ______ --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \ --\___\_\____/_/ |_/_/|_/_/|_|\____/___/ 2024-09-17 10:23:25,254 INFO [io.quarkus] (main) getting-started 1.0.0-SNAPSHOT on JVM (powered by Quarkus 3.20.0.redhat-00002) started in 0.653s. Listening on: http://0.0.0.0:8080 2024-09-17 10:23:25,281 INFO [io.quarkus] (main) Profile prod activated. 2024-09-17 10:23:25,281 INFO [io.quarkus] (main) Installed features: [cdi, kubernetes, rest, smallrye-context-propagation, vertx]
サービスのリストを取得します:
oc get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE openshift-helloworld ClusterIP 172.30.64.57 <none> 80/TCP 14m
アプリケーションをテストするための URL を取得します。これを行うには、アプリケーションをビルドする前に、
application.properties
ファイルでquarkus.openshift.route.expose=true
プロパティーを設定して、OpenShift Container Platform ルートを公開していることを確認します。oc get routes
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD openshift-helloworld openshift-helloworld-username-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com openshift-helloworld http None
注記ルートは現在ポート 80 でリッスンしており、ポート 8080 ではリッスンしていないことに注意してください。
このサンプルで示されているアプリケーションは、
curl
と、oc get routes
からの完全な URL 出力 ("\http://openshift-helloworld-username-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com") を使用して、Web ブラウザーまたはターミナルでテストできます。たとえば、
curl http://openshift-helloworld-username-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com
になります。
3.4. 参考資料
第4章 S2I を使用して Red Hat build of Quarkus アプリケーションを OpenShift Container Platform にデプロイする
Source-to-Image (S2I) メソッドを使用して、Red Hat build of Quarkus アプリケーションを OpenShift Container Platform にデプロイできます。S2I では、Git リポジトリーを使用するか、ビルド時にソースをアップロードして、ソースコードをビルドコンテナーに提供する必要があります。
デプロイメント手順は、Red Hat build of Quarkus アプリケーションで使用される Java バージョンによって異なります。
4.1. Java 17 で Red Hat build of Quarkus アプリケーションを OpenShift Container Platform にデプロイする
S2I 方式を使用して、Java 17 を実行する Red Hat build of Quarkus アプリケーションを OpenShift Container Platform にデプロイできます。
4.1.1. 前提条件
- Java 17 でビルドされた Quarkus アプリケーションがある。
-
オプション:
quarkus-openshift
エクステンションが含まれる Quarkus Maven プロジェクトがある。 - 正しい OpenShift プロジェクト名前空間で作業しています。
- プロジェクトは Git リポジトリーでホストされます。
4.1.2. 手順
pom.xml
ファイルを開き、Java バージョンを 17 に設定します。<maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target>
次のコマンドを入力して、Java 17 アプリケーションをパッケージ化します。
./mvnw clean package
-
pom.xml
ファイルと同じレベルに、.s2i
という名前のディレクトリーを作成します。 .s2i
ディレクトリーにenvironment
という名前のファイルを作成し、以下の内容を追加します。MAVEN_S2I_ARTIFACT_DIRS=target/quarkus-app S2I_SOURCE_DEPLOYMENTS_FILTER=app lib quarkus quarkus-run.jar JAVA_OPTIONS=-Dquarkus.http.host=0.0.0.0 AB_JOLOKIA_OFF=true JAVA_APP_JAR=/deployments/quarkus-run.jar
- 変更をリモート Git リポジトリーにコミットし、プッシュします。
次のコマンドを入力して、サポートされている OpenShift Container Platform イメージをインポートします。
oc import-image ubi9/openjdk-17 --from=registry.access.redhat.com/ubi9/openjdk-17 --confirm
注記- OpenShift イメージレジストリーを使用し、同じプロジェクト内のイメージストリームからプルしている場合は、Pod サービスアカウントにすでに正しい権限が付与されているはずです。
- 他の OpenShift Container Platform プロジェクトまたは保護されたレジストリーからイメージをプルする場合は、追加の設定手順が必要になることもあります。
詳細は、Red Hat OpenShift Container Platform の ドキュメントを参照してください。
プロジェクトをビルドし、アプリケーションを作成し、OpenShift Container Platform サービスをデプロイします。
oc new-app registry.access.redhat.com/ubi9/openjdk-17~<git_path> --name=<project_name>
<git_path> を
、Quarkus プロジェクトをホストする Git リポジトリーのパスに置き換えます。たとえば、oc new-app registry.access.redhat.com/ubi8/openjdk-21~https://github.com/johndoe/code-with-quarkus.git --name=code-with-quarkus です。Git リポジトリー用に SSH キーを設定していない場合は、Git パスを指定する際に、SSH URL の代わりに HTTPS URL を使用します。
-
<project_name> を
アプリケーションの名前に置き換えます。
プロジェクトの更新バージョンをデプロイするには、変更を Git リポジトリーにプッシュしてから、次のコマンドを実行します。
oc start-build <project_name>
アプリケーションにルートを公開するには、次のコマンドを実行します。
oc expose svc <project_name>
4.1.3. 検証
現在の OpenShift Container Platform プロジェクトに関連付けられている Pod をリスト表示します。
oc get pods
アプリケーションの Pod のログ出力を取得するには、次のコマンドを実行し、
<pod_name> を
アプリケーション名の前に付けた最新の Pod の名前に置き換えます。oc logs -f <pod_name>
4.2. Java 21 を使用した OpenShift Container Platform への Red Hat build of Quarkus アプリケーションのデプロイ
S2I 方式を使用して、Java 21 を実行する Red Hat build of Quarkus アプリケーションを OpenShift Container Platform にデプロイできます。
4.2.1. 前提条件
-
オプション:
quarkus-openshift
エクステンションが含まれる Quarkus Maven プロジェクトがある。 - 正しい OpenShift Container Platform プロジェクト名前空間で作業しています。
- プロジェクトは Git リポジトリーでホストされます。
4.2.2. 手順
pom.xml
ファイルを開き、Java バージョンを 21 に設定します。<maven.compiler.source>21</maven.compiler.source> <maven.compiler.target>21</maven.compiler.target>
次のコマンドを入力して、Java 21 アプリケーションをパッケージ化します。
./mvnw clean package
-
pom.xml
ファイルと同じレベルに、.s2i
という名前のディレクトリーを作成します。 .s2i
ディレクトリーにenvironment
という名前のファイルを作成し、以下の内容を追加します。MAVEN_S2I_ARTIFACT_DIRS=target/quarkus-app S2I_SOURCE_DEPLOYMENTS_FILTER=app lib quarkus quarkus-run.jar JAVA_OPTIONS=-Dquarkus.http.host=0.0.0.0 AB_JOLOKIA_OFF=true JAVA_APP_JAR=/deployments/quarkus-run.jar
- 変更をリモート Git リポジトリーにコミットし、プッシュします。
次のコマンドを入力して、サポートされている OpenShift Container Platform イメージをインポートします。
oc import-image ubi9/openjdk-21 --from=registry.access.redhat.com/ubi9/openjdk-21 --confirm
注記- OpenShift イメージレジストリーを使用し、同じプロジェクト内のイメージストリームからプルしている場合は、Pod サービスアカウントにすでに正しい権限が付与されているはずです。
- 他の OpenShift Container Platform プロジェクトまたは保護されたレジストリーからイメージをプルする場合は、追加の設定手順が必要になることもあります。詳細は、Red Hat OpenShift Container Platform の ドキュメントを参照してください。
-
IBM Z インフラストラクチャーにデプロイする場合は、代わりに
oc import-image ubi8/openjdk-21 --from=registry.redhat.io/ubi8/openjdk-21 --confirm
を入力します。このイメージの詳細は、Red Hat build of OpenJDK 21 を参照してください。
プロジェクトをビルドし、アプリケーションを作成し、OpenShift Container Platform サービスをデプロイします。
oc new-app registry.access.redhat.com/ubi9/openjdk-21~<git_path> --name=<project_name>
<git_path> を
、Quarkus プロジェクトをホストする Git リポジトリーのパスに置き換えます。たとえば、oc new-app registry.access.redhat.com/ubi8/openjdk-21~https://github.com/johndoe/code-with-quarkus.git --name=code-with-quarkus です。Git リポジトリー用に SSH キーを設定していない場合は、Git パスを指定する際に、SSH URL の代わりに HTTPS URL を使用します。
<project_name> を
アプリケーションの名前に置き換えます。注記IBM Z インフラストラクチャー上にデプロイする場合は、代わりに
oc new-app ubi8/openjdk-21~<git_path> --name=<project_name>
と入力します。
プロジェクトの更新バージョンをデプロイするには、変更を Git リポジトリーにプッシュしてから、次のコマンドを実行します。
oc start-build <project_name>
アプリケーションにルートを公開するには、次のコマンドを実行します。
oc expose svc <project_name>
4.2.3. 検証
現在の OpenShift Container Platform プロジェクトに関連付けられている Pod をリスト表示します。
oc get pods
アプリケーションの Pod のログ出力を取得するには、次のコマンドを実行し、
<pod_name> を
アプリケーション名の前に付けた最新の Pod の名前に置き換えます。oc logs -f <pod_name>
4.3. 参考資料
第5章 ネイティブ実行可能ファイルにコンパイルされた Red Hat build of Quarkus アプリケーションをデプロイする
Docker ビルドストラテジーを使用して、ネイティブ実行可能ファイルにコンパイルされたネイティブ Red Hat build of Quarkus アプリケーションを OpenShift Container Platform にデプロイできます。
サポートされているオペレーティングシステムを対象とし、アーキテクチャーに一致するアプリケーションのネイティブ実行可能ファイルを作成する必要があります。つまり、Windows 上でビルドする場合は、Docker や Podman などのコンテナーランタイムを使用してネイティブ Linux 実行可能ファイルを作成します。
Quarkus プロジェクトには、事前に生成された Dockerfile と手順が含まれています。カスタム Dockerfile を使用する場合は、そのファイルを src/main/docker
ディレクトリーまたはモジュール内の任意の場所に追加します。さらに、複数の Docker ファイルを用意してそれらを切り替える場合は、quarkus.openshift.native-dockerfile
プロパティーを使用して、優先する Dockerfile へのパスを設定します。
このガイドでは、Maven を使用した Quarkus プロジェクトをサンプルプロジェクトとして使用して、このストラテジーについて説明します。
5.1. 前提条件
- サポートされているオペレーティングシステム、または Podman や Docker などの Open Container Initiative (OCI) 互換のコンテナーランタイム。
-
quarkus-openshift
エクステンションが含まれる Quarkus Maven プロジェクトがある。 -
OpenShift Container Platform クラスター、およびインストールされている
oc
ツールの最新の互換バージョンにアクセスできる。 - 正しい OpenShift プロジェクト名前空間で作業しています。
5.2. 手順
application.properties
設定ファイルで Docker ビルドストラテジーを設定します。quarkus.openshift.build-strategy=docker
コンテナーベースのネイティブビルドを有効にします。
quarkus.native.container-build=true
オプション: 環境に応じて、
application.properties
ファイルで次のプロパティーを設定します。信頼されていない証明書を使用している場合は、
KubernetesClient
の証明書信頼を有効にします。quarkus.kubernetes-client.trust-certs=true
サービスを公開し、OpenShift Container Platform ルートを作成するには、次のプロパティーを設定します。
quarkus.openshift.route.expose=true
事前に生成された Dockerfile の代わりにカスタム Dockerfile を使用するには、カスタム Dockerfile へのパスを設定します。
quarkus.openshift.native-dockerfile=<path_to_your_dockerfile>
たとえば、
Dockerfile.custom-native
という名前のカスタム Dockerfile を指定するには、次のようにします。quarkus.openshift.native-dockerfile=src/main/docker/Dockerfile.custom-native
コンテナーエンジンを指定します。
Podman を使用してネイティブ実行可能ファイルをビルドします。
quarkus.native.container-runtime=podman
Docker を使用してネイティブ実行可能ファイルをビルドします。
quarkus.native.container-runtime=docker
最後に、ネイティブ実行可能ファイルをビルドしてパッケージ化し、アプリケーションを OpenShift Container Platform にデプロイします。
./mvnw clean package -Pnative -Dquarkus.openshift.deploy=true
5.3. 検証
イメージストリームとサービスリソースが作成され、アプリケーションがデプロイされていることを確認します。OpenShift Container Platform Web コンソールまたは次の OpenShift Container Platform コマンドラインインターフェイス (CLI) コマンドを使用します。
oc get is 1 oc get pods 2 oc get svc 3
アプリケーションの Pod のログ出力を取得するには、以下のコマンドを入力します。
<pod_name>
は、お使いのアプリケーションの名前の接頭辞が付いた最新の Pod の名前になります。oc logs -f <pod_name>