アプリの作成に失敗するのはなぜですか?

アプリを作成することはできません。 CLI で ibmcloud ce app create コマンドを実行するか、コンソールでアプリをデプロイすると、アプリケーションの作成が正常に完了せず、failed または revision failed のエラー・メッセージが表示されます。

アプリを作成できない場合は、以下のいずれかのケースが当てはまるかどうか確認してください。

  1. アプリの名前がプロジェクト内で固有ではありません。 Application 'myapp' already exists within project 'myproj', please select a unique name. というエラー・メッセージを受け取ります。

  2. アプリの名前が無効です。 An application name must consist of lowercase alphanumeric characters, '-' and must start with an alphabetic character and end with an alphanumeric character. というエラー・メッセージを受け取ります。

  3. 参照したイメージが存在しない場合、アプリの作成は完了せず、エラーが発生します。 Unable to pull the image というエラー・メッセージを受け取ります。

  4. 参照されているイメージにアクセスするための許可がない場合、アプリの作成は完了せず、エラーが発生します。 Unable to pull the image というエラー・メッセージを受け取ります。

  5. メモリー設定または CPU 設定が無効です。 memory parameter must be between .25 G and 32 G または cpu parameter must be between .0125 and 8.0 というエラー・メッセージを受け取ります。アプリの Code Engine 制限について詳しくは、Code Engine のアプリケーションの制限およびデフォルトを参照してください。

  6. アプリまたはアプリ・リビジョンのリソース割り当て量に達したため、アプリ (またはアプリ・リビジョン) は作成されません。Code Engineには、アプリの割り当て量と、プロジェクト内のアプリの改訂があります。 Code Engine の制限について詳しくは、プロジェクトの割り当て量を参照してください。

  7. アプリのイメージが Docker Hub にあり、 Docker プル・レート制限に達したことを示す類似のエラー・メッセージを受け取る場合。

    429 Too Many Requests - Server message: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit ”
    

以下のいずれかの解決策を試してください。

  1. アプリの名前がプロジェクト内で固有であるかどうかを判別するには、ibmcloud ce app list コマンドを使用してすべての定義済みアプリをリストし、同じ名前のアプリが存在するかどうかを確認します。 同じ名前のアプリが存在する場合、ibmcloud ce app delete --name APP_NAME を使用して、古いアプリを削除します。 アプリの名前は、プロジェクト内で固有でなければなりません。

  2. アプリの名前が有効であることを確認するには、アプリの名前が小文字の英数字と「-」で構成され、名前の先頭と末尾が英字になっていることを確認します。

  3. アプリのイメージが存在することを確認するには、エラー・メッセージで障害に関する情報を確認します。

    a. Code Engineにアプリケーションをデプロイするには、まず、アプリケーションが実行する必要があるすべてのランタイム成果物 (ランタイム・ライブラリーなど) を含むコンテナー・イメージを作成する必要があります。 このイメージを作成するために、さまざまな方式を利用できます。例えば、Code Engine に用意されているコンテナー・イメージ作成機能を使用して、ソース・コードからアプリを作成できます。 イメージは、パブリックまたはプライベートのどちらのイメージ・レジストリーからでもダウンロードできます。 プライベート・レジストリーにアクセスする方法について詳しくは、プライベート・コンテナー・レジストリーへのアクセス権限の追加を参照してください。

    b. Code Engine CLI で app create コマンドを使用する場合、アプリケーションに使用するイメージの名前を REGISTRY/NAMESPACE/REPOSITORY:TAG の形式で指定します。ここで、REGISTRYTAG は任意指定です。 REGISTRY を指定しない場合、そのデフォルトは docker.io です。 TAG を指定しない場合、そのデフォルトは latest です。 イメージのリポジトリーを指定するために使用するフォーマットについて詳しくは、ibmcloud ce app create コマンドを参照してください。

  4. 参照されているイメージにアクセスできることを確認するには、イメージの場所を確認し、イメージにアクセスするための許可があることを確認します。

    イメージが Docker Hub や IBM Cloud Container Registry などのコンテナ・イメージ・レジストリにある場合は、レジストリ・アクセスを Code Engine に追加したことと、正しいレジストリ・シークレットを使用していることを確認します。 コンテナー・イメージ・レジストリーでのイメージの処理について詳しくは、プライベート・コンテナー・レジストリーへのアクセス権限の追加を参照してください。

  5. --memory コマンドで --cpu オプションまたは app create オプションを指定する場合は、有効な値を使用していることを確認します。 例えば、次のコマンドで --memory--cpu に対して指定されている値は無効です。

    ibmcloud ce app create --name myapp  --image icr.io/codeengine/codeengine --memory 50Gi --cpu 20
    

    出力例

    Creating application 'myapp'...
    FAILED
    memory parameter must be between 128Mi and 32Gi
    cpu parameter must be between .01 and 8.0
    

    このエラーを修正するには、--memory オプションを 128 Mi から 32 Gi までの値に設定し、--cpu オプションを 0.01 から 8.0 までの vCPU 値に設定します。

  6. リソース割り当て量を超過したことを示すエラー・メッセージを受け取った場合は、アプリまたはアプリ・リビジョンを削除すると、追加のアプリまたはアプリ・リビジョンをデプロイできるようになります。

    • アプリケーションを管理するには、ibmcloud ce app listコマンドを使用して、現行プロジェクト内のすべてのアプリケーションのリストを表示します。 ibmcloud ce app delete コマンドを使用して、必要に応じてアプリを削除します。

    • アプリ・リビジョンを管理するには、ibmcloud ce revision listコマンドを使用してすべてのアプリ・リビジョンを表示します。

  7. Docker ハブのレート制限の問題に対処するには、以下のアクションを実行します。

    • レート制限を増やすには、 Docker Hub で認証します。 Docker レート制限に注意してください。

    • Docker Hub からイメージをプルし、別のレジストリー ( IBM Cloud® Container Registryなど) にイメージを公開します。 次に、新しい場所からイメージをプルします。

これらの解決策で問題が解決しない場合は、さらに詳しくデバッグするために、アプリのログまたはシステム・イベント情報を取得してみてください。 詳しくは、アプリのログを取得するにはどうすればよいですか? および アプリのシステム・イベント情報を取得するにはどうすればよいですか? を参照してください。

アプリの操作について詳しくは、アプリのデプロイを参照してください。