搜索

第 9 章 Deployments

download PDF

9.1. 部署如何工作

9.1.1. 部署是什么?

OpenShift Container Platform 部署提供对常见用户应用程序的精细管理。它们使用三个独立的 API 对象进行描述:

  • 部署配置,它将应用程序特定组件的所需状态描述为 pod 模板。
  • 一个或多个复制控制器,其中包含部署配置状态作为 pod 模板的时间点记录。
  • 一个或多个 pod,,表应用程序某一特定版本的实例。
重要

用户不需要操作由部署配置拥有的复制控制器或 pod。部署系统可确保正确传播对部署配置的更改。如果现有部署策略不适用于您的用例,而且您需要在部署的生命周期内执行手动步骤,那么应考虑创建自定义策略

在创建部署配置时,会创建一个复制控制器来代表部署配置的 pod 模板。如果部署配置更改,则使用最新的 pod 模板创建一个新的复制控制器,并运行部署过程来缩减旧复制控制器并扩展新的复制控制器。

在创建时,自动从服务负载均衡器和路由器中添加和移除应用程序的实例。只要您的应用程序支持收到 TERM 信号时 安全关闭,您可以确保运行的用户连接能够正常完成。

部署系统提供的功能:

  • 部署配置,这是用于运行应用程序的模板。
  • 为响应事件而触发自动化部署的触发器
  • User-customizable strategies,用于从上一版本过渡到新版本。在 pod 内运行的策略,通常称为部署过程。
  • 一组 hook,用于在部署生命周期的不同点上执行自定义行为。
  • 应用程序的版本控制,以便在部署失败时支持手动或自动的回滚
  • 手动复制扩展自动扩展

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。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.