Cloud Foundry 環境で spring-cloud-task を使用して短期間のジョブを実行することを調査しています。
ドキュメントといくつかの YouTube ビデオを調べたところ、セットアップには 3 つのコンポーネント (アプリケーション) が必要であることがわかりました。
- タスクリクエスター:
TaskLaunchRequest
spring-cloud-stream Rabbit/Kafka キュー/トピックに配置する spring-boot アプリ - タスク ランチャー: と の注釈が付けられた spring-boot アプリで
@EnableTaskLauncher
、次の依存関係があります:spring-cloud-starter-task
、spring-cloud-starter-stream-rabbit
、spring-cloud-deployer-cloudfoundry
、spring-cloud-deployer-resource-maven
- タスク定義: で注釈が付け
@EnableTask
られ、短期間のジョブによって実行されるロジックを持つスプリング ブート アプリ
このセットアップを使用して CloudFoundry にタスクをデプロイするために必要なプロセスと構成について、いくつか質問があります。
- と(タスク サブミッターで) を構成することと
environmentProperties
(タスク ランチャーで) を構成することの違いは何ですか? また、どこで定義する必要があり、正確には何をしますか?deploymentProperties
applicationName
TaskLaunchRequest
CloudFoundryDeploymentProperties
SPRING_APPLICATION_JSON
- spring-cloud-task で見たすべての例では、
maven://
スキームを使用してTaskLaunchRequest#uri
.spring-cloud-deployer-cloudfoundry
依存関係が依存関係にバンドルされていないのはなぜspring-cloud-deployer-resource-maven
ですか? CloudFoundry にデプロイするときに優先される別の URI スキームはありますか? - インスタンス= 0でCloud FoundryにbootJarタスクを実行すると
cf-push
、タスクランチャーがタスクを起動すると、すべて正常に動作します。この場合の唯一の問題は、新しいバージョンの SNAPSHOT bootJar をリモート リポジトリに公開する場合でも、cf-push
代わりに の元の bootJar が使用されることです ( を設定している場合でもmaven.remote-repositories.my-repo.snapshot-policy.update-policy: always
)。spring-cloud-task によって動的に実行しようとしているアプリケーションに対して Cloud Foundry アプリケーションが既に定義されている場合、maven アーティファクトは実際には考慮されませんか? つまり、maven アーティファクトのすべての新しいバージョン (SNAPSHOT または RELEASE) には、新しい Cloud Foundry アプリケーションが必要ですか? cf-push
Cloud Foundry へのタスク bootJar を実行せず、タスク アプリケーションを事前に作成しない場合、タスク ランチャーが指定した Maven アーティファクトを使用して Cloud Foundry でアプリケーションを作成することを期待します (spring.cloud.deployer.cloudfoundry.push-task-apps-enabled: true). When I attempt this, then I get an error in the launcher indicating
アプリケーション [... ] failed during stagingand this error stems from the following:
org.cloudfoundry.operations.applications.DefaultApplications.pushManifest(DefaultApplications.java:431)`. タスク ランチャーが Cloud Foundry でアプリケーションを正常に作成したが、ステージングに失敗したことがわかります。ステージングに失敗したタスク アプリケーションのログは次のとおりです。
2020-09-25T14:05:43.69-0400 [API/2] OUT Uploading bits for app with guid d598b251-4827-4c55-9e56-1d0c8301b5c3
2020-09-25T14:05:59.66-0400 [API/0] OUT Updated app with guid d598b251-4827-4c55-9e56-1d0c8301b5c3 ({"state"=>"STOPPED"})
2020-09-25T14:06:00.26-0400 [API/0] OUT Creating build for app with guid d598b251-4827-4c55-9e56-1d0c8301b5c3
2020-09-25T14:06:00.61-0400 [API/0] OUT Updated app with guid d598b251-4827-4c55-9e56-1d0c8301b5c3 ({"state"=>"STARTED"})
2020-09-25T14:06:01.00-0400 [STG/0] OUT Cell 884d3852-1063-452a-8e94-c11ea9307c4a creating container for instance cc9b7101-2fc4-4c56-9f86-019736eb6b71
2020-09-25T14:06:01.79-0400 [STG/0] OUT Cell 884d3852-1063-452a-8e94-c11ea9307c4a successfully created container for instance cc9b7101-2fc4-4c56-9f86-019736eb6b71
2020-09-25T14:06:01.95-0400 [STG/0] OUT Downloading app package...
2020-09-25T14:06:02.37-0400 [STG/0] OUT Downloaded app package (12.4M)
2020-09-25T14:06:04.08-0400 [STG/0] OUT -----> Java Buildpack v4.29.1 | https://github.com/cloudfoundry/java-buildpack.git#3dbe582
2020-09-25T14:06:04.08-0400 [STG/0] ERR [Buildpack] ERROR Finalize failed with exception #<RuntimeError: No container can run this application. Please ensure that you've pushed a valid JVM artifact or artifacts using the -p command line argument or path manifest entry. Information about valid JVM artifacts can be found at https://github.com/cloudfoundry/java-buildpack#additional-documentation. >
2020-09-25T14:06:04.08-0400 [STG/0] ERR No container can run this application. Please ensure that you've pushed a valid JVM artifact or artifacts using the -p command line argument or path manifest entry. Information about valid JVM artifacts can be found at https://github.com/cloudfoundry/java-buildpack#additional-documentation.
2020-09-25T14:06:04.08-0400 [STG/0] ERR Failed to compile droplet: Failed to run finalize script: exit status 1
2020-09-25T14:06:04.11-0400 [STG/0] OUT Exit status 223
2020-09-25T14:06:04.52-0400 [STG/0] OUT Cell 884d3852-1063-452a-8e94-c11ea9307c4a stopping instance cc9b7101-2fc4-4c56-9f86-019736eb6b71
2020-09-25T14:06:04.52-0400 [STG/0] OUT Cell 884d3852-1063-452a-8e94-c11ea9307c4a destroying container for instance cc9b7101-2fc4-4c56-9f86-019736eb6b71
2020-09-25T14:06:04.61-0400 [API/4] ERR Failed to stage build: staging failed
2020-09-25T14:06:05.15-0400 [STG/0] OUT Cell 884d3852-1063-452a-8e94-c11ea9307c4a successfully destroyed container for instance cc9b7101-2fc4-4c56-9f86-019736eb6b71
ログに記載されている内容に従って、maven アーティファクトが実際には 15.1MB の有効な bootJar であることを確認しましたが、ログにはアプリ パッケージが「12.4M」しかないことが示されています。ビルドパックのバージョン (4.29.1) も、spring.cloud.deployer.cloudfoundry.buildpacks
プロパティで示したバージョンではありません。ビルドパックの構成が正しく設定されていないことが問題の可能性があると思いますが、よくわかりません。
注spring-cloud-dataflow
:現時点ではアーキテクチャに導入したくありません。