アプリの更新
アプリケーションには 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 つは、以下のとおりです。
- Code Engine プロジェクト・ページを見つけます。
- プロジェクト名をクリックすると、概要ページが開きます。
- **「アプリケーション」**をクリックして、アプリケーションのリストを開きます。 アプリケーションの名前をクリックして、そのアプリケーション・ページを開きます。
- アプリケーション・ページから、アプリケーションの実行中のインスタンスとそのリビジョン、構成の詳細、およびアプリケーションのエンドポイント設定に関する情報を表示できます。 処理するアプリケーション・リビジョンの名前をクリックして、そのリビジョンの構成サマリーを開きます。 または、**「構成」**タブをクリックして、最新のアプリケーション・リビジョンの構成サマリーを開くこともできます。
- 「構成」 タブで、 「環境変数」 タブをクリックします。
- **「環境変数の追加 (Add environment variable)」**をクリックします。 この環境変数をリテラル値として定義します。 名前に
TARGET、値にStrangerを入力します。 **「追加」**をクリックします。 - Deploy をクリックして変更を保存し、アプリケーションリビジョンをデプロイします。
- アプリケーションの状況が**「準備完了 (Ready)」**に変わったら、アプリケーションのリビジョンをテストできます。 **「アプリケーションのテスト (Test application)」をクリックしてから、「アプリケーションのテスト (Test application)」ペインで「要求の送信」をクリックします。 Web ページでアプリケーションを開くには、「アプリケーション URL (Application
URL)」**をクリックします。 このアプリでは、
Hello Strangerが表示されます。
この例では、アプリの環境変数を更新しました。 「コード」タブで、別のイメージや別のイメージ・ビルドを参照するなど、アプリのその他の構成設定を更新することもできます。 「リソース」&「スケーリング」 タブから、アプリの メモリー および アプリケーション・スケーリング 設定を更新できます。 **「環境変数」**タブで、アプリの環境変数を追加または更新できます。 「イメージ開始オプション (Image start options)」 タブで、 コマンドおよび引数 を追加または更新してコンテナー・イメージ内の設定をオーバーライドしたり、 活性プローブおよび作動可能プローブの処理 を行ったりすることができます。
コンソールからプロジェクト専用エンドポイントを使用するためのアプリの更新
デフォルトでは、アプリをデプロイすると、アプリは、パブリック・インターネット、プライベート・ネットワーク、またはプロジェクト内のコンポーネントから要求を受信できるようにデプロイされます。 このアプリケーションの可視性を変更して、同じ Code Engine 環境で実行されている他の Code Engine リソースからのみアクセスされるようにしましょう。 Domain mappings(ドメインマッピング) タブを使用して、アプリの可視性を変更します。
-
アプリケーション・ページにナビゲートします。 アプリケーション・ページにナビゲートする方法の 1 つは、以下のとおりです。
- Code Engine プロジェクト・ページを見つけます。
- プロジェクト名をクリックすると、概要ページが開きます。
- **「アプリケーション」**をクリックして、アプリケーションのリストを開きます。 アプリケーションの名前をクリックして、そのアプリケーション・ページを開きます。
-
アプリケーション・ページから、アプリケーションの実行中のインスタンスとそのリビジョン、構成の詳細、およびアプリケーションのエンドポイント設定に関する情報を表示できます。 ドメインマッピング] タブをクリックして、アプリケーションのエンドポイント可視性設定を開きます。
-
Domain mappings(ドメインマッピング) タブで、アプリケーションで利用可能なURLを確認します。
Publicを選択すると、アプリケーションのパブリック・システム・ドメインと内部システム・ドメインのマッピング URL を表示できます。 No external system domain mapping(外部システムドメインマッピングなし )」を選択すると、このアプリケーションはパブリックインターネットからアクセスできなくなり、このプロジェクト内のコンポーネントからのみネットワークアクセスが可能になります。アプリの可視性を変更すると、変更は即座に有効になります。 アクティブ・ユーザーまたは統合に対する変更の影響と、セキュリティーへの影響を考慮することが重要です。 可視性の設定は、必要に応じて変更できます。
コンソールからプライベート・エンドポイントを使用するためのアプリの更新
デフォルトでは、アプリをデプロイすると、アプリは、パブリック・インターネット、プライベート・ネットワーク、またはプロジェクト内のコンポーネントから要求を受信できるようにデプロイされます。 このアプリの可視性を変更して、同じプロジェクトで実行されている他のCode Engineリソースと、仮想プライベート・エンドポイントを使用してプライベート・ネットワークからのみアクセスされるようにしましょう。 Domain mappings(ドメインマッピング) タブを使用して、アプリの可視性を変更します。
-
アプリケーション・ページにナビゲートします。 アプリケーション・ページにナビゲートする方法の 1 つは、以下のとおりです。
- Code Engine プロジェクト・ページを見つけます。
- プロジェクト名をクリックすると、概要ページが開きます。
- **「アプリケーション」**をクリックして、アプリケーションのリストを開きます。 アプリケーションの名前をクリックして、そのアプリケーション・ページを開きます。
-
アプリケーション・ページから、アプリケーションの実行中のインスタンスとそのリビジョン、構成の詳細、およびアプリケーションのエンドポイント設定に関する情報を表示できます。 ドメインマッピング] タブをクリックして、アプリケーションのエンドポイント可視性設定を開きます。
-
Domain mappings(ドメインマッピング) タブで、アプリケーションで利用可能なURLを確認します。
Privateを選択すると、このアプリケーションはもうパブリック・インターネットからアクセスできなくなり、このプロジェクト内のコンポーネント (クラスター・ローカル) およびプライベート・ネットワークからのみネットワーク・アクセスが可能になります。私用をクリックして、アプリのエンドポイントの可視性を変更します。 エンドポイント定義で使用可能な URL は、プライベート URL とプロジェクト専用 URL に対して表示されます。
-
仮想プライベート・エンドポイント (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を参照してください。
-
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 -
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% が、アプリの最新リビジョンを実行していることにも注目してください。 -
アプリケーションを呼び出します。
curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud出力例
Hello Strangerこのコマンドの出力で、更新されたアプリによって
Hello Strangerが返されることを確認できます。 -
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 を使用したアプリケーションのデプロイで作成したアプリケーションを更新して、プロジェクト・エンドポイントを使用するようにアプリの可視性を変更します。
-
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 -
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 を使用したアプリケーションのデプロイで作成したアプリケーションを更新して、プライベート・エンドポイントを使用するようにアプリの可視性を変更します。
-
既存のプロジェクトが、プライベート可視性を持つアプリケーションをサポートしていることを確認します。
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 -
Application Private Visibility Supportedがtrueの場合は、プライベート・エンドポイントを使用するようにアプリを更新できます。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 -
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% が、アプリの最新リビジョンを実行していることにも注目してください。 -
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 プロジェクト・ページを見つけます。
- プロジェクト名をクリックすると、概要ページが開きます。
- **「アプリケーション」**をクリックして、アプリケーションのリストを開きます。 アプリケーションの名前をクリックして、アプリケーション・ページを開きます。
-
最新のアプリケーション・リビジョンの設定詳細を開くには、 「Configuration」 タブをクリックします。
-
「構成」 タブで、 「コード」 タブをクリックします。
-
「イメージ」を実行するには、 「イメージの構成」 をクリックして「イメージの構成」ダイアログを開きます。 この例では、既存の
ibmcregistryレジストリーを参照するようアプリを更新し、mynamespace2名前空間を選択し、helloworld-repoイメージを選択し、1の値としてtagを選択します。 「イメージの構成」ページで、以下を行います。- 使用するイメージが同じ Container Registry アカウントに存在する場合、レジストリーのアクセス権限を選択します。
- 使用するイメージが別のコンテナー・レジストリー・アカウントに存在する場合は、このレジストリーのレジストリー・アクセス権限を選択できます。 レジストリー・アクセス権限が存在しない場合は、まず IAM API キーを作成してから、Code Engine にレジストリー・アクセス権限を追加する必要があります。
イメージのレジストリ・アクセスだけを更新したい場合は、 [イメージの設定] をクリックせずに、[イメージの設定]ダイアログを開き、[レジストリ・アクセス]メニューを使って既存のレジストリ・アクセスを選択するか、アプリケーションが参照するイメージのレジストリ・アクセス Code Engine を作成します。
-
「完了 (Done)」 をクリックします。 これでアプリから参照するレジストリー内のイメージが選択されました。
-
Deploy をクリックして変更を保存し、アプリのリビジョンをデプロイします。
-
アプリケーションの状況が**「準備完了 (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 イメージを参照するようにします。
-
別のイメージを Container Registry に追加します。 この例では、Container Registry の
helloworld_repo名前空間のmynamespace2イメージを追加します。 Container Registry へのイメージの追加について詳しくは、IBM Cloud Container Registry の紹介を参照してください。 -
Code Engine にレジストリー・アクセス権限を追加します。 この例では、
helloworld_repoイメージは同じアカウントに存在するので、以前に定義したmyregistryレジストリー・アクセス権限を使用します。 -
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です。REGISTRYとTAGはオプションです。REGISTRYを指定しない場合、そのデフォルトはdocker.ioです。TAGを指定しない場合、そのデフォルトはlatestです。 -
アプリが更新されたら、アプリにアクセスできます。 アプリの URL を入手するには、
ibmcloud ce app get --name myhelloapp --output urlを実行します。myhelloappアプリを curl すると、アプリはHello World from Code Engineを返します。これは、アプリが現在helloworld_repoイメージを使用していることを示します。
ソース・コードからビルドされたイメージを参照するようにアプリをコンソールで更新する
Code Engine コンソールを使用して、ソース・コードからビルドされたイメージを参照するようにアプリケーションを更新します。
例えば、helloappコンテナー・レジストリーにあるイメージを参照するアプリケーションをコンソールでデプロイするで作成した を、ソース・コードからビルドされたイメージを参照するように更新してみましょう。
コンソールからビルド構成を作成する方法について詳しくは、ビルドの作成を参照してください。
- アプリケーション・ページにナビゲートします。 アプリケーション・ページにナビゲートする方法の 1 つは、以下のとおりです。
- Code Engine プロジェクト・ページを見つけます。
- プロジェクト名をクリックすると、概要ページが開きます。
- **「アプリケーション」**をクリックして、アプリケーションのリストを開きます。 アプリケーションの名前をクリックして、アプリケーション・ページを開きます。
- 最新のアプリケーション・リビジョンの設定詳細を開くには、 「Configuration」 タブをクリックします。
- 「構成」 タブで、 「コード」 タブをクリックします。
- **「コード」タブで、イメージ・ビルドを作成したり、アプリケーションによって参照される既存のイメージ・ビルドを再実行したりすることができます。 イメージ・ビルドを作成するには、「ソースからイメージを作成 (Create image from source)」をクリックしてイメージ・ビルドを実行します。 「ビルドの詳細を指定 (Specify build details)」ページが開きます。ここでビルドの詳細を入力して、ソース・コードからアプリをデプロイすることができます。 ビルド詳細の更新が指定されたら、「完了」**をクリックします。
- Deployをクリックして変更を保存し、ビルドを実行し、アプリのリビジョンをデプロイします。
- アプリケーションの状況が**「準備完了 (Ready)」**に変わったら、アプリのリビジョンをテストできます。 **「アプリケーションのテスト (Test application)」をクリックしてから、「アプリケーションのテスト (Test application)」ペインで「要求の送信」をクリックします。 Web ページでアプリケーションを開くには、「アプリケーション URL (Application URL)」**をクリックします。
- 更新されたビルド・イメージを参照するようにこのアプリケーションを再度更新するには、 「コード」 タブで 「ビルドの再実行」 をクリックし、更新されたビルド・イメージに固有のイメージ・タグを指定します。 ビルド詳細をさらに変更する場合は、**「ビルド詳細の編集」をクリックします。 「ビルドの詳細を指定 (Specify build details)」ページが開きます。ここでビルドの詳細を入力して、ソース・コードからアプリをデプロイすることができます。 ビルド詳細の更新が指定されたら、「完了」**をクリックします。
- 変更を保存してビルドを実行し、アプリのリビジョンをデプロイするには、 デプロイをクリックします。
- アプリケーションの状況が**「準備完了 (Ready)」**に変わったら、アプリのリビジョンをテストできます。 **「アプリケーションのテスト (Test application)」をクリックしてから、「アプリケーションのテスト (Test application)」ペインで「要求の送信」をクリックします。 Web ページでアプリケーションを開くには、「アプリケーション URL (Application URL)」**をクリックします。
ソース・コードからビルドされたイメージを参照するようにアプリを CLI で更新する
Code Engine CLI を使用して、ソース・コードからビルドされたイメージを参照するようにアプリケーションを更新します。
この例では、myhelloappCLI によるコンテナー・レジストリー内の別のイメージを参照するためのアプリの更新で更新した を変更して、ソース・コードからビルドされた別のイメージが参照されるようにします。
上記の例で、myhelloapp アプリは、us.icr.io/mynamespace2/helloworld_repo アクセス情報を使用して myregistry を参照しています。 ビルド構成を作成し、ビルドを実行し、ソース・コードからビルドされたイメージを参照するように myhelloapp を更新することにします。
-
ビルド構成を作成します。 例えば、以下の**
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 -
ビルドを実行します。 次の例は、
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-helloworldCLI を使用してビルド構成を作成する方法について詳しくは、ビルドの作成を参照してください。
-
myhelloappのレジストリー・シークレットを使用してビルドしたイメージを参照するように、myregistryを更新します。ibmcloud ce app update --name myhelloapp --image us.icr.io/mynamespace/codeengine-helloworld --registry-secret myregistry -
更新されたアプリに関する情報を表示して、参照されているイメージがビルドしたイメージであることを確認します。
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 [...]