すべてのプロダクト
Search
ドキュメントセンター

Serverless App Engine:アプリケーションライフサイクル管理の設定

最終更新日:Sep 03, 2024

Kubernetesに精通していて、アプリケーションコンテナーを起動または停止する前に特定の操作を実行したい場合は、アプリケーションのライフサイクル管理を設定できます。 たとえば、コンテナが実行される前にリソースをデプロイしたり、コンテナが停止する前にアプリケーションを正常にシャットダウンしたりします。 このトピックでは、Serverless App Engine (SAE) でアプリケーションライフサイクル管理を設定する方法について説明します。

背景情報

SAEのアプリケーションに対して次の設定を実行できます。

  • PostStart設定: アプリケーションコンテナーが作成された後、リソースをデプロイするタスクを作成したり、環境を準備したりします。

  • PreStop Settings: アプリケーションを正常にシャットダウンし、アプリケーションコンテナーを停止する前に他のシステムに通知するタスクを作成します。

  • TerminationGracePeriodSeconds設定: アプリケーションインスタンスのタイムアウト期間を指定します。 指定されたタイムアウト期間が経過すると、SAEはインスタンスを強制的に停止します。

手順

アプリケーション作成時のアプリケーションライフサイクル管理の構成

  1. SAEコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。 上部のナビゲーションバーで、リージョンを選択します。 次に、[アプリケーションの作成] をクリックします。

  3. では、基本情報ステップ、パラメータを設定し、次条: アプリケーションの配置設定.

  4. では、デプロイの設定ステップを設定し、Technology Stackプログラミング言语アプリケーションの配置方法パラメータと対応する設定。

  5. [アプリケーションライフサイクル管理] セクションで、必要に応じてパラメーターを設定します。

    説明

    スクリプト: 1行目はコマンド、2行目はパラメータです。 複数のパラメータを改行で区切ります。 空白行を入力しないでください。

    • PostStart設定を設定します。

      スクリプトエディターで、カスタムPostStartコマンドを入力します。

      Sample PostStart configuration

    • PreStop設定を設定します。

      スクリプトエディターで、カスタムPostStartコマンドを入力します。

      Sample PreStop configuration

    • TerminationGracePeriodSeconds設定を設定します。

      [Graceful Shutdownのタイムアウト期間] フィールドで、タイムアウト期間を指定します。 最大値: 600。 単位は秒です。

      sc_termination_grace_period_seconds_300s

    説明
    • PostStartはコンテナフックです。 コンテナーが作成された直後にフックがトリガーされます。 フックは、コンテナが作成されたことをKubernetesに通知します。 フックは、対応するフックハンドラにパラメータを渡しません。 対応するフックハンドラの実行に失敗した場合、コンテナは停止し、コンテナの再起動ポリシーを使用して、コンテナを再起動するかどうかを判断します。 詳細については、「コンテナーライフサイクルフック」をご参照ください。

    • PreStopはコンテナフックです。 コンテナが削除される前にフックがトリガーされます。 コンテナの削除要求がDockerデーモンに送信される前に、対応するフックハンドラを完全に実行する必要があります。 Dockerデーモンは, 該当するフックハンドラの実行結果にかかわらず, SGTERNセマフォを自らに送信してコンテナを削除します。 詳細については、「コンテナーライフサイクルフック」をご参照ください。

  6. [次へ: 仕様の確認] をクリックします。

  7. 仕様の確認ステップで、アプリケーションの詳細と選択した仕様の料金を表示します。 次に、[確認] をクリックします。

    作成完了ステップが表示されます。 [アプリケーションの詳細] をクリックすると、アプリケーションの [基本情報] ページに移動できます。

  8. 結果を確認します。

    たとえば、アプリケーションを起動する前に、スクリプトにHello from the postStart handlerと記述します。

    次のスクリプトは、PostStart設定のサンプルを示しています。

    /bin/sh
    -c
    echo "Hello from the postStart handler" > /usr/share/message 

    アプリケーションをデプロイした後、webshellを使用して、Hello from the postStartハンドラースクリプトが存在するかどうかを確認します。 スクリプトが存在する場合、設定は成功です。

    Successful verification

アプリケーションのデプロイ時のアプリケーションライフサイクル管理の構成

警告

アプリケーションを再デプロイすると、アプリケーションは再起動されます。 業務中断などの予測できないエラーを防ぐため、オフピーク時にアプリケーションをデプロイすることを推奨します。

アプリケーションを更新するために実行できる手順は、アプリケーション内のインスタンスの数によって異なります。 このセクションでは、インスタンス数が1以上のアプリケーションに必要な機能を設定する方法の例を示します。 インスタンス数が0のアプリケーションの更新方法については、「アプリケーションの更新」をご参照ください。

  1. SAEコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。 上部のナビゲーションバーで、リージョンを選択します。 次に、アプリケーションの名前をクリックします。

  3. の右上隅に基本情報ページをクリックします。アプリケーションのデプロイ.

  4. [アプリケーションライフサイクル管理] セクションで、必要に応じてパラメーターを設定します。

    説明

    スクリプト: 1行目はコマンド、2行目はパラメータです。 複数のパラメータを改行で区切ります。 空白行を入力しないでください。

    • PostStart設定を設定します。

      スクリプトエディターで、カスタムPostStartコマンドを入力します。

      Sample PostStart configuration

    • PreStop設定を設定します。

      スクリプトエディターで、カスタムPostStartコマンドを入力します。

      Sample PreStop configuration

    • TerminationGracePeriodSeconds設定を設定します。

      [Graceful Shutdownのタイムアウト期間] フィールドで、タイムアウト期間を指定します。 最大値: 600。 単位は秒です。

      sc_termination_grace_period_seconds_300s

    説明
    • PostStartはコンテナフックです。 コンテナーが作成された直後にフックがトリガーされます。 フックは、コンテナが作成されたことをKubernetesに通知します。 フックは、対応するフックハンドラにパラメータを渡しません。 対応するフックハンドラの実行に失敗した場合、コンテナは停止し、コンテナの再起動ポリシーを使用して、コンテナを再起動するかどうかを判断します。 詳細については、「コンテナーライフサイクルフック」をご参照ください。

    • PreStopはコンテナフックです。 コンテナが削除される前にフックがトリガーされます。 コンテナの削除要求がDockerデーモンに送信される前に、対応するフックハンドラを完全に実行する必要があります。 Dockerデーモンは, 該当するフックハンドラの実行結果にかかわらず, SGTERNセマフォを自らに送信してコンテナを削除します。 詳細については、「コンテナーライフサイクルフック」をご参照ください。

  5. 設定後、[確認] をクリックします。

  6. 結果を確認します。

    たとえば、アプリケーションを起動する前に、スクリプトにHello from the postStart handlerと記述します。

    次のスクリプトは、PostStart設定のサンプルを示しています。

    /bin/sh
    -c
    echo "Hello from the postStart handler" > /usr/share/message 

    アプリケーションをデプロイした後、webshellを使用して、Hello from the postStartハンドラースクリプトが存在するかどうかを確認します。 スクリプトが存在する場合、設定は成功です。

    Successful verification