7.2. デプロイメントプロセスの管理
7.2.1. DeploymentConfig オブジェクトの管理 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform 4.14 以降、DeploymentConfig オブジェクトは非推奨になりました。DeploymentConfig オブジェクトは引き続きサポートされていますが、新規インストールには推奨されません。セキュリティー関連の重大な問題のみが修正されます。
代わりに、Deployment オブジェクトまたは別の代替手段を使用して、Pod の宣言的更新を提供します。
DeploymentConfig オブジェクトは、OpenShift Container Platform Web コンソールの Workloads ページからか、oc CLI を使用して管理できます。以下の手順は、特に指定がない場合の CLI の使用法を示しています。
7.2.1.1. デプロイメントの開始 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションのデプロイメントプロセスを開始するために、ロールアウトを開始できます。
手順
既存の
DeploymentConfigから新規デプロイメントプロセスを開始するには、以下のコマンドを実行します。oc rollout latest dc/<name>
$ oc rollout latest dc/<name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記デプロイメントプロセスが進行中の場合には、このコマンドを実行すると、メッセージが表示され、新規レプリケーションコントローラーはデプロイされません。
7.2.1.2. デプロイメントの表示 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションの利用可能なすべてのリビジョンに関する基本情報を取得するためにデプロイメントを表示できます。
手順
現在実行中のデプロイメントプロセスを含む、指定した
DeploymentConfigオブジェクトに関する最近作成されたすべてのレプリケーションコントローラーの詳細を表示するには、以下を実行します。oc rollout history dc/<name>
$ oc rollout history dc/<name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow リビジョンに固有の詳細情報を表示するには、
--revisionフラグを追加します。oc rollout history dc/<name> --revision=1
$ oc rollout history dc/<name> --revision=1Copy to Clipboard Copied! Toggle word wrap Toggle overflow DeploymentConfigオブジェクトおよびその最新バージョンの詳細は、oc describeコマンドを使用します。oc describe dc <name>
$ oc describe dc <name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2.1.3. デプロイメントの再試行 リンクのコピーリンクがクリップボードにコピーされました!
現行リビジョンの DeploymentConfig がデプロイに失敗した場合、デプロイメントプロセスを再起動することができます。
手順
失敗したデプロイメントプロセスを再起動するには、以下を実行します。
oc rollout retry dc/<name>
$ oc rollout retry dc/<name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最新リビジョンのデプロイメントに成功した場合には、このコマンドによりメッセージが表示され、デプロイメントプロセスは試行されません。
注記デプロイメントを再試行すると、デプロイメントプロセスが再起動され、新しいデプロイメントリビジョンは作成されません。再起動されたレプリケーションコントローラーは、失敗したときと同じ設定を使用します。
7.2.1.4. デプロイメントのロールバック リンクのコピーリンクがクリップボードにコピーされました!
ロールバックすると、アプリケーションを以前のリビジョンに戻します。この操作は、REST API、CLI または Web コンソールで実行できます。
手順
最後にデプロイして成功した設定のリビジョンにロールバックするには、以下を実行します。
oc rollout undo dc/<name>
$ oc rollout undo dc/<name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow DeploymentConfigオブジェクトのテンプレートは、undo コマンドで指定されたデプロイメントのリビジョンと一致するように元に戻され、新規レプリケーションコントローラーが起動します。--to-revisionでリビジョンが指定されない場合には、最後に成功したデプロイメントのリビジョンが使用されます。ロールバックの完了直後に新規デプロイメントプロセスが誤って開始されないように、
DeploymentConfigオブジェクトのイメージ変更トリガーがロールバックの一部として無効にされます。イメージ変更トリガーを再度有効にするには、以下を実行します。
oc set triggers dc/<name> --auto
$ oc set triggers dc/<name> --autoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
デプロイメント設定は、最新のデプロイメントプロセスが失敗した場合の、設定の最後に成功したリビジョンへの自動ロールバックもサポートします。この場合、デプロイに失敗した最新のテンプレートはシステムで修正されないので、ユーザーがその設定の修正を行う必要があります。
7.2.1.5. コンテナー内でのコマンドの実行 リンクのコピーリンクがクリップボードにコピーされました!
コマンドをコンテナーに追加して、イメージの ENTRYPOINT を却下してコンテナーの起動動作を変更することができます。これは、指定したタイミングでデプロイメントごとに 1 回実行できるライフサイクルフックとは異なります。
手順
commandパラメーターを、DeploymentConfigオブジェクトのspecフィールドを追加します。commandコマンドを変更するargsフィールドも追加できます (またはcommandが存在しない場合には、ENTRYPOINT)。Copy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、
-jarおよび/opt/app-root/springboots2idemo.jar引数を指定して、javaコマンドを実行するには、以下を実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2.1.6. デプロイメントログの表示 リンクのコピーリンクがクリップボードにコピーされました!
手順
指定の
DeploymentConfigオブジェクトに関する最新リビジョンのログをストリームするには、以下を実行します。oc logs -f dc/<name>
$ oc logs -f dc/<name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最新のリビジョンが実行中または失敗した場合には、コマンドが、Pod のデプロイを行うプロセスのログを返します。成功した場合には、アプリケーションの Pod からのログを返します。
以前に失敗したデプロイメントプロセスからのログを表示することも可能です。ただし、これらのプロセス (以前のレプリケーションコントローラーおよびデプロイヤーの Pod) が存在し、手動でプルーニングまたは削除されていない場合に限ります。
oc logs --version=1 dc/<name>
$ oc logs --version=1 dc/<name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2.1.7. デプロイメントトリガー リンクのコピーリンクがクリップボードにコピーされました!
DeploymentConfig オブジェクトには、クラスター内のイベントに対応する新規デプロイメントプロセスの作成を駆動するトリガーを含めることができます。
トリガーが DeploymentConfig オブジェクトに定義されていない場合は、設定変更トリガーがデフォルトで追加されます。トリガーが空のフィールドとして定義されている場合には、デプロイメントは手動で起動する必要があります。
7.2.1.7.1. 設定変更デプロイメントトリガー リンクのコピーリンクがクリップボードにコピーされました!
設定変更トリガーにより、DeploymentConfig オブジェクトの Pod テンプレートで設定の変更が検出されるたびに、新規のレプリケーションコントローラーが作成されます。
設定変更トリガーが DeploymentConfig オブジェクトに定義されている場合は、DeploymentConfig オブジェクト自体が作成された直後に、最初のレプリケーションコントローラーが自動的に作成され、一時停止されません。
設定変更デプロイメントトリガー
7.2.1.7.2. イメージ変更デプロイメントトリガー リンクのコピーリンクがクリップボードにコピーされました!
イメージ変更トリガーにより、イメージストリームタグの内容が変更されるたびに、(イメージの新規バージョンがプッシュされるタイミングで) 新規レプリケーションコントローラーが作成されます。
イメージ変更デプロイメントトリガー
- 1
imageChangeParams.automaticフィールドがfalseに設定されると、トリガーが無効になります。
上記の例では、origin-ruby-sample イメージストリームの latest タグの値が変更され、新しいイメージの値が DeploymentConfig オブジェクトの helloworld コンテナーに指定されている現在のイメージと異なる場合に、helloworld コンテナーの新規イメージを使用して、新しいレプリケーションコントローラーが作成されます。
イメージ変更トリガーが DeploymentConfig で定義され (設定変更トリガーおよび automatic=false が指定されるか、automatic=true が指定される)、イメージ変更トリガーで参照されているイメージストリームタグがまだ存在していない場合、ビルドによりイメージがイメージストリームタグにインポートまたはプッシュされた直後に初回のデプロイメントプロセスが自動的に開始されます。
7.2.1.7.3. デプロイメントトリガーの設定 リンクのコピーリンクがクリップボードにコピーされました!
手順
oc set triggersコマンドを使用して、DeploymentConfigオブジェクトにデプロイメントトリガーを設定することができます。たとえば、イメージ変更トリガーを設定するには、以下のコマンドを使用します。oc set triggers dc/<dc_name> \ --from-image=<project>/<image>:<tag> -c <container_name>$ oc set triggers dc/<dc_name> \ --from-image=<project>/<image>:<tag> -c <container_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2.1.8. デプロイメントリソースの設定 リンクのコピーリンクがクリップボードにコピーされました!
デプロイメントは、ノードでリソース (メモリーおよび一時ストレージ) を消費する Pod を使用して完了します。デフォルトで、Pod はバインドされていないノードのリソースを消費します。ただし、プロジェクトにデフォルトのコンテナー制限が指定されている場合には、Pod はその上限までリソースを消費します。
デプロイメントの最小メモリー制限は 12 MB です。Cannot allocate memory Pod イベントのためにコンテナーの起動に失敗すると、メモリー制限は低くなります。メモリー制限を引き上げるか、これを削除します。制限を削除すると、Pod は制限のないノードのリソースを消費できるようになります。
デプロイメントストラテジーの一部としてリソース制限を指定して、リソースの使用を制限することも可能です。デプロイメントリソースは、Recreate、Rolling または Custom のデプロイメントストラテジーで使用できます。
手順
以下の例では、
resources、cpu、memory、およびephemeral-storageはそれぞれオプションです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ただし、クォータがプロジェクトに定義されている場合には、以下の 2 つの項目のいずれかが必要です。
明示的な
requestsで設定したresourcesセクション:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
requestsオブジェクトは、クォータ内のリソースリストに対応するリソースリストを含みます。
-
プロジェクトで定義される制限の範囲。
LimitRangeオブジェクトのデフォルト値がデプロイメントプロセス時に作成される Pod に適用されます。
デプロイメントリソースを設定するには、上記のいずれかのオプションを選択してください。それ以外の場合は、デプロイ Pod の作成は、クォータ基準を満たしていないことを示すメッセージを出して失敗します。
7.2.1.9. 手動のスケーリング リンクのコピーリンクがクリップボードにコピーされました!
ロールバック以外に、手動スケーリングにより、レプリカの数を詳細に管理できます。
Pod は oc autoscale コマンドを使用して自動スケーリングすることも可能です。
手順
DeploymentConfigオブジェクトを手動でスケーリングするには、oc scaleコマンドを使用します。たとえば、以下のコマンドは、frontendDeploymentConfigオブジェクトを3に設定します。oc scale dc frontend --replicas=3
$ oc scale dc frontend --replicas=3Copy to Clipboard Copied! Toggle word wrap Toggle overflow レプリカの数は最終的に、
DeploymentConfigオブジェクトのfrontendで設定した希望のデプロイメントの状態と現在のデプロイメントの状態に伝播されます。
7.2.1.10. DeploymentConfig オブジェクトからのプライベートリポジトリーへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
シークレットを DeploymentConfig オブジェクトに追加し、プライベートリポジトリーからイメージにアクセスできるようにします。この手順では、OpenShift Container Platform Web コンソールを使用する方法を示します。
手順
- 新しいプロジェクトを作成する。
-
Workloads
Secrets に移動します。 - プライベートのイメージリポジトリーにアクセスするための認証情報が含まれるシークレットを作成します。
-
Workloads
DeploymentConfigs に移動します。 -
DeploymentConfigオブジェクトを作成します。 -
DeploymentConfigエディターページで、Pull Secret を設定し、変更を保存します。
7.2.1.11. 特定のノードへの Pod の割り当て リンクのコピーリンクがクリップボードにコピーされました!
ラベル付きのノードと合わせてノードセレクターを使用し、Pod の割り当てを制御することができます。
クラスター管理者は、プロジェクトに対してデフォルトのノードセレクターを設定して特定のノードに Pod の配置を制限できます。開発者は、Pod 設定にノードセレクターを設定して、ノードをさらに制限することができます。
手順
Pod の作成時にセレクターを追加するには、
Pod設定を編集し、nodeSelectorの値を追加します。これは、単一のPod設定や、Podテンプレートに追加できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードセレクターが有効な場合に作成される Pod は指定されたラベルを持つノードに割り当てられます。ここで指定されるラベルは、クラスター管理者によって追加されるラベルと併用されます。
たとえば、プロジェクトに
type=user-nodeとregion=eastのラベルがクラスター管理者により追加され、上記のdisktype: ssdラベルを Pod に追加した場合に、Pod は 3 つのラベルすべてが含まれるノードにのみスケジュールされます。注記ラベルには値を 1 つしか設定できないので、
region=eastが管理者によりデフォルト設定されているPod設定にregion=westのノードセレクターを設定すると、Pod が全くスケジュールされなくなります。
7.2.1.12. 異なるサービスアカウントでの Pod の実行 リンクのコピーリンクがクリップボードにコピーされました!
デフォルト以外のサービスアカウントで Pod を実行できます。
手順
DeploymentConfigオブジェクトを編集します。oc edit dc/<deployment_config>
$ oc edit dc/<deployment_config>Copy to Clipboard Copied! Toggle word wrap Toggle overflow serviceAccountとserviceAccountNameパラメーターをspecフィールドに追加し、使用するサービスアカウントを指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow