IBM Cloud Docs
アプリの更新

アプリの更新

アプリケーションには 1 つ以上のリビジョン が含まれます。 リビジョンとは、アプリケーションの構成プロパティーの変更不可能なバージョンを表します。 アプリケーションの構成プロパティーの更新ごとに、アプリケーションの新規リビジョンが作成されます。

アプリケーションを変更してアプリケーションをデプロイするか、 構成設定を変更せずにアプリケーションを再デプロイ すると、これらのアクションによってアプリケーションの新規リビジョンがデプロイされます。 アプリケーション・リビジョンをデプロイ (または再デプロイ) すると、 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 を使用してイメージのビルドを選択できます。

  • ローカル・ワークステーションにあるソース・コードから開始する場合は、ソースからのイメージのビルドと単一 CLI コマンドを使用したアプリのデプロイを Code Engine に処理させることができます。 このシナリオでは、Code Engine はイメージを IBM Cloud® Container Registry にアップロードします。 詳しくは、CLI を使用したローカル・ソース・コードからのアプリのデプロイを参照してください。 イメージのビルドをより詳細に制御したい場合は、アプリをデプロイする前に Code Engine を使用してイメージのビルドを選択できます。

例えば、アプリのソースの開発を進化させながら、ローカル・ソースのビルドを Code Engine に処理させることができます。 その後、イメージが成熟すると、必要な特定のイメージを参照するようにデプロイ済みアプリを更新できます。 必要に応じて、このプロセスを繰り返すことができます。

更新したアプリをデプロイすると、イメージにタグが指定されていない限り、参照されているコンテナー・イメージの最新バージョンがダウンロードされてデプロイされます。 イメージにタグが指定されている場合、タグ付けされたイメージがデプロイメントに使用されます。

構成設定を変更せずにアプリケーションを再デプロイする場合はどうすればよいですか?

構成値を変更し、アプリケーションをデプロイすることにより、構成変更を使用していつでもアプリケーションをデプロイできます。

ただし、アプリケーション構成設定を変更せずにアプリケーション・リビジョンを再デプロイすることもできます。 参照されているコンテナー・イメージが変更され、更新されたコンテナー・イメージをアプリケーション・リビジョンで使用する必要がある場合があります。 あるいは、更新されたコンテンツ値を含むシークレットまたは構成マップをアプリケーションで参照することもできます。

このようなシナリオでは、アプリケーションの構成を変更せずに、コンソールからアプリケーション・ページの 「構成」 タブの 「再デプロイ」 をクリックできます。 CLI で、 ibmcloud ce app update コマンドを使用します。

コンソールでのアプリの更新

コンソールでのパブリック・レジストリーからのアプリケーションのデプロイで作成したアプリケーションを更新して、環境変数を追加します。

  1. アプリケーション・ページにナビゲートします。 アプリケーション・ページにナビゲートする方法の 1 つは、以下のとおりです。
    • Code Engine プロジェクト・ページを見つけます。
    • プロジェクト名をクリックすると、概要ページが開きます。
    • **「アプリケーション」**をクリックして、アプリケーションのリストを開きます。 アプリケーションの名前をクリックして、そのアプリケーション・ページを開きます。
  2. アプリケーション・ページから、アプリケーションの実行中のインスタンスとそのリビジョン、構成の詳細、およびアプリケーションのエンドポイント設定に関する情報を表示できます。 処理するアプリケーション・リビジョンの名前をクリックして、そのリビジョンの構成サマリーを開きます。 または、**「構成」**タブをクリックして、最新のアプリケーション・リビジョンの構成サマリーを開くこともできます。
  3. 「構成」 タブで、 「環境変数」 タブをクリックします。
  4. **「環境変数の追加 (Add environment variable)」**をクリックします。 この環境変数をリテラル値として定義します。 名前に TARGET、値に Stranger を入力します。 **「追加」**をクリックします。
  5. Deploy をクリックして変更を保存し、アプリケーションリビジョンをデプロイします。
  6. アプリケーションの状況が**「準備完了 (Ready)」**に変わったら、アプリケーションのリビジョンをテストできます。 **「アプリケーションのテスト (Test application)」をクリックしてから、「アプリケーションのテスト (Test application)」ペインで「要求の送信」をクリックします。 Web ページでアプリケーションを開くには、「アプリケーション URL (Application URL)」**をクリックします。 このアプリでは、Hello Strangerが表示されます。

この例では、アプリの環境変数を更新しました。 「コード」タブで、別のイメージ別のイメージ・ビルドを参照するなど、アプリのその他の構成設定を更新することもできます。 「リソース」&「スケーリング」 タブから、アプリの メモリー および アプリケーション・スケーリング 設定を更新できます。 **「環境変数」**タブで、アプリの環境変数を追加または更新できます。 「イメージ開始オプション (Image start options)」 タブで、 コマンドおよび引数 を追加または更新してコンテナー・イメージ内の設定をオーバーライドしたり、 活性プローブおよび作動可能プローブの処理 を行ったりすることができます。

コンソールからプロジェクト専用エンドポイントを使用するためのアプリの更新

デフォルトでは、アプリをデプロイすると、アプリは、パブリック・インターネット、プライベート・ネットワーク、またはプロジェクト内のコンポーネントから要求を受信できるようにデプロイされます。 このアプリケーションの可視性を変更して、同じ Code Engine 環境で実行されている他の Code Engine リソースからのみアクセスされるようにしましょう。 Domain mappings(ドメインマッピング) タブを使用して、アプリの可視性を変更します。

  1. アプリケーション・ページにナビゲートします。 アプリケーション・ページにナビゲートする方法の 1 つは、以下のとおりです。

    • Code Engine プロジェクト・ページを見つけます。
    • プロジェクト名をクリックすると、概要ページが開きます。
    • **「アプリケーション」**をクリックして、アプリケーションのリストを開きます。 アプリケーションの名前をクリックして、そのアプリケーション・ページを開きます。
  2. アプリケーション・ページから、アプリケーションの実行中のインスタンスとそのリビジョン、構成の詳細、およびアプリケーションのエンドポイント設定に関する情報を表示できます。 ドメインマッピング] タブをクリックして、アプリケーションのエンドポイント可視性設定を開きます。

  3. Domain mappings(ドメインマッピング) タブで、アプリケーションで利用可能なURLを確認します。 Public を選択すると、アプリケーションのパブリック・システム・ドメインと内部システム・ドメインのマッピング URL を表示できます。 No external system domain mapping(外部システムドメインマッピングなし )」を選択すると、このアプリケーションはパブリックインターネットからアクセスできなくなり、このプロジェクト内のコンポーネントからのみネットワークアクセスが可能になります。

    アプリの可視性を変更すると、変更は即座に有効になります。 アクティブ・ユーザーまたは統合に対する変更の影響と、セキュリティーへの影響を考慮することが重要です。 可視性の設定は、必要に応じて変更できます。

コンソールからプライベート・エンドポイントを使用するためのアプリの更新

デフォルトでは、アプリをデプロイすると、アプリは、パブリック・インターネット、プライベート・ネットワーク、またはプロジェクト内のコンポーネントから要求を受信できるようにデプロイされます。 このアプリの可視性を変更して、同じプロジェクトで実行されている他のCode Engineリソースと、仮想プライベート・エンドポイントを使用してプライベート・ネットワークからのみアクセスされるようにしましょう。 Domain mappings(ドメインマッピング) タブを使用して、アプリの可視性を変更します。

  1. アプリケーション・ページにナビゲートします。 アプリケーション・ページにナビゲートする方法の 1 つは、以下のとおりです。

    • Code Engine プロジェクト・ページを見つけます。
    • プロジェクト名をクリックすると、概要ページが開きます。
    • **「アプリケーション」**をクリックして、アプリケーションのリストを開きます。 アプリケーションの名前をクリックして、そのアプリケーション・ページを開きます。
  2. アプリケーション・ページから、アプリケーションの実行中のインスタンスとそのリビジョン、構成の詳細、およびアプリケーションのエンドポイント設定に関する情報を表示できます。 ドメインマッピング] タブをクリックして、アプリケーションのエンドポイント可視性設定を開きます。

  3. Domain mappings(ドメインマッピング) タブで、アプリケーションで利用可能なURLを確認します。 Privateを選択すると、このアプリケーションはもうパブリック・インターネットからアクセスできなくなり、このプロジェクト内のコンポーネント (クラスター・ローカル) およびプライベート・ネットワークからのみネットワーク・アクセスが可能になります。

    私用をクリックして、アプリのエンドポイントの可視性を変更します。 エンドポイント定義で使用可能な URL は、プライベート URL とプロジェクト専用 URL に対して表示されます。

  4. 仮想プライベート・エンドポイント (VPE) を使用してアプリに安全にアクセスするには、VPE を使用したアプリへのアクセスの手順に従って、アプリにアクセスするように VPE をセットアップします。

visibility = private用にアプリケーションを設定した場合は、仮想プライベート・クラウド (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
    

    **「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 を設定すると、このアプリケーションはパブリック・インターネットからアクセスできなくなり、このプロジェクト内のコンポーネント (クラスター・ローカル) からのみネットワーク・アクセスが可能になります。

CLI でプライベート・エンドポイントを使用するためのアプリの更新

デフォルトでは、アプリをデプロイすると、アプリは、パブリック・インターネット、プライベート・ネットワーク、またはプロジェクト内のコンポーネントから要求を受信できるようにデプロイされます。 プライベート・エンドポイントを使用してデプロイされるように、アプリのエンドポイント可視性を設定できます。 プライベート・エンドポイントを設定すると、パブリック・インターネットからアプリにアクセスできなくなり、同じプロジェクト (クラスター・ローカル) で実行されている仮想プライベート・エンドポイント (VPC) またはCode Engineコンポーネントの他のIBM Cloudサービスからのみネットワーク・アクセスが可能になります。

プライベート・エンドポイントでのみアクセスされるようにアプリの可視性を変更するには、 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. アプリケーション・ページにナビゲートします。 アプリケーション・ページにナビゲートする方法の 1 つは、以下のとおりです。

    • Code Engine プロジェクト・ページを見つけます。
    • プロジェクト名をクリックすると、概要ページが開きます。
    • **「アプリケーション」**をクリックして、アプリケーションのリストを開きます。 アプリケーションの名前をクリックして、アプリケーション・ページを開きます。
  2. 最新のアプリケーション・リビジョンの設定詳細を開くには、 「Configuration」 タブをクリックします。

  3. 「構成」 タブで、 「コード」 タブをクリックします。

  4. 「イメージ」を実行するには、 「イメージの構成」 をクリックして「イメージの構成」ダイアログを開きます。 この例では、既存の ibmcregistry レジストリーを参照するようアプリを更新し、mynamespace2 名前空間を選択し、helloworld-repo イメージを選択し、1 の値として tag を選択します。 「イメージの構成」ページで、以下を行います。

    • 使用するイメージが同じ Container Registry アカウントに存在する場合、レジストリーのアクセス権限を選択します。
    • 使用するイメージが別のコンテナー・レジストリー・アカウントに存在する場合は、このレジストリーのレジストリー・アクセス権限を選択できます。 レジストリー・アクセス権限が存在しない場合は、まず IAM API キーを作成してから、Code Engine にレジストリー・アクセス権限を追加する必要があります。

    イメージのレジストリ・アクセスだけを更新したい場合は、 [イメージの設定] をクリックせずに、[イメージの設定]ダイアログを開き、[レジストリ・アクセス]メニューを使って既存のレジストリ・アクセスを選択するか、アプリケーションが参照するイメージのレジストリ・アクセス Code Engine を作成します。

  5. 「完了 (Done)」 をクリックします。 これでアプリから参照するレジストリー内のイメージが選択されました。

  6. Deploy をクリックして変更を保存し、アプリのリビジョンをデプロイします。

  7. アプリケーションの状況が**「準備完了 (Ready)」**に変わったら、アプリのリビジョンをテストできます。 **「アプリケーションのテスト (Test application)」をクリックしてから、「アプリケーションのテスト (Test application)」ペインで「要求の送信」をクリックします。 Web ページでアプリケーションを開くには、「アプリケーション URL (Application URL)」**をクリックします。 このアプリでは、Hello World from Code Engineが表示されます。

アプリが Container Registry にある別のイメージを参照するように CLI で更新する

Container Registry CLI でアプリケーションを更新して、Code Engine にある別のイメージを参照するようにします。

例えば、myhelloappコンテナー・レジストリーにあるイメージを参照するアプリケーションを CLI でデプロイするで作成した を、同じアカウントの別の名前空間にある別のイメージを参照するように更新します。 アプリを更新して、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. アプリケーション・ページにナビゲートします。 アプリケーション・ページにナビゲートする方法の 1 つは、以下のとおりです。
    • Code Engine プロジェクト・ページを見つけます。
    • プロジェクト名をクリックすると、概要ページが開きます。
    • **「アプリケーション」**をクリックして、アプリケーションのリストを開きます。 アプリケーションの名前をクリックして、アプリケーション・ページを開きます。
  2. 最新のアプリケーション・リビジョンの設定詳細を開くには、 「Configuration」 タブをクリックします。
  3. 「構成」 タブで、 「コード」 タブをクリックします。
  4. **「コード」タブで、イメージ・ビルドを作成したり、アプリケーションによって参照される既存のイメージ・ビルドを再実行したりすることができます。 イメージ・ビルドを作成するには、「ソースからイメージを作成 (Create image from source)」をクリックしてイメージ・ビルドを実行します。 「ビルドの詳細を指定 (Specify build details)」ページが開きます。ここでビルドの詳細を入力して、ソース・コードからアプリをデプロイすることができます。 ビルド詳細の更新が指定されたら、「完了」**をクリックします。
  5. Deployをクリックして変更を保存し、ビルドを実行し、アプリのリビジョンをデプロイします。
  6. アプリケーションの状況が**「準備完了 (Ready)」**に変わったら、アプリのリビジョンをテストできます。 **「アプリケーションのテスト (Test application)」をクリックしてから、「アプリケーションのテスト (Test application)」ペインで「要求の送信」をクリックします。 Web ページでアプリケーションを開くには、「アプリケーション URL (Application URL)」**をクリックします。
  7. 更新されたビルド・イメージを参照するようにこのアプリケーションを再度更新するには、 「コード」 タブで 「ビルドの再実行」 をクリックし、更新されたビルド・イメージに固有のイメージ・タグを指定します。 ビルド詳細をさらに変更する場合は、**「ビルド詳細の編集」をクリックします。 「ビルドの詳細を指定 (Specify build details)」ページが開きます。ここでビルドの詳細を入力して、ソース・コードからアプリをデプロイすることができます。 ビルド詳細の更新が指定されたら、「完了」**をクリックします。
  8. 変更を保存してビルドを実行し、アプリのリビジョンをデプロイするには、 デプロイをクリックします。
  9. アプリケーションの状況が**「準備完了 (Ready)」**に変わったら、アプリのリビジョンをテストできます。 **「アプリケーションのテスト (Test application)」をクリックしてから、「アプリケーションのテスト (Test application)」ペインで「要求の送信」をクリックします。 Web ページでアプリケーションを開くには、「アプリケーション URL (Application 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
    [...]