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