Kubernetesに精通していて、アプリケーションコンテナーを起動または停止する前に特定の操作を実行したい場合は、アプリケーションのライフサイクル管理を設定できます。 たとえば、コンテナが実行される前にリソースをデプロイしたり、コンテナが停止する前にアプリケーションを正常にシャットダウンしたりします。 このトピックでは、Serverless App Engine (SAE) でアプリケーションライフサイクル管理を設定する方法について説明します。
背景情報
SAEのアプリケーションに対して次の設定を実行できます。
PostStart設定: アプリケーションコンテナーが作成された後、リソースをデプロイするタスクを作成したり、環境を準備したりします。
PreStop Settings: アプリケーションを正常にシャットダウンし、アプリケーションコンテナーを停止する前に他のシステムに通知するタスクを作成します。
TerminationGracePeriodSeconds設定: アプリケーションインスタンスのタイムアウト期間を指定します。 指定されたタイムアウト期間が経過すると、SAEはインスタンスを強制的に停止します。
手順
アプリケーション作成時のアプリケーションライフサイクル管理の構成
SAEコンソールにログインします。
左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。 上部のナビゲーションバーで、リージョンを選択します。 次に、[アプリケーションの作成] をクリックします。
では、基本情報ステップ、パラメータを設定し、次条: アプリケーションの配置設定.
では、デプロイの設定ステップを設定し、Technology Stackプログラミング言语とアプリケーションの配置方法パラメータと対応する設定。
[アプリケーションライフサイクル管理] セクションで、必要に応じてパラメーターを設定します。
説明スクリプト: 1行目はコマンド、2行目はパラメータです。 複数のパラメータを改行で区切ります。 空白行を入力しないでください。
PostStart設定を設定します。
スクリプトエディターで、カスタムPostStartコマンドを入力します。
PreStop設定を設定します。
スクリプトエディターで、カスタムPostStartコマンドを入力します。
TerminationGracePeriodSeconds設定を設定します。
[Graceful Shutdownのタイムアウト期間] フィールドで、タイムアウト期間を指定します。 最大値: 600。 単位は秒です。
説明PostStartはコンテナフックです。 コンテナーが作成された直後にフックがトリガーされます。 フックは、コンテナが作成されたことをKubernetesに通知します。 フックは、対応するフックハンドラにパラメータを渡しません。 対応するフックハンドラの実行に失敗した場合、コンテナは停止し、コンテナの再起動ポリシーを使用して、コンテナを再起動するかどうかを判断します。 詳細については、「コンテナーライフサイクルフック」をご参照ください。
PreStopはコンテナフックです。 コンテナが削除される前にフックがトリガーされます。 コンテナの削除要求がDockerデーモンに送信される前に、対応するフックハンドラを完全に実行する必要があります。 Dockerデーモンは, 該当するフックハンドラの実行結果にかかわらず, SGTERNセマフォを自らに送信してコンテナを削除します。 詳細については、「コンテナーライフサイクルフック」をご参照ください。
[次へ: 仕様の確認] をクリックします。
仕様の確認ステップで、アプリケーションの詳細と選択した仕様の料金を表示します。 次に、[確認] をクリックします。
作成完了ステップが表示されます。 [アプリケーションの詳細] をクリックすると、アプリケーションの [基本情報] ページに移動できます。
結果を確認します。
たとえば、アプリケーションを起動する前に、スクリプトに
Hello from the postStart handler
と記述します。次のスクリプトは、PostStart設定のサンプルを示しています。
/bin/sh -c echo "Hello from the postStart handler" > /usr/share/message
アプリケーションをデプロイした後、webshellを使用して、
Hello from the postStartハンドラー
スクリプトが存在するかどうかを確認します。 スクリプトが存在する場合、設定は成功です。
アプリケーションのデプロイ時のアプリケーションライフサイクル管理の構成
アプリケーションを再デプロイすると、アプリケーションは再起動されます。 業務中断などの予測できないエラーを防ぐため、オフピーク時にアプリケーションをデプロイすることを推奨します。
アプリケーションを更新するために実行できる手順は、アプリケーション内のインスタンスの数によって異なります。 このセクションでは、インスタンス数が1以上のアプリケーションに必要な機能を設定する方法の例を示します。 インスタンス数が0のアプリケーションの更新方法については、「アプリケーションの更新」をご参照ください。
SAEコンソールにログインします。
左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。 上部のナビゲーションバーで、リージョンを選択します。 次に、アプリケーションの名前をクリックします。
の右上隅に基本情報ページをクリックします。アプリケーションのデプロイ.
[アプリケーションライフサイクル管理] セクションで、必要に応じてパラメーターを設定します。
説明スクリプト: 1行目はコマンド、2行目はパラメータです。 複数のパラメータを改行で区切ります。 空白行を入力しないでください。
PostStart設定を設定します。
スクリプトエディターで、カスタムPostStartコマンドを入力します。
PreStop設定を設定します。
スクリプトエディターで、カスタムPostStartコマンドを入力します。
TerminationGracePeriodSeconds設定を設定します。
[Graceful Shutdownのタイムアウト期間] フィールドで、タイムアウト期間を指定します。 最大値: 600。 単位は秒です。
説明PostStartはコンテナフックです。 コンテナーが作成された直後にフックがトリガーされます。 フックは、コンテナが作成されたことをKubernetesに通知します。 フックは、対応するフックハンドラにパラメータを渡しません。 対応するフックハンドラの実行に失敗した場合、コンテナは停止し、コンテナの再起動ポリシーを使用して、コンテナを再起動するかどうかを判断します。 詳細については、「コンテナーライフサイクルフック」をご参照ください。
PreStopはコンテナフックです。 コンテナが削除される前にフックがトリガーされます。 コンテナの削除要求がDockerデーモンに送信される前に、対応するフックハンドラを完全に実行する必要があります。 Dockerデーモンは, 該当するフックハンドラの実行結果にかかわらず, SGTERNセマフォを自らに送信してコンテナを削除します。 詳細については、「コンテナーライフサイクルフック」をご参照ください。
設定後、[確認] をクリックします。
結果を確認します。
たとえば、アプリケーションを起動する前に、スクリプトに
Hello from the postStart handler
と記述します。次のスクリプトは、PostStart設定のサンプルを示しています。
/bin/sh -c echo "Hello from the postStart handler" > /usr/share/message
アプリケーションをデプロイした後、webshellを使用して、
Hello from the postStartハンドラー
スクリプトが存在するかどうかを確認します。 スクリプトが存在する場合、設定は成功です。