有効期間が短いワークフローは、Kf でタスクとして実行できます。タスクはアプリで実行されます。つまり、各タスクにはアプリを関連付ける必要があります。各タスクの実行では、親アプリのビルド アーティファクトが使用されます。タスクは有効期間が短いため、アプリは長時間実行アプリケーションとしてデプロイされません。アプリやタスク用のルートも作成されません。
タスクを実行するアプリを push する
test-app リポジトリのクローンを作成します。
git clone https://github.com/cloudfoundry-samples/test-app test-appcd test-appアプリを push します。
kf push APP_NAME --taskコマンドを使用してアプリを push します。--taskフラグは、アプリがタスクの実行に使用されることを想定しています。そのため、アプリにルートは作成されず、またアプリは長時間実行されるものとしてデプロイされません。kf push test-app --taskアプリの一覧を表示して、アプリ インスタンスまたはルートが作成されていないことを確認します。
kf appsアプリが起動しておらず、URL がないことを確認します。
Listing Apps in Space: test-space Name Instances Memory Disk CPU URLs test-app stopped 1Gi 1Gi 100m <nil>
アプリでタスクを実行する
アプリでタスクを実行する際、--command フラグを使用して起動コマンドを指定することもできます。起動コマンドが指定されていない場合は、アプリで指定された起動コマンドが使用されます。アプリで起動コマンドが指定されていない場合は、コンテナ イメージの CMD 構成が検索されます。タスクを正常に実行するには、起動コマンドが必要です。
kf run-task test-app --command "printenv"次のようなタスクが送信されていることを確認します。
Task test-app-gd8dv is submitted successfully for execution.
タスク名が自動的に生成されます。先頭にアプリ名、末尾に任意の文字列が付いています。タスク名は、同じクラスタ内のタスクを識別する固有識別子です。
タスクのリソース制限を指定する
リソース制限(CPU コア / メモリ上限 / ディスクの割り当てなど)は、アプリ(kf push 内)または kf run-task コマンド内で指定できます。kf run-task コマンドで指定した制限は、アプリで指定された制限よりも優先されます。
アプリでリソース制限を指定するには、kf push コマンドで --cpu-cores、--memory-limit、--disk-quota フラグを使用します。
kf push test-app --command "printenv" --cpu-cores=0.5 --memory-limit=2G --disk-quota=5G --taskアプリでこれらの制限をオーバーライドするには、kf run-task コマンドで --cpu-cores、--memory-limit、--disk-quota フラグを使用します。
kf run-task test-app --command "printenv" --cpu-cores=0.5 --memory-limit=2G --disk-quota=5Gタスクのカスタム表示名を指定する
必要に応じて --name フラグを使用してタスクのカスタム表示名を指定すると、識別やグループ化が容易になります。
$ kf run-task test-app --command "printenv" --name foo
Task test-app-6swct is submitted successfully for execution.
$ kf tasks test-app
Listing Tasks in Space: test space
Name ID DisplayName Age Duration Succeeded Reason
test-app-6swct 3 foo 1m 21s True <nil>
タスクを管理する
kf tasks APP_NAME コマンドを使用して、アプリのすべてのタスクを表示します。
$ kf tasks test-app
Listing Tasks in Space: test space
Name ID DisplayName Age Duration Succeeded Reason
test-app-gd8dv 1 test-app-gd8dv 1m 21s True <nil>
タスクをキャンセルする
kf terminate-task コマンドを使用して、アクティブなタスクをキャンセルします。
タスク名を指定してタスクをキャンセルします。
$ kf terminate-task test-app-6w6mz Task "test-app-6w6mz" is successfully submitted for terminationまたは、
APP_NAMEとタスク ID を指定してタスクをキャンセルします。$ kf terminate-task test-app 2 Task "test-app-6w6mz" is successfully submitted for termination
キャンセルされたタスクのステータスは PipelineRunCancelled になります。
$ kf tasks test-app
Listing Tasks in Space: test space
Name ID DisplayName Age Duration Succeeded Reason
test-app-gd8dv 1 test-app-gd8dv 1m 21s True <nil>
test-app-6w6mz 2 test-app-6w6mz 38s 11s False PipelineRunCancelled
タスクログを表示する
タスクのログを表示するには、kf logs APP_NAME --task コマンドを使用します。
$ kf logs test-app --task