태스크 실행

Kf에서 단기 워크플로를 태스크로 실행하여 이 워크플로를 실행할 수 있습니다. 태스크는 앱 아래에서 실행됩니다. 즉, 각 태스크에 연결된 앱이 있어야 합니다. 각 태스크 실행은 상위 앱의 빌드 아티팩트를 사용합니다. 태스크는 단기 실행이므로 앱은 장기 실행 애플리케이션으로 배포되지 않으며 앱이나 태스크에 대한 경로가 생성되면 안 됩니다.

태스크 실행을 위한 앱 푸시

  1. test-app repo 저장소를 클론합니다.

    git clone https://github.com/cloudfoundry-samples/test-app test-app
    cd test-app
  2. 앱을 푸시합니다.

    kf push APP_NAME --task 명령어로 앱을 푸시합니다. --task 플래그는 앱에서 태스크를 실행하는 데 사용되므로 앱에 경로가 생성되지 않으며 앱이 장기 실행 애플리케이션으로 배포되지 않는다는 점을 나타냅니다.

    kf push test-app --task
  3. 앱을 나열하여 앱 인스턴스나 경로가 생성되지 않았는지 확인합니다.

    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