有効期間が短いワークフローは、Kf でタスクとして実行できます。タスクはアプリで実行されます。つまり、各タスクにはアプリを関連付ける必要があります。各タスクの実行では、親アプリのビルド アーティファクトが使用されます。タスクは有効期間が短いため、アプリは長時間実行アプリケーションとしてデプロイされず、アプリやタスク用のルートは作成されません。
タスクを実行するアプリを push する
test-app リポジトリのクローンを作成します。
git clone https://github.com/cloudfoundry-samples/test-app test-app
cd 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