3.10.3. OpenShift クラスターオブジェクト

3.10.3.1. Init コンテナー

init コンテナーはアプリケーションコンテナーが起動する前に実行される特殊なコンテナーであり、アプリケーションコンテナーの実行に必要な環境を設定します。init コンテナーには、アプリケーションイメージにないファイル (設定スクリプトなど) を含めることができます。Init コンテナーは常に完了するまで実行され、Init コンテナーのいずれかに障害が発生した場合にはアプリケーションコンテナーは起動しません。

odo によって作成された Pod は 2 つの Init コンテナーを実行します。

  • copy-supervisord Init コンテナー。
  • copy-files-to-volume Init コンテナー。
3.10.3.1.1. copy-supervisord

copy-supervisord Init コンテナーは必要なファイルを emptyDir ボリュームにコピーします。メインのアプリケーションコンテナーはこれらのファイルを emptyDir ボリュームから使用します。

emptyDir ボリュームにコピーされるファイル:

  • バイナリー:

    • go-init は最小限の init システムです。アプリケーションコンテナー内の最初のプロセス (PID 1) として実行されます。go-init は、開発者コードを実行する SupervisorD デーモンを起動します。go-init は、孤立したプロセスを処理するために必要です。
    • SupervisorD はプロセス制御システムです。これは設定されたプロセスを監視し、それらが実行中であることを確認します。また、必要に応じてサービスを再起動します。odo の場合、SupervisorD は開発者コードを実行し、監視します。
  • 設定ファイル:

    • supervisor.conf は、SupervisorD デーモンの起動に必要な設定ファイルです。
  • スクリプト:

    • assemble-and-restart は、ユーザーソースコードをビルドし、デプロイするための OpenShift S2I の概念です。assemble-and-restart スクリプトは、まずアプリケーションコンテナー内でユーザーソースコードをアセンブルしてから、ユーザーの変更を有効にするために SupervisorD を再起動します。
    • Run は、アセンブルされたソースコードを実行することに関連した OpenShift S2I の概念です。run スクリプトは assemble-and-restart スクリプトで作成されたアセンブルされたコードを実行します。
    • s2i-setup は、assemble-and-restart および run スクリプトが正常に実行されるために必要なファイルおよびディレクトリーを作成するスクリプトです。このスクリプトは、アプリケーションのコンテナーが起動されるたびに実行されます。
  • ディレクトリー:

    • language-scripts: OpenShift S2I はカスタムの assemble および run スクリプトを許可します。language-scripts ディレクトリーにいくつかの言語固有のカスタムスクリプトがあります。カスタムスクリプトは、odo のデバッグを機能させる追加の設定を提供します。

emtpyDir ボリュームは、Init コンテナーとアプリケーションコンテナーの両方の /opt/odo マウントポイントにマウントされます。

3.10.3.1.2. copy-files-to-volume

copy-files-to-volume Init コンテナーは、S2I ビルダーイメージの /opt/app-root にあるファイルを永続ボリュームにコピーします。次に、ボリュームはアプリケーションコンテナーの同じ場所 (/opt/app-root) にマウントされます。

永続ボリュームが /opt/app-root にないと、このディレクトリーのデータは、永続ボリューム要求 (PVC) が同じ場所にマウントされる際に失われます。

PVC は、Init コンテナー内の /mnt マウントポイントにマウントされます。