작업 업데이트

콘솔 또는 CLI에서 정의된 작업을 변경하고 업데이트된 작업을 실행할 수 있습니다. 작업의 변경사항에는 코드 컨테이너 이미지, 코드 인수 또는 명령, 런타임 인스턴스 리소스 또는 환경 변수의 업데이트가 포함될 수 있습니다.

작업이 실행될 때마다 이미지에 대해 태그를 지정하지 않는 한 참조된 컨테이너 이미지의 최신 버전이 작업 실행에 사용됩니다. 이미지에 대해 태그를 지정한 경우 태그 지정된 이미지가 작업 실행에 사용됩니다.

제출된 일괄처리 작업은 가능한 경우 병렬로 실행됩니다. 제출된 작업의 수 또는 크기가 구성된 할당량 한계(예: 실행 중인 인스턴스의 최대 수)를 초과하는 경우 Code Engine은(는) 작업을 큐에 대기시키고 충분한 작업이 완료될 때까지 실행을 연기합니다. 메모리와 CPU를 포함한 작업의 할당량 및 한계에 대한 자세한 정보는 Code Engine의 한계 및 할당량을 참조하십시오.

작업 작성 방식이나 이전의 업데이트 방식에 관계없이 다음 방법 중 하나작업을 업데이트하고 참조 코드를 업데이트할 수 있습니다.

  • Open Container Initiative(OCI)표준에 따라 컨테이너 이미지가 있는 경우, 작업을 생성(또는 업데이트)할 때 해당 이미지의 위치로 연결되는 컨테이너 레지스트리 경로를 참조로만 제공하면 됩니다. 공개 레지스트리나 비공개 레지스트리에 있는 이미지를 사용하여 작업을 생성(또는 업데이트)한 다음, 작업 실행 시 참조된 이미지에 액세스할 수 있습니다.

    job create 명령을 사용하여 작업을 작성하고 로컬 또는 저장소 소스에서 컨테이너 이미지를 빌드하도록 --build-source 옵션을 지정했으며 다른 컨테이너 이미지를 가리키도록 작업을 변경하려는 경우 먼저 작업에서 빌드의 연관을 제거해야 합니다. 예를 들어, ibmcloud ce job update -n JOB_NAME --build-clear 를 실행하십시오. 작업에서 빌드의 연관을 제거한 후 다른 이미지를 참조하도록 작업을 업데이트할 수 있습니다.

  • Git 저장소에 있는 소스 코드로 시작하는 경우, Code Engine에서 한 번의 오퍼레이션으로 소스에서 이미지를 빌드하고 작업을 작성하거나 업데이트하도록 선택할 수 있습니다. 이 경우 Code Engine은 이미지를 IBM Cloud® Container Registry에 업로드합니다. 자세한 정보는 저장소 소스 코드에서 작업 작성을 참조하십시오. 이미지 빌드를 더 많이 제어하려면 작업을 작성 또는 업데이트하고 작업을 실행하기 전에 Code Engine을 사용하여 이미지를 빌드하도록 선택할 수 있습니다.

  • 로컬 워크스테이션에 있는 소스 코드로 시작하는 경우, Code Engine에서 하나의 CLI 명령으로 소스에서 이미지를 빌드하고 작업을 작성하도록 선택할 수 있습니다. 이 경우 Code Engine은 이미지를 IBM Cloud® Container Registry에 업로드합니다. 자세한 정보는 CLI를 사용하여 로컬 소스 코드에서 작업 작성을 참조하십시오. 이미지 빌드를 더 많이 제어하려면 작업을 작성 또는 업데이트하고 작업을 실행하기 전에 Code Engine을 사용하여 이미지를 빌드하도록 선택할 수 있습니다.

예를 들어, 사용자가 작업에 대한 소스 개발을 진행하는 동안 Code Engine에서 로컬 소스의 빌드를 처리하도록 선택할 수 있습니다. 그런 다음 이미지가 만기되면 원하는 특정 이미지를 참조하도록 작업을 업데이트할 수 있습니다. 이 프로세스는 필요에 따라 반복할 수 있습니다.

업데이트된 작업을 실행할 때 이미지에 대해 태그를 지정하지 않는 한 참조된 컨테이너 이미지의 최신 버전이 작업 실행에 사용됩니다. 이미지에 대해 태그를 지정한 경우 태그 지정된 이미지가 작업 실행에 사용됩니다.

콘솔에서 작업 업데이트

작업이 준비 상태가 되면 작업을 업데이트할 수 있습니다. 이전에 만든 myjob 작업을 업데이트하여 환경 변수를 업데이트하여 인사말과 환경 변수 출력을 변경해 보겠습니다. 이 icr.io/codeengine/helloworld 샘플 작업에 요청이 전송되면, 해당 작업은 환경 변수 TARGET 를 읽어들이고 "Hello ${TARGET}!" 를 출력합니다. 이 환경 변수가 비어 있으면 "Hello World!"가 리턴됩니다. 이 예제에 사용된 코드에 대한 자세한 내용은 helloworld.

  1. 작업 페이지로 이동하십시오.

    1. Code Engine 의 ‘프로젝트’ 페이지에서 해당 프로젝트의 이름을 클릭하세요.
    2. ‘작업’을 클릭한 다음 ‘작업 ’ 탭을 클릭합니다.
    3. 업데이트하려는 작업의 이름을 클릭하세요.
  2. 구성 > 환경 변수 탭에서 환경 변수 추가를 클릭합니다. TARGET 값과 함께 Sunshine 이름으로 리터럴 환경 변수를 추가하십시오. icr.io/codeengine/helloworldHello <value_of_TARGET>!> 메시지를 출력합니다.

  3. ‘추가’를 클릭하여 환경 변수를 추가하세요.

  4. 배치를 클릭하십시오.

  5. 작업 제출을 클릭하십시오.

  6. 이번에는 작업 제출 분할창에서 CPU 값을 지정된 메모리에 적합한 CPU 선택사항 중 하나로 변경하십시오. 올바른 메모리 및 CPU 조합을 사용해야 합니다. 이 작업을 실행하려면 작업 제출을 다시 클릭하십시오. 시스템의 작업 세부사항 페이지에는 작업 상태가 표시됩니다. 작업 세부사항의 Configuration 섹션에 있는 업데이트된 CPU 값에 유의하십시오.

  7. 이 작업에 대해 콘솔에서 작업 로그를 보면, 업데이트된 작업의 출력은 Hello Sunshine!입니다.

CLI를 사용하여 작업 업데이트

CLI를 사용하여 기존 작업 구성을 업데이트하거나 새 작업 실행에 대한 변경사항을 지정할 수 있습니다.

CLI를 사용하여 작업 구성 업데이트

ibmcloud ce job update 명령을 사용하여 기존 작업 구성을 업데이트할 수 있습니다.

  1. job update 명령을 사용하여 다른 이미지를 참조하도록 myjob 작업을 업데이트하십시오.

    ibmcloud ce job update --name myjob --image icr.io/codeengine/testjob
    

    ibmcloud ce job get -n myjob 명령을 실행하여 업데이트된 작업의 세부사항을 표시하십시오.

    출력 예

    Name:          myjob
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           3m6s
    Created:       2021-06-04T11:56:22-04:00
    Last Job Run:
        Name:     myjob-jobrun-abcde
        Age:      32d
        Created:  2021-08-06T13:50:02-04:00
    Image:                icr.io/codeengine/testjob
    Resource Allocation:
        CPU:     1
        Memory:  4G
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        Max Execution Time:    7200
        Retry Limit:           3
    [...]
    
  2. ibmcloud ce jobrun submit 명령을 실행하여 이 업데이트된 작업 구성을 참조하는 작업을 실행하십시오. jobrun submit 명령의 경우 --job 옵션을 사용하여 정의된 작업 구성을 참조하십시오. --name 옵션은 --job 옵션이 지정된 경우에는 필요하지 않지만, 다음 명령 예에서는 이 작업 실행의 이름을 제공하도록 --name 옵션을 지정합니다.

    ibmcloud ce jobrun submit --name myjobrun1 --job myjob
    
  3. **ibmcloud ce jobrun get -n myjobrun1**을 실행하여 이 작업 실행의 세부사항을 확인하십시오. 참조된 이미지는 업데이트된 작업 구성을 기반으로 하는 icr.io/codeengine/testjob입니다.

    출력 예

    Getting jobrun 'myjobrun1'...
    Getting instances of jobrun 'myjobrun1'...
    Getting events of jobrun 'myjobrun1'...
    [...]
    Name:          myjobrun1
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           3m6s
    Created:       2021-06-15T11:56:22-04:00
    Job Ref:              myjob
    Image:                icr.io/codeengine/testjob
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  4G
        Memory:             4G
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        JOP_ARRAY_SIZE Value:  1
        Max Execution Time:    7200
        Retry Limit:           3
    Status:
        Completed:          11s
        Instance Statuses:
            Succeeded:  1
        Conditions:
            Type      Status  Last Probe  Last Transition
        Pending   True    15s         15s
        Running   True    11s         11s
        Complete  True    11s         11s
    Events:
        Type    Reason     Age                Source                Messages
        Normal  Updated    16s (x3 over 20s)  batch-job-controller  Updated JobRun "myjobrun1"
        Normal  Completed  16s                batch-job-controller  JobRun completed successfully
    Instances:
        Name           Running  Status     Restarts  Age
        myjobrun1-0-0  0/1      Succeeded  0         20s
    

CLI를 사용하여 작업 실행 업데이트

ibmcloud ce jobrun resubmit 명령을 사용하여 작업 실행에 대한 변경사항을 지정할 수 있습니다. jobrun submit 명령은 이전 작업 실행을 참조하는 작업 실행을 다시 제출합니다.

  1. jobrun resubmit 명령을 사용하여 myjobrun1 작업 실행을 다시 제출하고 배열 인덱스를 0에서 1-4로 변경하십시오. --name 옵션은 jobrun resubmit 명령에 필요하지 않지만, 다음 명령 예에서는 이 작업 실행의 이름을 제공하도록 --name 옵션을 지정합니다.

    ibmcloud ce jobrun resubmit -jobrun myjobrun1 --array-indices "1-4" --name myjobrunresubmit
    
  2. ibmcloud ce jobrun get -n myjobrunresubmit 명령을 실행하여 업데이트된 작업 실행의 세부사항을 표시하십시오. 배열 인덱스의 값은 이 작업 실행에 대해 업데이트됩니다.

    출력 예

    Getting jobrun 'myjobrunresubmit'...
    Getting instances of jobrun 'myjobrunresubmit'...
    Getting events of jobrun 'myjobrunresubmit'...
    [...]
    Name:          myjobrunresubmit2
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           3m6s
    Created:       2021-06-04T11:56:22-04:00
    Job Ref:              myjob
    Image:                icr.io/codeengine/testjob
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  4G
        Memory:             4G
    Runtime:
        Mode:                  task
        Array Indices:         1-4
        Array Size:            4
        JOP_ARRAY_SIZE Value:  4
        Max Execution Time:    7200
        Retry Limit:           3
    Status:
        Completed:          34s
        Instance Statuses:
            Succeeded:  4
        Conditions:
            Type      Status  Last Probe  Last Transition
        Pending   True    38s         38s
        Running   True    36s         36s
        Complete  True    34s         34s
    Events:
        Type    Reason     Age                Source                Messages
        Normal  Updated    36s (x7 over 40s)  batch-job-controller  Updated JobRun "myjobrunresubmit"
        Normal  Completed  36s                batch-job-controller  JobRun completed successfully
    Instances:
        Name                  Running  Status     Restarts  Age
        myjobrunresubmit-1-0  0/1      Succeeded  0         40s
        myjobrunresubmit-2-0  0/1      Succeeded  0         40s
        myjobrunresubmit-3-0  0/1      Succeeded  0         40s
        myjobrunresubmit-4-0  0/1      Succeeded  0         40s
    

정의된 작업 구성을 참조하지 않는 CLI를 사용하여 제출된(또는 다시 제출된) 작업 실행은 콘솔에서 볼 수 없습니다.