9.5.2. Kubernetes デプロイメント 対 デプロイメント設定
デプロイメントが Kurbernetes 1.2 に追加される前にデプロイメント設定が OpenShift Container Platform に存在していたために、Kurbenetes のオブジェクトタイプは OpenShift Container Platform の設定とは若干異なっています。OpenShift Container Platform の長期的な目標は、Kubernetes デプロイメントと全く同等な機能を実現し、アプリケーションの詳細な管理を可能にする単一オブジェクトタイプとしてそれらのデプロイメントを使用する方法に切り替えることにあります。
新規オブジェクトタイプを使用するアップストリームのプロジェクトや例が OpenShift Container Platform でスムーズに実行できるように、Kubernetes デプロイメントはサポートされます。Kubernetes デプロイメントの現在の機能を考慮すると、特に以下のいずれかを使用する予定がない場合には、OpenShift Container Platform デプロイメント設定の代わりに、Kubernetes デプロイメントを使用すると良いでしょう。
以下のセクションでは、2 つのオブジェクトタイプの相違点に関してさらに扱います。 これは、デプロイメント設定ではなく、Kubernetes デプロイメントを使用する場合を判別するのに役立ちます。
9.5.2.1. デプロイメント設定固有の機能
9.5.2.1.1. 自動ロールバック
Kubernetes デプロイメントは、問題が発生した場合に、最後に正常にデプロイされたレプリカセットに自動的にロールバックされません。この機能は近日追加される予定です。
9.5.2.1.2. トリガー
Kubernetes デプロイメントには、デプロイメントの Pod テンプレートに変更があるたびに、新しいロールアウトが自動的にトリガーされるので、暗黙的な ConfigChange
トリガーが含まれています。Pod テンプレートの変更時に新たなロールアウトが不要な場合には、デプロイメントを以下のように停止します。
$ oc rollout pause deployments/<name>
現在、Kubernetes デプロイメントでは ImageChange
トリガーはサポートされません。汎用的なトリガーの仕組みがアップストリームでは提案されていますが、この提案が受け入れられるのか、また受け入れられるタイミングは不明です。最終的には、OpenShift Container Platform 固有の仕組みが、Kubernetes デプロイメントの階層の上に実装される可能性がありますが、Kubernetes コアの一部として存在させる方が適しています。
9.5.2.1.3. ライフサイクルフック
Kubernetes デプロイメントではライフサイクルフックがサポートされません。
9.5.2.1.4. カスタムストラテジー
Kubernetes デプロイメントでは、ユーザーが指定するカスタムデプロイメントストラテジーはまだサポートされていません。
9.5.2.1.5. カナリアデプロイメント
Kubernetes デプロイメントでは、新規ロールアウトの一部としてカナリアリリースは実行されません。
9.5.2.1.6. テストデプロイメント
Kubernetes デプロイメントでは、実行中のテストトラックはサポートされません。