1

Cloud Foundry 環境で spring-cloud-task を使用して短期間のジョブを実行することを調査しています。

ドキュメントといくつかの YouTube ビデオを調べたところ、セットアップには 3 つのコンポーネント (アプリケーション) が必要であることがわかりました。

  • タスクリクエスター: TaskLaunchRequestspring-cloud-stream Rabbit/Kafka キュー/トピックに配置する spring-boot アプリ
  • タスク ランチャー: と の注釈が付けられた spring-boot アプリで@EnableTaskLauncher、次の依存関係があります: spring-cloud-starter-taskspring-cloud-starter-stream-rabbitspring-cloud-deployer-cloudfoundryspring-cloud-deployer-resource-maven
  • タスク定義: で注釈が付け@EnableTaskられ、短期間のジョブによって実行されるロジックを持つスプリング ブート アプリ

このセットアップを使用して CloudFoundry にタスクをデプロイするために必要なプロセスと構成について、いくつか質問があります。

  1. と(タスク サブミッターで) を構成することとenvironmentProperties(タスク ランチャーで) を構成することの違いは何ですか? また、どこで定義する必要があり、正確には何をしますか?deploymentPropertiesapplicationNameTaskLaunchRequestCloudFoundryDeploymentPropertiesSPRING_APPLICATION_JSON
  2. spring-cloud-task で見たすべての例では、maven://スキームを使用してTaskLaunchRequest#uri. spring-cloud-deployer-cloudfoundry依存関係が依存関係にバンドルされていないのはなぜspring-cloud-deployer-resource-mavenですか? CloudFoundry にデプロイするときに優先される別の URI スキームはありますか?
  3. インスタンス= 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 アプリケーションが必要ですか?
  4. cf-pushCloud 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 staging and 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:現時点ではアーキテクチャに導入したくありません。

4

1 に答える 1