|
从 AWS 上的 Red Hat OpenShift 服务 4.14 版本开始,DeploymentConfig 对象已弃用。DeploymentConfig 对象仍然受支持,但不推荐用于新安装。只有与安全相关的和关键问题才会被修复。
请改用Deployment 对象或其他替代方案来为 Pod 提供声明性更新。
|
基于复制控制器,AWS 上的 Red Hat OpenShift 服务通过DeploymentConfig
对象的理念增加了对软件开发和部署生命周期的扩展支持。在最简单的情况下,DeploymentConfig
对象创建一个新的复制控制器并让它启动 Pod。
但是,来自DeploymentConfig
对象的 AWS 上的 Red Hat OpenShift 服务部署还提供了从现有镜像部署转换到新部署以及定义在创建复制控制器之前或之后运行的挂钩的能力。
DeploymentConfig
部署系统提供以下功能:
-
一个DeploymentConfig
对象,它是运行应用程序的模板。
-
响应事件驱动自动部署的触发器。
-
用户可自定义的部署策略,用于从旧版本转换到新版本。策略在一个通常称为部署过程的 Pod 内运行。
-
一组钩子(生命周期钩子),用于在部署生命周期的不同阶段执行自定义行为。
-
应用程序的版本控制,以便在部署失败时手动或自动回滚。
-
手动复制扩展和自动扩展。
创建DeploymentConfig
对象时,会创建一个表示DeploymentConfig
对象 Pod 模板的复制控制器。如果部署发生更改,则会创建一个包含最新 Pod 模板的新复制控制器,并运行一个部署过程以缩减旧复制控制器并扩展新复制控制器。
随着应用程序实例的创建,它们会自动添加到服务负载均衡器和路由器中,并从中移除。只要您的应用程序在收到TERM
信号时支持优雅关闭,您就可以确保正在运行的用户连接有机会正常完成。
AWS 上的 Red Hat OpenShift 服务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 策略可在部署之间实现无停机时间过渡。 |