第 9 章 Deployments
9.1. 部署如何工作
9.1.1. 部署是什么?
OpenShift Container Platform 部署提供对常见用户应用程序的精细管理。它们使用三个独立的 API 对象进行描述:
- 部署配置,它将应用程序特定组件的所需状态描述为 pod 模板。
- 一个或多个复制控制器,其中包含部署配置状态作为 pod 模板的时间点记录。
- 一个或多个 pod,,表应用程序某一特定版本的实例。
重要
用户不需要操作由部署配置拥有的复制控制器或 pod。部署系统可确保正确传播对部署配置的更改。如果现有部署策略不适用于您的用例,而且您需要在部署的生命周期内执行手动步骤,那么应考虑创建自定义策略。
在创建部署配置时,会创建一个复制控制器来代表部署配置的 pod 模板。如果部署配置更改,则使用最新的 pod 模板创建一个新的复制控制器,并运行部署过程来缩减旧复制控制器并扩展新的复制控制器。
在创建时,自动从服务负载均衡器和路由器中添加和移除应用程序的实例。只要您的应用程序支持收到 TERM 信号时 安全关闭,您可以确保运行的用户连接能够正常完成。
部署系统提供的功能:
9.1.2. 创建部署配置
部署配置是 deploymentConfig
OpenShift Container Platform API 资源,可以像任何其他资源一样通过 oc
命令进行管理。以下是 deploymentConfig
资源的示例:
kind: "DeploymentConfig" apiVersion: "v1" metadata: name: "frontend" spec: template: 1 metadata: labels: name: "frontend" spec: containers: - name: "helloworld" image: "openshift/origin-ruby-sample" ports: - containerPort: 8080 protocol: "TCP" replicas: 5 2 triggers: - type: "ConfigChange" 3 - type: "ImageChange" 4 imageChangeParams: automatic: true containerNames: - "helloworld" from: kind: "ImageStreamTag" name: "origin-ruby-sample:latest" strategy: 5 type: "Rolling" paused: false 6 revisionHistoryLimit: 2 7 minReadySeconds: 0 8
- 1
frontend
部署配置的 pod 模板描述了一个简单的 Ruby 应用程序。- 2
frontend
将有 5 个副本。- 3
- 配置更改触发器会在每次 Pod 模板更改时创建新复制控制器。
- 4
- 镜像更改触发器会在每次有新版本的
origin-ruby-sample:latest
镜像流标签时触发新复制控制器的创建。 - 5
- Rolling 策略是部署 Pod 的默认方法。可以省略。
- 6
- 暂停部署配置。这将禁用所有触发器的功能,并允许在实际部署 pod 模板前对 pod 模板进行多次更改。
- 7
- 修订历史记录限制是您要保留的旧复制控制器的限制,用于回滚。可以省略。如果省略,则不会清理旧的复制控制器。
- 8
- pod 被视为可用前等待的最短秒数(在就绪度检查成功后)。默认值为 0。