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