IBM Cloud Docs
更新应用程序

更新应用程序

应用程序包含一个或多个 修订版。 修订版表示应用程序的配置属性的不可变版本。 应用程序配置属性的每次更新都会创建应用程序的新修订版。

当您修改应用程序并使用更改来部署应用程序时,或者 重新部署应用程序而不更改其配置设置 时,这些操作将部署应用程序的新修订版。 部署 (或重新部署) 应用程序修订版时,Code Engine 使用任何已更改的配置设置,并获取应用程序引用的任何已更新的容器映像,密钥或配置映射。

有关部署应用程序的更多信息,例如,指定 有效 vCPU 和内存组合,定义命令和参数,环境变量,私钥或配置映射,请参阅 用于部署应用程序的选项

Code Engine 具有项目中应用程序和应用程序修订版的数量配额。 有关项目限制的更多信息,请参阅 项目配额。Code Engine 仅保留应用程序的最新不活动修订版以及活动应用程序修订版。 将删除较旧的修订版。

您可以使用以下 任何 方法 更新已部署的应用程序 及其引用的代码,而与您创建或先前更新应用程序的方式无关:

  • 如果您具有容器映像,那么根据 Open Container Initiative(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. 应用程序状态更改为 就绪后,可以测试应用程序修订版。 单击 测试应用程序,然后在“测试应用程序”窗格中单击 发送请求。 要在 Web 页面中打开应用程序,请单击 应用程序 URL。 对于此应用程序,将显示 Hello Stranger

在此示例中,您更新了应用程序的环境变量。 您还可以更新应用程序的其他配置设置,包括引用 代码 选项卡中的 不同映像不同映像构建。 从 资源和缩放 选项卡中,可以更新应用程序的 内存应用程序缩放 设置。 从 环境变量 选项卡中,可以为应用程序添加或更新 环境变量。 从 映像启动选项 选项卡中,可以添加或更新 命令和自变量 以覆盖容器映像中的设置,或者 使用活动性和就绪性探测器

从控制台更新应用程序以使用仅项目端点

缺省情况下,部署应用程序时,应用程序会进行部署,以便它可以从公共因特网,专用网络或项目中的组件接收请求。 让我们更改此应用程序的可视性,使其仅可供在同一 Code Engine 环境中运行的其他 Code Engine 资源访问。 使用 域映射 选项卡可更改应用程序的可视性。

  1. 浏览至应用程序页面。 浏览到应用程序页面的一种方法是

    • 找到 Code Engine "项目" 页面
    • 单击项目的名称以打开“概述”页面。
    • 单击 应用程序 以打开应用程序列表。 单击应用程序的名称以打开其应用程序页面。
  2. 在应用程序页面中,您可以查看有关应用程序的运行实例及其修订版,配置详细信息和应用程序端点设置的信息。 单击 域映射 选项卡以打开应用程序的端点可视性设置。

  3. 域映射 选项卡中,请注意应用程序的可用 URL。 选择 Public 时,您可以查看应用程序的公共和内部系统域映射 URL。 如果选择了 无外部系统域映射,那么无法再从公共因特网访问此应用程序,并且只能从此项目中的组件进行网络访问。

    当您更改应用程序的可视性时,该更改将立即生效。 请务必考虑更改对活动用户或集成的影响以及任何安全影响。 您可以根据需要更改可视性设置。

从控制台更新应用程序以使用专用端点

缺省情况下,部署应用程序时,应用程序会进行部署,以便它可以从公共因特网,专用网络或项目中的组件接收请求。 让我们更改此应用程序的可视性,使其仅可供在同一项目中运行的其他 Code Engine 资源使用虚拟专用端点从专用网络进行访问。 使用 域映射 选项卡可更改应用程序的可视性。

  1. 浏览至应用程序页面。 浏览到应用程序页面的一种方法是

    • 找到 Code Engine "项目" 页面
    • 单击项目的名称以打开“概述”页面。
    • 单击 应用程序 以打开应用程序列表。 单击应用程序的名称以打开其应用程序页面。
  2. 在应用程序页面中,您可以查看有关应用程序的运行实例及其修订版,配置详细信息和应用程序端点设置的信息。 单击 域映射 选项卡以打开应用程序的端点可视性设置。

  3. 域映射 选项卡中,请注意应用程序的可用 URL。 选择 Private 后,将无法再从公用因特网访问此应用程序,并且只能从此项目中的组件 (集群本地) 和专用网络进行网络访问。

    单击 专用 以更改应用程序的端点可视性。 将针对专用 URL 和仅项目 URL 显示端点定义的可用 URL。

  4. 要使用虚拟专用端点 (VPE) 安全地访问应用程序,请遵循 使用 VPE 访问应用程序 的指示信息来设置 VPE 以访问应用程序。

如果为 visibility = private 设置应用程序,那么只能通过 Virtual Private Cloud(VPC)中的虚拟专用端点 来测试应用程序。

通过更改应用程序的可视性,更改将立即生效。 请务必考虑更改对活动用户或集成的影响以及任何安全影响。 您可以根据需要更改可视性设置。

使用 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
    

    修订 部分的输出中,您可以看到 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 资源访问,请将 --visibility=project 选项与 ibmcloud ce app updateibmcloud ce app create 命令配合使用。

在此场景中,更新您在 使用 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
    

    修订 部分的输出中,您可以看到 myapp 服务的最新应用程序修订。 另外,请注意,100% 的应用程序流量正在运行应用程序的最新修订版。

现在,您在应用程序上设置了 --visibility=project,此应用程序不再可从公用因特网访问,并且只能从此项目中的组件 (集群本地) 进行网络访问。

通过 CLI 更新应用程序以使用专用端点

缺省情况下,部署应用程序时,应用程序会进行部署,以便它可以从公共因特网,专用网络或项目中的组件接收请求。 您可以设置应用程序的端点可视性,以便将其与专用端点一起部署。 设置专用端点意味着无法从公共因特网访问应用程序,只能从在同一项目 (cluster-local) 中运行的虚拟专用端点 (VPC) 或 Code Engine 组件中的其他 IBM Cloud 服务进行网络访问。

要更改应用程序的可视性,以便仅通过专用端点对其进行访问,请将 --visibility=private 选项与 ibmcloud ce app updateibmcloud ce app create 命令配合使用。

仅当所选项目支持 应用程序专用可视性 时,才能使用 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
    

    修订 部分的输出中,您可以看到 myapp 服务的最新应用程序修订。 另外,请注意,100% 的应用程序流量正在运行应用程序的最新修订版。

  4. 设置 VPE 以 使用专用端点访问应用程序

更新应用程序以引用其他映像

您可以更新应用程序以引用其他映像。

与特定应用程序修订版关联的映像具有唯一的容器注册表摘要,并且 Code Engine 将此摘要用于应用程序修订版的生命周期。 如果使用与原始映像相同的标记创建映像的较新版本,那么原始映像将在容器注册表中覆盖并变为未标记。 更新的映像已标记,并且此更新的映像具有不同的摘要。 Code Engine 应用程序不使用此较新映像,因为较新映像的摘要与应用程序修订版所引用的映像不同。只要最初引用的未标记映像仍然存在,Code Engine 仍可以创建应用程序修订版的新实例。 有关更多信息,请参阅 为什么不能 Code Engine 拉取映像?

从控制台更新应用程序以引用 Container Registry 中的其他映像

使用 Code Engine 控制台更新应用程序以引用容器注册表中的其他映像。

对于此示例,我们将更新您在 从控制台部署引用容器注册表中的映像的应用程序 中创建的 helloapp,以引用其他映像。 更新后的应用程序引用 Container Registry中 mynamespace2 名称空间内的 helloworld_repo 映像。 以下步骤描述在更新应用程序期间添加对注册表的访问权。

有关将映像添加到 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. 应用程序状态更改为 Ready 后,可以测试应用程序修订版。 单击 测试应用程序,然后在“测试应用程序”窗格中单击 发送请求。 要在 Web 页面中打开应用程序,请单击 应用程序 URL。 对于此应用程序,将显示 Hello World from Code Engine

使用 CLI 更新应用程序以引用 Container Registry 中的其他映像

更新应用程序以从 Code Engine CLI 引用 Container Registry 中的其他映像。

对于此示例,请更新您在 使用 CLI 部署引用容器注册表中的映像的应用程序 中创建的 myhelloapp,以引用同一帐户中不同名称空间中的不同映像。 更新应用程序以引用 Container Registry中 mynamespace2 名称空间中的 helloworld_repo 映像。

  1. 向 Container Registry添加其他映像。 对于此示例,请在 Container Registry中的 mynamespace2 名称空间内添加 helloworld_repo 映像。 有关将映像添加到 Container Registry的更多信息,请参阅 IBM Cloud Container Registry 入门。

  2. 将注册表访问权添加到 Code Engine。 对于此示例,由于 helloworld_repo 映像位于同一帐户中,因此请使用先前定义的 myregistry 注册表访问权。

  3. 使用 myregistry 访问权更新应用程序并引用 Container Registry 中的映像。 例如,更新 myhelloapp 应用程序以使用 myregistry 访问信息来引用 us.icr.io/mynamespace2/helloworld_repo

    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. 应用程序状态更改为 Ready 后,可以测试应用程序修订版。 单击 测试应用程序,然后在“测试应用程序”窗格中单击 发送请求。 要在 Web 页面中打开应用程序,请单击 应用程序 URL
  7. 要再次更新此应用程序以引用已更新的构建映像,请从 代码 选项卡中单击 重新构建,并为已更新的构建映像指定唯一的映像标记。 如果要对构建详细信息进行更多更改,请单击 编辑构建详细信息。 此时将打开“指定构建详细信息”页面,您可以在其中输入构建的详细信息以 从源代码部署应用程序。 指定构建详细信息更新时,单击 完成
  8. 单击 部署 以保存更改,运行包含更改的构建,然后部署应用程序修订版。
  9. 应用程序状态更改为 Ready 后,可以测试应用程序修订版。 单击 测试应用程序,然后在“测试应用程序”窗格中单击 发送请求。 要在 Web 页面中打开应用程序,请单击 应用程序 URL

使用 CLI 更新应用程序以引用从源代码构建的映像

使用 Code Engine CLI 更新应用程序以引用从源代码构建的映像。

对于此示例,我们将更改您在 使用 CLI 更新应用程序以引用 Container Registry 中的其他映像 中更新的 myhelloapp,以引用根据源代码构建的其他映像。

在上一个示例中,myhelloapp 应用程序使用 myregistry 访问信息来引用 us.icr.io/mynamespace2/helloworld_repo。 让我们创建构建配置,运行构建并更新 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.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
    [...]