2.2.3. OpenShift クラスターオブジェクト
2.2.3.1. Init コンテナー
init コンテナーはアプリケーションコンテナーが起動する前に実行される特殊なコンテナーであり、アプリケーションコンテナーの実行に必要な環境を設定します。init コンテナーには、アプリケーションイメージにないファイル (設定スクリプトなど) を含めることができます。Init コンテナーは常に完了するまで実行され、Init コンテナーのいずれかに障害が発生した場合にはアプリケーションコンテナーは起動しません。
odo によって作成された Pod は 2 つの Init コンテナーを実行します。
-
copy-supervisord
Init コンテナー。 -
copy-files-to-volume
Init コンテナー。
2.2.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
マウントポイントにマウントされます。
2.2.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
マウントポイントにマウントされます。