앱 업데이트

앱에는 하나 이상의 개정이 포함되어 있습니다. 개정은 애플리케이션 구성 특성의 불변 버전을 나타냅니다. 애플리케이션 구성 특성을 업데이트할 때마다 애플리케이션 개정이 새로 작성됩니다.

애플리케이션을 수정하고 변경사항이 있는 애플리케이션을 배치하거나 구성 설정을 변경하지 않고 애플리케이션을 재배치 하는 경우, 이러한 조치는 애플리케이션의 새 개정을 배치합니다. 애플리케이션 개정을 배치 (또는 재배치) 할 때 Code Engine 는 변경된 구성 설정을 사용하고 애플리케이션에서 참조하는 업데이트된 컨테이너 이미지, 시크릿 또는 configmap을 가져옵니다.

유효한 vCPU 및 메모리 조합 지정, 명령 및 인수 정의, 환경 변수, 시크릿 또는 configmap과 같은 애플리케이션 배치에 대한 자세한 정보는 앱 배치를 위한 옵션 을 참조하십시오.

Code Engine에는 프로젝트의 앱 및 앱 개정 수에 대한 할당량이 있습니다. 프로젝트 한계에 대한 자세한 정보는 프로젝트 할당량을 참조하십시오. Code Engine은 활성 앱 개정 외에 애플리케이션의 최신 비활성 개정만 보존합니다. 이전 개정은 삭제됩니다.

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

  • 컨테이너 이미지가 있는 경우 OCI(오픈 컨테이너 이니셔티브)표준에 따라 앱을 배포할 때 컨테이너 레지스트리의 위치를 가리키는 이미지에 대한 참조만 제공하면 됩니다. 공용 레지스트리 또는 개인용 레지스트리 에 이미지를 사용하여 앱을 배치할 수 있습니다.

    app create 명령을 사용하여 앱을 작성하고 로컬 또는 저장소 소스에서 컨테이너 이미지를 빌드하기 위해 --build-source 옵션을 지정했으며 다른 컨테이너 이미지를 가리키도록 앱을 변경하려는 경우에는 먼저 앱에서 빌드의 연관을 제거해야 합니다. 예를 들어, ibmcloud ce application update -n APP_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에서 로컬 소스의 빌드를 처리하도록 선택할 수 있습니다. 그런 다음 이미지가 만기되면 원하는 특정 이미지를 참조하도록 배치된 앱을 업데이트할 수 있습니다. 이 프로세스는 필요에 따라 반복할 수 있습니다.

업데이트된 앱을 배치할 때 이미지에 대해 태그를 지정하지 않는 한 참조된 컨테이너 이미지의 최신 버전이 다운로드되어 배치됩니다. 이미지에 대해 태그를 지정한 경우 태그 지정된 이미지가 배치에 사용됩니다.

구성 설정을 변경하지 않고 내 애플리케이션을 재배치하려면 어떻게 해야 합니까?

구성 값을 변경하고 애플리케이션을 배치하여 항상 구성 변경사항으로 애플리케이션을 배치할 수 있습니다.

그러나 애플리케이션 구성 설정을 변경하지 않고 애플리케이션 개정을 재배치할 수 있습니다. 참조된 컨테이너 이미지가 변경되었을 수 있으며 애플리케이션 개정에서 업데이트된 컨테이너 이미지를 사용하도록 할 수 있습니다. 또는 애플리케이션이 업데이트된 컨텐츠 값을 포함하는 시크릿 또는 configmap을 참조하도록 할 수 있습니다.

이러한 시나리오의 경우 콘솔에서 앱 구성을 변경하지 않고 애플리케이션 페이지의 구성 탭에서 재배치 를 클릭할 수 있습니다. CLI에서 ibmcloud ce app update 명령을 사용하십시오.

콘솔에서 앱 업데이트

콘솔에서 공용 레지스트리의 애플리케이션 배치에서 작성한 애플리케이션을 업데이트하여 환경 변수를 추가하십시오.

  1. 애플리케이션 페이지로 이동하십시오. 애플리케이션 페이지로 이동하는 한 가지 방법은 다음과 같습니다.
    • Code Engine 프로젝트 페이지를 찾으십시오.
    • 프로젝트 이름을 클릭하여 개요 페이지를 엽니다.
    • 애플리케이션 목록을 열려면 애플리케이션을 클릭하십시오. 애플리케이션 페이지를 열려면 애플리케이션 이름을 클릭하십시오.
  2. 애플리케이션 페이지에서 애플리케이션의 실행 중인 인스턴스와 해당 개정, 구성 세부사항 및 앱의 엔드포인트 설정에 대한 정보를 볼 수 있습니다. 작업하려는 애플리케이션 개정의 이름을 클릭하면 해당 개정에 대한 구성 요약이 열립니다. 또는 구성 탭을 클릭하여 최신 애플리케이션 개정에 대한 구성 요약을 열 수 있습니다.
  3. 구성 탭에서 환경 변수 탭을 클릭하십시오.
  4. 환경 변수 추가를 클릭하십시오. 이 환경 변수를 리터럴 값으로 정의하십시오. 이름으로 TARGET을 입력하고 값으로 Stranger를 입력하십시오. 추가를 클릭하십시오.
  5. 배포를 클릭하여 변경 사항을 저장하고 애플리케이션 리비전을 배포합니다.
  6. 애플리케이션 상태가 준비로 변경되면 애플리케이션 개정을 테스트할 수 있습니다. 애플리케이션 테스트를 클릭한 후 애플리케이션 테스트 분할창에서 요청 전송을 클릭하십시오. 애플리케이션을 웹 페이지에서 열려면 애플리케이션 URL을 클릭하십시오. 이 앱의 경우 Hello Stranger가 표시됩니다.

이 예에서는 앱 환경 변수를 업데이트했습니다. 코드 탭에서는 다른 이미지 또는 다른 이미지 빌드를 참조하는 것을 포함하여 앱의 다른 구성 설정을 업데이트할 수도 있습니다. 리소스 & 스케일링 탭에서 앱에 대한 메모리애플리케이션 스케일링 설정을 업데이트할 수 있습니다. 환경 변수 탭에서는 앱 환경 변수를 추가하거나 업데이트할 수 있습니다. 이미지 시작 옵션 탭에서 명령 및 인수 를 추가하거나 업데이트하여 컨테이너 이미지 내의 설정을 대체하거나 활성 상태 및 준비 상태 프로브에 대해 작업 할 수 있습니다.

콘솔에서 프로젝트 전용 엔드포인트를 사용하도록 앱 업데이트

기본적으로 앱을 배치하면 공용 인터넷, 사설 네트워크 또는 프로젝트 내의 컴포넌트로부터 요청을 수신할 수 있도록 앱이 배치됩니다. 동일한 Code Engine 환경에서 실행 중인 다른 Code Engine 리소스에서만 액세스할 수 있도록 이 앱의 가시성을 변경해 보겠습니다. 도메인 매핑 탭을 사용하여 앱의 가시성을 변경할 수 있습니다.

  1. 애플리케이션 페이지로 이동하십시오. 애플리케이션 페이지로 이동하는 한 가지 방법은 다음과 같습니다.

    • Code Engine 프로젝트 페이지를 찾으십시오.
    • 프로젝트 이름을 클릭하여 개요 페이지를 엽니다.
    • 애플리케이션 목록을 열려면 애플리케이션을 클릭하십시오. 애플리케이션 페이지를 열려면 애플리케이션 이름을 클릭하십시오.
  2. 애플리케이션 페이지에서 애플리케이션의 실행 중인 인스턴스와 해당 개정, 구성 세부사항 및 앱의 엔드포인트 설정에 대한 정보를 볼 수 있습니다. 도메인 매핑 탭을 클릭하여 애플리케이션의 엔드포인트 가시성 설정을 엽니다.

  3. 도메인 매핑 탭에서 애플리케이션에 사용 가능한 URL을 확인합니다. Public 를 선택하면 애플리케이션의 공용 및 내부 시스템 도메인 맵핑 URL 을 볼 수 있습니다. 외부 시스템 도메인 매핑을 선택 하지 않으면 이 애플리케이션은 더 이상 공용 인터넷에서 액세스할 수 없으며 이 프로젝트 내의 구성 요소에서만 네트워크 액세스가 가능합니다.

    앱의 가시성을 변경하면 변경 사항이 즉시 적용됩니다. 변경이 활성 사용자 또는 통합에 미치는 영향과 보안에 미치는 영향을 고려하는 것이 중요합니다. 가시성 설정은 필요에 따라 변경할 수 있습니다.

콘솔에서 사설 엔드포인트를 사용하도록 앱 업데이트

기본적으로 앱을 배치하면 공용 인터넷, 사설 네트워크 또는 프로젝트 내의 컴포넌트로부터 요청을 수신할 수 있도록 앱이 배치됩니다. 동일한 프로젝트에서 실행 중인 다른 Code Engine 리소스와 Virtual Private Endpoints를 사용하는 사설 네트워크에서만 액세스할 수 있도록 이 앱의 가시성을 변경해 보겠습니다. 도메인 매핑 탭을 사용하여 앱의 가시성을 변경할 수 있습니다.

  1. 애플리케이션 페이지로 이동하십시오. 애플리케이션 페이지로 이동하는 한 가지 방법은 다음과 같습니다.

    • Code Engine 프로젝트 페이지를 찾으십시오.
    • 프로젝트 이름을 클릭하여 개요 페이지를 엽니다.
    • 애플리케이션 목록을 열려면 애플리케이션을 클릭하십시오. 애플리케이션 페이지를 열려면 애플리케이션 이름을 클릭하십시오.
  2. 애플리케이션 페이지에서 애플리케이션의 실행 중인 인스턴스와 해당 개정, 구성 세부사항 및 앱의 엔드포인트 설정에 대한 정보를 볼 수 있습니다. 도메인 매핑 탭을 클릭하여 애플리케이션의 엔드포인트 가시성 설정을 엽니다.

  3. 도메인 매핑 탭에서 애플리케이션에 사용 가능한 URL을 확인합니다. Private를 선택하면 공용 인터넷에서 더 이상 이 애플리케이션에 액세스할 수 없으며 이 프로젝트 내의 컴포넌트(cluster-local) 및 사설 네트워크에서만 네트워크 액세스가 가능합니다.

    Private를 클릭하여 앱의 엔드포인트 가시성을 변경하십시오. 엔드포인트 정의에 사용 가능한 URL이 사설 URL 및 프로젝트 전용 URL로 표시됩니다.

  4. 가상 사설 엔드포인트(VPE)를 사용하여 앱에 안전하게 액세스하려면 VPE를 사용하여 앱 액세스 지시사항에 따라 앱에 액세스하도록 VPE를 설정하십시오.

visibility = private로 애플리케이션을 설정하면 VPC(Virtual Private Cloud) 내에서 가상 사설 엔드포인트를 통해서만 애플리케이션을 테스트할 수 있습니다.

앱의 가시성을 변경하면 변경사항이 즉시 적용됩니다. 변경이 활성 사용자 또는 통합에 미치는 영향과 보안에 미치는 영향을 고려하는 것이 중요합니다. 가시성 설정은 필요에 따라 변경할 수 있습니다.

CLI를 사용하여 앱 업데이트

CLI로 앱을 업데이트하려면 app update 명령을 사용하십시오. 이 명령에는 업데이트하려는 앱의 이름이 필요하며 다른 선택적 인수도 사용할 수 있습니다. 전체 옵션 목록은 ibmcloud ce app update 명령을 참조하십시오.

CLI로 애플리케이션 배치에서 작성한 애플리케이션을 업데이트하여 환경 변수를 추가하십시오.

샘플 icr.io/codeengine/hello 이미지는 환경 변수 TARGET을 읽고 Hello ${TARGET}을 인쇄합니다. 이 환경 변수가 비어 있으면 Hello World가 리턴됩니다. 다음 예에서는 TARGET 환경 변수의 값을 Stranger로 수정하도록 앱을 업데이트합니다. 이 예제에 사용되는 코드에 대한 자세한 정보는 hello의 내용을 참조하십시오.

  1. application update 명령을 실행하십시오. 예를 들면 다음과 같습니다.

    ibmcloud ce application update -n myapp --env TARGET=Stranger
    

    출력 예

    Updating application 'myapp' to latest revision.
    [...]
    Run 'ibmcloud ce application get -n myapp' to check the application status.
    OK
    
    https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud    
    
  2. application get 명령을 실행하여 최신 개정 정보를 포함한 앱 상태를 표시하십시오.

    ibmcloud ce application get --name myapp  
    

    출력 예

    [...]
    Name:          myapp
    [...]
    URL:           https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    Cluster Local URL:  http://myapp.4svg40kna19.svc.cluster.local
    Console URL:   https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration
    
    Environment Variables:
    Type     Name    Value
    Literal  TARGET  Stranger
    Image:                  icr.io/codeengine/hello
    Resource Allocation:
    CPU:                1
    Ephemeral Storage:  400M
    Memory:             4G
    
    Revisions:
    myapp-hc3u8-2:
        Age:                82s
        Traffic:            100%
        Image:              icr.io/codeengine/hello (pinned to f0dc03)
        Running Instances:  1
    
    Runtime:
    Concurrency:    100
    Maximum Scale:  10
    Minimum Scale:  0
    Timeout:        300
    
    Conditions:
    Type                 OK    Age  Reason
    ConfigurationsReady  true  75s
    Ready                true  62s
    RoutesReady          true  62s
    
    Events:
    Type    Reason   Age    Source              Messages
    Normal  Created  2m11s  service-controller  Created Configuration "myapp"
    Normal  Created  2m11s  service-controller  Created Route "myapp"
    
    Instances:
    Name                                       Revision       Running  Status       Restarts  Age
    myapp-hc3u8-1-deployment-65cf8cd4f5-jx8b8  myapp-hc3u8-1  1/2      Terminating  0         2m10s
    myapp-hc3u8-2-deployment-7f98b679d5-2hskr  myapp-hc3u8-2  2/2      Terminating  0         85s
    

    Revisions 섹션의 출력에서 myapp 서비스의 최신 애플리케이션 개정을 확인할 수 있습니다. 또한 애플리케이션에 대한 트래픽의 100%가 최신 앱 개정을 실행 중임을 확인할 수 있습니다.

  3. 애플리케이션을 호출하십시오.

    curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    

    출력 예

    Hello Stranger
    

    이 명령의 출력에서 업데이트된 앱이 이제 Hello Stranger를 리턴함을 확인할 수 있습니다.

  4. ibmcloud ce revision list 명령을 사용하여 모든 앱 개정을 표시하십시오. Code Engine에는 프로젝트의 앱 개정 수에 대한 할당량이 있으므로 이 정보를 사용하여 앱 개정을 관리할 수 있도록 도움을 받으십시오.

    다음 revision list 출력에서 Code Engine이 활성 앱 개정판 외에 애플리케이션의 최신 비활성 개정판만 보유합니다. 이전 개정은 삭제됩니다.

    ibmcloud ce revision list
    

    출력 예

    Listing all application revisions...
    OK
    
    Name                   Application      Status  URL  Latest  Tag  Traffic  Age    Conditions  Reason
    myapp-hc3u8-4           myapp            Ready                            2d15h    3 OK / 4
    myapp-hc3u8-5           myapp            Ready        true         100%    2d8h    3 OK / 4  
    myapp2-vjfqt-1          myapp2           Ready        true         100%      3d    3 OK / 4
    myhelloapp-tv368-3      myhelloapp       Ready                              16d    3 OK / 4
    myhelloapp-tv368-4      myhelloapp       Ready        true         100%     16d    3 OK / 4
    newapp-mytest-00008     newapp-mytest    Ready                              4d17h  3 OK / 4
    newapp-mytest-00009     newapp-mytest    Ready        true         100%     2d20h  3 OK / 4
    

ibmcloud ce revision get 명령을 사용하여 앱 개정 세부사항을 표시하고 ibmcloud ce revision delete 명령을 사용하여 보관하지 않으려는 개정을 제거함으로써 앱 개정을 관리할 수 있습니다. 또한 ibmcloud ce revision logs 명령을 사용하여 애플리케이션 개정판 인스턴스의 로그를 볼 수 있습니다. 애플리케이션 개정판 인스턴스의 시스템 이벤트를 표시하려면 ibmcloud ce revision events 명령을 사용하십시오.

CLI에서 프로젝트 전용 엔드포인트를 사용하도록 앱 업데이트

기본적으로 앱을 배치하면 공용 인터넷, 사설 네트워크 또는 프로젝트 내의 컴포넌트로부터 요청을 수신할 수 있도록 앱이 배치됩니다. 동일한 프로젝트에서 실행 중인 다른 Code Engine 리소스에서만 액세스하도록 앱의 가시성을 변경하려면 ibmcloud ce app update 또는 ibmcloud ce app create 명령과 함께 --visibility=project 옵션을 사용하십시오.

이 경우 CLI로 애플리케이션 배치에서 작성한 애플리케이션을 업데이트하여 프로젝트 엔드포인트를 사용하도록 앱의 가시성을 변경하십시오.

  1. application update 명령을 실행하십시오. 예를 들면 다음과 같습니다.

    ibmcloud ce application update -n myapp --visibility=project
    

    출력 예

    Updating application 'myapp' to latest revision.
    [...]
    Run 'ibmcloud ce application get -n myapp' to check the application status.
    OK
    
    http://myapp.4svg40kna19.svc.cluster.local   
    
  2. application get 명령을 실행하여 최신 개정 정보를 포함한 앱 상태를 표시하십시오.

    ibmcloud ce application get --name myapp  
    

    출력 예

    [...]
    Name:          myapp
    [...]
    URL:           http://myapp.4svg40kna19.svc.cluster.local
    Cluster Local URL:  http://myapp.4svg40kna19.svc.cluster.local
    Console URL:   https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration
    
    Environment Variables:
    Type     Name    Value
    Literal  TARGET  Stranger
    Image:                  icr.io/codeengine/hello
    Resource Allocation:
    CPU:                1
    Ephemeral Storage:  400M
    Memory:             4G
    
    Revisions:
    myapp-hc3u8-2:
        Age:                82s
        Traffic:            100%
        Image:              icr.io/codeengine/hello (pinned to f0dc03)
        Running Instances:  1
    
    Runtime:
    Concurrency:    100
    Maximum Scale:  10
    Minimum Scale:  0
    Timeout:        300
    
    Conditions:
    Type                 OK    Age  Reason
    ConfigurationsReady  true  75s
    Ready                true  62s
    RoutesReady          true  62s
    
    Events:
    Type    Reason   Age    Source              Messages
    Normal  Created  2m11s  service-controller  Created Configuration "myapp"
    Normal  Created  2m11s  service-controller  Created Route "myapp"
    
    Instances:
    Name                                       Revision       Running  Status       Restarts  Age
    myapp-hc3u8-1-deployment-65cf8cd4f5-jx8b8  myapp-hc3u8-1  1/2      Terminating  0         2m10s
    myapp-hc3u8-2-deployment-7f98b679d5-2hskr  myapp-hc3u8-2  2/2      Terminating  0         85s
    

    Revisions 섹션의 출력에서 myapp 서비스의 최신 애플리케이션 개정을 확인할 수 있습니다. 또한 애플리케이션에 대한 트래픽의 100%가 최신 앱 개정을 실행 중임을 확인할 수 있습니다.

애플리케이션에서 --visibility=project를 설정했으므로 공용 인터넷에서 더 이상 이 애플리케이션에 액세스할 수 없으며 이 프로젝트 내의 컴포넌트(cluster-local)에서만 네트워크 액세스가 가능합니다.

CLI에서 사설 엔드포인트를 사용하도록 앱 업데이트

기본적으로 앱을 배치하면 공용 인터넷, 사설 네트워크 또는 프로젝트 내의 컴포넌트로부터 요청을 수신할 수 있도록 앱이 배치됩니다. 앱이 사설 엔드포인트를 사용하여 배치되도록 앱의 엔드포인트 가시성을 설정할 수 있습니다. 사설 엔드포인트를 설정하면 공용 인터넷에서 앱에 액세스할 수 없으며 VPC(Virtual Private Cloud)의 다른 IBM Cloud 서비스 또는 동일한 프로젝트에서 실행 중인 Code Engine 컴포넌트(cluster-local)에서만 네트워크 액세스가 가능합니다.

개인용 엔드포인트에서만 액세스되도록 앱의 가시성을 변경하려면 ibmcloud ce app update 또는 ibmcloud ce app create 명령과 함께 --visibility=private 옵션을 사용하십시오.

선택한 프로젝트에서 애플리케이션 비공개 가시성을 지원하는 경우에만 VPE를 사용하여 사설 엔드포인트로 앱에 액세스할 수 있습니다. 프로젝트에서 애플리케이션 비공개 가시성을 지원하는지 확인하려면 ibmcloud ce project get 명령을 사용하여 Application Private Visibility Supported의 출력이 true로 설정되었는지 확인하십시오.

이 경우 CLI로 애플리케이션 배치에서 작성한 애플리케이션을 업데이트하여 사설 엔드포인트를 사용하도록 앱의 가시성을 변경하십시오.

  1. 기존 프로젝트에서 비공개 가시성을 사용하는 애플리케이션을 지원하는지 확인하십시오. ibmcloud ce project get 명령을 사용하여 Application Private Visibility Supported의 출력이 true로 설정되었는지 확인하십시오. 값이 false인 경우 기존 프로젝트 내에서 이 기능을 사용할 수 있도록 IBM 지원 센터에 문의하십시오.

    ibmcloud ce project get -n myproject
    

    출력 예

    Getting project 'myproject'...
    OK
    
    Name:                                      myproject  
    ID:                         abcdabcd-abcd-abcd-abcd-f1de4aab5d5d
    Status:                                    active  
    Enabled:                                   true  
    Application Private Visibility Supported:  true  
    Selected:                                  true  
    Region:                                    us-south
    Resource Group:             default
    Service Binding Service ID: ServiceId-1234abcd-abcd-abcd-1111-1a2b3c4d5e6f
    Age:                        52d
    Created:                                   Tue, 28 Sep 2021 05:12:16 -0500  
    Updated:                                   Tue, 28 Sep 2021 05:12:19 -0500  
    
    Quotas:    
    Category                                  Used  Limit  
    App revisions                             1     60  
    Apps                                      1     20  
    Build runs                                1     100  
    Builds                                    2     100  
    Configmaps                                2     100  
    CPU                                       0     64  
    Ephemeral storage                         0     256G  
    Instances (active)                        0     250  
    Instances (total)                         0     2500  
    Job runs                                  0     100  
    Jobs                                      0     100  
    Memory                                    0     256G  
    Secrets                                   6     100  
    Subscriptions (cron)                      0     100  
    Subscriptions (IBM Cloud Object Storage)  0     100  
    Subscriptions (Kafka)                     0     100
    
  2. Application Private Visibility Supportedtrue인 경우 사설 엔드포인트를 사용하도록 앱을 업데이트할 수 있습니다. application update 명령을 실행하십시오. 예를 들면 다음과 같습니다.

    ibmcloud ce application update -n myapp --visibility=private
    

    출력 예

    Updating application 'myapp' to latest revision.
    [...]
    Run 'ibmcloud ce application get -n myapp' to check the application status.
    OK
    
    https://myapp.4svg40kna19.private.us-south.codeengine.appdomain.cloud
    
  3. application get 명령을 실행하여 최신 개정 정보를 포함한 앱 상태를 표시하십시오.

    ibmcloud ce application get --name myapp  
    

    출력 예

    [...]
    Name:          myapp
    [...]
    URL:           https://myapp.4svg40kna19.private.us-south.codeengine.appdomain.cloud
    Cluster Local URL:  http://myapp.4svg40kna19.svc.cluster.local
    Console URL:   https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration
    
    Environment Variables:
    Type     Name    Value
    Literal  TARGET  Stranger
    Image:                  icr.io/codeengine/hello
    Resource Allocation:
    CPU:                1
    Ephemeral Storage:  400M
    Memory:             4G
    
    Revisions:
    myapp-hc3u8-2:
        Age:                82s
        Traffic:            100%
        Image:              icr.io/codeengine/hello (pinned to f0dc03)
        Running Instances:  1
    
    Runtime:
    Concurrency:    100
    Maximum Scale:  10
    Minimum Scale:  0
    Timeout:        300
    
    Conditions:
    Type                 OK    Age  Reason
    ConfigurationsReady  true  75s
    Ready                true  62s
    RoutesReady          true  62s
    
    Events:
    Type    Reason   Age    Source              Messages
    Normal  Created  2m11s  service-controller  Created Configuration "myapp"
    Normal  Created  2m11s  service-controller  Created Route "myapp"
    
    Instances:
    Name                                       Revision       Running  Status       Restarts  Age
    myapp-hc3u8-1-deployment-65cf8cd4f5-jx8b8  myapp-hc3u8-1  1/2      Terminating  0         2m10s
    myapp-hc3u8-2-deployment-7f98b679d5-2hskr  myapp-hc3u8-2  2/2      Terminating  0         85s
    

    Revisions 섹션의 출력에서 myapp 서비스의 최신 애플리케이션 개정을 확인할 수 있습니다. 또한 애플리케이션에 대한 트래픽의 100%가 최신 앱 개정을 실행 중임을 확인할 수 있습니다.

  4. 사설 엔드포인트를 사용하여 앱에 액세스하도록 VPE를 설정하십시오.

다른 이미지를 참조하도록 앱 업데이트

다른 이미지를 참조하도록 앱을 업데이트할 수 있습니다.

특정 애플리케이션 개정과 연관된 이미지에는 고유한 컨테이너 레지스트리 요약이 있으며 Code Engine 는 애플리케이션 개정의 수명 동안 이 요약을 사용합니다. 원래 이미지와 동일한 태그를 사용하여 새 버전의 이미지를 작성하는 경우, 원래 이미지는 컨테이너 레지스트리에서 겹쳐써지고 태그가 지정되지 않습니다. 새 이미지에 태그가 지정되고 이 새 이미지에는 다른 요약이 있습니다. 새 이미지에는 애플리케이션 개정에서 참조하는 이미지와 다른 요약이 있으므로 Code Engine 애플리케이션은 이 새 이미지를 사용하지 않습니다. Code Engine 는 원래 참조된 태그가 지정되지 않은 이미지가 여전히 존재하는 한 애플리케이션 개정의 새 인스턴스를 계속 작성할 수 있습니다. 자세한 정보는 왜 Code Engine 에서 이미지를 가져올 수 없습니까? 를 참조하십시오.

콘솔에서 Container Registry의 다른 이미지를 참조하도록 앱 업데이트

Code Engine 콘솔을 사용하여 컨테이너 레지스트리에 있는 이미지를 참조하도록 애플리케이션을 업데이트하십시오.

이 예의 경우 다른 이미지를 참조하도록 helloapp콘솔에서 컨테이너 레지스트리에 있는 이미지를 참조하는 애플리케이션 배치에서 작성한 을 업데이트합니다. 업데이트된 앱은 Container Registry에서 helloworld_repo 네임스페이스에 있는 mynamespace2 이미지를 참조합니다. 다음 단계에서는 앱 업데이트 중에 레지스트리에 대한 액세스 권한을 추가하는 방법에 대해 설명합니다.

Container Registry에 이미지 추가에 대한 자세한 정보는 IBM Cloud Container Registry 시작하기를 참조하십시오.

  1. 애플리케이션 페이지로 이동하십시오. 애플리케이션 페이지로 이동하는 한 가지 방법은 다음과 같습니다.

    • Code Engine 프로젝트 페이지를 찾으십시오.
    • 프로젝트 이름을 클릭하여 개요 페이지를 엽니다.
    • 애플리케이션 목록을 열려면 애플리케이션을 클릭하십시오. 애플리케이션 페이지를 열려면 애플리케이션 이름을 클릭하십시오.
  2. 구성 탭을 클릭하면 최신 애플리케이션 개정판에 대한 구성 세부 정보가 열립니다.

  3. 구성 탭에서 코드 탭을 클릭하십시오.

  4. 이미지를 실행하려면 이미지 구성 을 클릭하여 이미지 구성 대화 상자를 여십시오. 이 예의 경우 기존 ibmcregistry 레지스트리를 참조하도록 앱을 업데이트하고 mynamespace2 네임스페이스를 선택하고 helloworld-repo 이미지를 선택한 후 1 값으로 tag을 선택하십시오. 이미지 구성 페이지에서 다음을 수행하십시오.

    • 사용하려는 이미지가 동일한 Container Registry 계정에 있는 경우, 레지스트리 액세스 권한을 선택하십시오.
    • 사용하려는 이미지가 다른 컨테이너 레지스트리 계정에 있는 경우, 해당 레지스트리에 대한 레지스트리 액세스 권한을 선택할 수 있습니다. 레지스트리 액세스 권한이 없는 경우, 먼저 IAM API 키를 작성한 후 Code Engine에 레지스트리 액세스 권한을 추가해야 합니다.

    이미지에 대한 레지스트리 액세스만 업데이트하려면 이미지 구성을 클릭하여 이미지 구성 대화 상자를 열고 레지스트리 액세스 메뉴를 사용하여 기존 레지스트리 액세스를 선택하거나 애플리케이션에서 참조하는 이미지의 레지스트리 액세스(Code Engine)를 만들지 않고 이 변경을 수행할 수 있습니다.

  5. 완료를 클릭하십시오. 앱에서 참조할 레지스트리의 이미지를 선택했습니다.

  6. 배포를 클릭하여 변경 사항을 저장하고 앱 리비전을 배포합니다.

  7. 애플리케이션 상태가 준비로 변경되면 앱 개정을 테스트할 수 있습니다. 애플리케이션 테스트를 클릭한 후 애플리케이션 테스트 분할창에서 요청 전송을 클릭하십시오. 애플리케이션을 웹 페이지에서 열려면 애플리케이션 URL을 클릭하십시오. 이 앱의 경우 Hello World from Code Engine가 표시됩니다.

CLI를 사용하여 Container Registry의 다른 이미지를 참조하도록 앱 업데이트

Container Registry CLI에서 Code Engine에 있는 다른 이미지를 참조하도록 애플리케이션을 업데이트하십시오.

이 예의 경우 동일한 계정의 다른 네임스페이스에 있는 다른 이미지를 참조하도록 myhelloappCLI로 컨테이너 레지스트리에 있는 이미지를 참조하는 애플리케이션 배치에서 작성한 을 업데이트하십시오. Container Registry의 helloworld_repo 네임스페이스에 있는 mynamespace2 이미지를 참조하도록 앱을 업데이트하십시오.

  1. Container Registry에 다른 이미지를 추가하십시오. 이 예의 경우 Container Registry의 helloworld_repo 네임스페이스에 mynamespace2 이미지를 추가하십시오. Container Registry에 이미지 추가에 대한 자세한 정보는 IBM Cloud Container Registry 시작하기를 참조하십시오.

  2. Code Engine에 대한 레지스트리 액세스를 추가하십시오. 이 예의 경우 helloworld_repo 이미지가 동일한 계정에 있으므로 앞에서 정의한 myregistry 레지스트리 액세스를 사용하십시오.

  3. myregistry 액세스를 사용하여 앱을 업데이트하고 Container Registry의 이미지를 참조하십시오. 예를 들어, myhelloapp 액세스 정보를 사용하여 us.icr.io/mynamespace2/helloworld_repo를 참조하도록 myregistry 앱을 업데이트하십시오.

    ibmcloud ce app update --name myhelloapp --image us.icr.io/mynamespace2/helloworld_repo:1 --registry-secret myregistry
    

    이 애플리케이션의 이미지 이름 형식은 REGISTRY/NAMESPACE/REPOSITORY:TAG입니다. 여기서 REGISTRYTAG는 선택사항입니다. REGISTRY를 지정하지 않으면 기본값은 docker.io입니다. TAG를 지정하지 않으면 기본값은 latest입니다.

  4. 앱이 업데이트되면 앱에 액세스할 수 있습니다. 앱의 URL을 확보하려면 ibmcloud ce app get --name myhelloapp --output url을 실행하십시오. myhelloapp 앱에 대해 curl을 실행하면 앱이 Hello World from Code Engine 이미지를 사용 중임을 나타내는 helloworld_repo의 내용을 앱이 리턴합니다.

콘솔에서 소스 코드로 빌드된 이미지를 참조하도록 앱 업데이트

Code Engine 콘솔을 사용하여 소스 코드로 빌드된 이미지를 참조하도록 애플리케이션을 업데이트하십시오.

이 예의 경우 소스 코드로 빌드된 이미지를 참조하도록 helloapp콘솔에서 컨테이너 레지스트리에 있는 이미지를 참조하는 애플리케이션 배치에서 작성한 을 업데이트하십시오.

콘솔에서 빌드 구성 작성에 대한 자세한 정보는 빌드 작성을 참조하십시오.

  1. 애플리케이션 페이지로 이동하십시오. 애플리케이션 페이지로 이동하는 한 가지 방법은 다음과 같습니다.
    • Code Engine 프로젝트 페이지를 찾으십시오.
    • 프로젝트 이름을 클릭하여 개요 페이지를 엽니다.
    • 애플리케이션 목록을 열려면 애플리케이션을 클릭하십시오. 애플리케이션 페이지를 열려면 애플리케이션 이름을 클릭하십시오.
  2. 구성 탭을 클릭하면 최신 애플리케이션 개정판에 대한 구성 세부 정보가 열립니다.
  3. 구성 탭에서 코드 탭을 클릭하십시오.
  4. 코드 탭에서는 이미지 빌드를 작성하거나 애플리케이션에서 참조하는 기존 이미지 빌드를 재실행할 수 있습니다. 이미지 빌드를 작성하려면 소스에서 이미지 작성을 클릭하여 이미지 빌드를 실행하십시오. 빌드 세부사항을 입력하여 소스 코드에서 앱을 배치할 수 있는 빌드 세부사항 지정 페이지가 열립니다. 빌드 세부사항 업데이트를 지정했으면 완료를 클릭하십시오.
  5. 배포를 클릭하여 변경 사항을 저장하고 빌드를 실행한 후 앱 리비전을 배포합니다.
  6. 애플리케이션 상태가 준비로 변경되면 앱 개정을 테스트할 수 있습니다. 애플리케이션 테스트를 클릭한 후 애플리케이션 테스트 분할창에서 요청 전송을 클릭하십시오. 애플리케이션을 웹 페이지에서 열려면 애플리케이션 URL을 클릭하십시오.
  7. 업데이트된 빌드 이미지를 참조하도록 이 애플리케이션을 다시 업데이트하려면 코드 탭에서 빌드 재실행 을 클릭하고 업데이트된 빌드 이미지에 대해 고유한 이미지 태그를 지정하십시오. 빌드 세부사항을 더 변경하려면 빌드 세부사항 편집을 클릭하십시오. 빌드 세부사항을 입력하여 소스 코드에서 앱을 배치할 수 있는 빌드 세부사항 지정 페이지가 열립니다. 빌드 세부사항 업데이트를 지정했으면 완료를 클릭하십시오.
  8. 배포를 클릭하여 변경 사항을 저장하고 변경 사항이 포함된 빌드를 실행한 다음 앱 리비전을 배포합니다.
  9. 애플리케이션 상태가 준비로 변경되면 앱 개정을 테스트할 수 있습니다. 애플리케이션 테스트를 클릭한 후 애플리케이션 테스트 분할창에서 요청 전송을 클릭하십시오. 애플리케이션을 웹 페이지에서 열려면 애플리케이션 URL을 클릭하십시오.

CLI를 사용하여 소스 코드로 빌드된 이미지를 참조하도록 앱 업데이트

Code Engine CLI를 사용하여 소스 코드로 빌드된 이미지를 참조하도록 애플리케이션을 업데이트하십시오.

이 예의 경우 소스 코드로 빌드된 다른 이미지를 참조하도록 myhelloappCLI를 사용하여 컨테이너 레지스트리의 다른 이미지를 참조하도록 앱 업데이트에서 업데이트한 을 변경하십시오.

이전 예의 경우 myhelloapp 앱은 us.icr.io/mynamespace2/helloworld_repo 액세스 정보를 사용하여 myregistry를 참조합니다. 빌드 구성을 작성하고 빌드를 실행한 후 소스 코드로 빌드된 이미지를 참조하도록 myhelloapp을 업데이트하십시오.

  1. 빌드 구성을 작성하십시오. 예를 들어, 다음 build create 명령은 helloworld-build라는 빌드 구성을 작성합니다. 이 구성은 공용 Git 저장소 https://github.com/IBM/CodeEngine에서 빌드되고, dockerfile 전략 및 medium 빌드 크기를 사용하며, myregistry에 정의된 이미지 레지스트리 시크릿을 사용하여 이미지를 us.icr.io/mynamespace/codeengine-helloworld에 저장합니다.

    ibmcloud ce build create --name helloworld-build --image us.icr.io/mynamespace/codeengine-helloworld --registry-secret myregistry --source https://github.com/IBM/CodeEngine --commit main --context-dir /hello --strategy dockerfile --size medium
    
  2. 빌드를 실행하십시오. 이 예에서는 helloworld-build-run이라는 빌드를 실행하고 helloworld-build 빌드 구성을 사용합니다.

    ibmcloud ce buildrun submit --build helloworld-build --name helloworld-build-run
    

    다음 출력은 ibmcloud ce buildrun get 명령을 사용하여 빌드 실행의 세부사항을 보여줍니다.

    출력 예

    Getting build run 'helloworld-build-run'...
    [...]
    OK
    
    Name:          helloworld-build-run  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111  
    Age:           21m  
    Created:       2021-09-30T14:50:13-05:00  
    
    Summary:  Succeeded  
    Status:   Succeeded  
    Reason:   All Steps have completed executing
    
    Image:  us.icr.io/mynamespace/codeengine-helloworld
    
    

    CLI에서 빌드 구성 작성에 대한 자세한 정보는 빌드 작성을 참조하십시오.

  3. 빌드한 이미지를 참조하고 myhelloapp 레지스트리 시크릿을 사용하도록 myregistry을 업데이트하십시오.

    ibmcloud ce app update --name myhelloapp --image us.icr.io/mynamespace/codeengine-helloworld --registry-secret myregistry
    
  4. 업데이트된 앱에 대한 정보를 표시하여 참조된 이미지가 빌드한 이미지인지 확인하십시오.

    ibmcloud ce app get --name myhelloapp
    

    출력 예

    [...]
    OK
    
    Name:               myhelloapp
    ID:                 abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:       myproject
    Project ID:         01234567-abcd-abcd-abcd-abcdabcd1111
    Age:                2m4s
    Created:            2021-09-09T14:01:02-04:00
    URL:                https://myhelloapp.abcdabcdabc.us-south.codeengine.appdomain.cloud
    Cluster Local URL:  http://myhelloapp.abcdabcdabc.svc.cluster.local
    Console URL:        https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myhelloapp/configuration
    Status Summary:     Application deployed successfully
    
    Environment Variables:    
        Type     Name             Value  
        Literal  CE_API_BASE_URL  https://api.private.us-south.codeengine.cloud.ibm.com
        Literal  CE_APP           myhelloapp  
        Literal  CE_DOMAIN        us-south.codeengine.appdomain.cloud  
        Literal  CE_PROJECT_ID    abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
        Literal  CE_REGION        us-south  
        Literal  CE_SUBDOMAIN     abcdabcdab
    Image:                  us.icr.io/mynancesnamespace/codeengine-helloworld
    Resource Allocation:
    CPU:                1
    Ephemeral Storage:  400M
    Memory:             4G
    Registry Secrets:
    myregistry
    
    Revisions:
    helloapp-00003:
        Age:                2m46s
        Latest:             true
        Traffic:            100%
        Image:              us.icr.io/mysnamespace/codeengine-helloworld (pinned to eeca2b)
        Running Instances:  1
    [...]