|
从 OpenShift Container Platform 4.14 开始,DeploymentConfig 对象已弃用。DeploymentConfig 对象仍然受支持,但不建议用于新安装。只有安全相关和关键问题才会被修复。
请改用Deployment 对象或其他替代方案来为 Pod 提供声明性更新。
|
基于副本控制器,OpenShift Container Platform 通过DeploymentConfig
对象的概念增加了对软件开发和部署生命周期的扩展支持。在最简单的情况下,DeploymentConfig
对象创建一个新的副本控制器并让它启动 Pod。
但是,来自DeploymentConfig
对象的 OpenShift Container Platform 部署还提供了从现有映像部署过渡到新映像的功能,以及定义在创建副本控制器之前或之后运行的挂钩。
DeploymentConfig
部署系统提供以下功能:
-
一个DeploymentConfig
对象,它是运行应用程序的模板。
-
响应事件驱动自动部署的触发器。
-
用户可自定义的部署策略,用于从先前版本过渡到新版本。策略在通常称为部署过程的 Pod 内运行。
-
一组挂钩(生命周期挂钩),用于在部署生命周期的不同点执行自定义行为。
-
应用程序的版本控制,以支持在部署失败时手动或自动回滚。
-
手动副本缩放和自动缩放。
创建DeploymentConfig
对象时,会创建一个表示DeploymentConfig
对象 Pod 模板的副本控制器。如果部署发生更改,则会创建一个具有最新 Pod 模板的新副本控制器,并且会运行一个部署过程以缩减旧副本控制器并扩展新副本控制器。
随着应用程序实例的创建,它们会自动从服务负载均衡器和路由器中添加和删除。只要您的应用程序在收到TERM
信号时支持优雅关闭,您就可以确保正在运行的用户连接有机会正常完成。
OpenShift Container Platform DeploymentConfig
对象定义以下详细信息:
-
ReplicationController
定义的元素。
-
自动创建新部署的触发器。
-
部署之间过渡的策略。
-
生命周期挂钩。
每次手动或自动触发部署时,部署程序 Pod 都会管理部署(包括缩减旧副本控制器、扩展新副本控制器和运行挂钩)。部署 Pod 在完成部署后会无限期地保留,以保留其部署日志。当部署被另一个部署取代时,会保留以前的副本控制器,以便在需要时轻松回滚。
DeploymentConfig
定义示例
apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
metadata:
name: frontend
spec:
replicas: 5
selector:
name: frontend
template: { ... }
triggers:
- type: ConfigChange (1)
- imageChangeParams:
automatic: true
containerNames:
- helloworld
from:
kind: ImageStreamTag
name: hello-openshift:latest
type: ImageChange (2)
strategy:
type: Rolling (3)
1 |
配置更改触发器会在检测到部署配置的 Pod 模板中的更改时生成新的副本控制器。 |
2 |
映像更改触发器会在命名映像流中出现新版本的备份映像时创建新的部署。 |
3 |
默认的Rolling 策略可在部署之间实现无停机过渡。 |