章节概述
在本节中,我们将带您了解 Cloud Foundry 中应用程序的生命周期管理。我们涵盖了平台的理想工作负载,以及故障排除的基础知识和有时出现的常见问题。
- 我们查看在 Cloud Foundry 中运行的容器化应用程序的剖析和配置输入。
- 我们查看应用程序在部署过程中经历的阶段。
- 我们着眼于在更新应用程序时可供开发人员使用的两种策略。
- 我们介绍了在 Cloud Foundry 上对应用程序进行故障排除的基础知识,包括开发人员在使用该平台时遇到的一些常见问题。
- 我们着眼于 Cloud Foundry 的理想工作负载,以及在设计和选择要在平台上运行的应用程序时的一般注意事项。
什么进入应用程序?
在我们进入推送和管理应用程序的不同方面之前,让我们回顾一下在 Cloud Foundry 中运行的应用程序的内容。
让我们讨论一下我们需要什么来运行您的应用程序并查看 Cloud Foundry 如何满足这些需求。记住 Cloud Foundry 在容器中运行应用程序实例。早在 Kubernetes 或 Docker 出现之前,它就已经这样做了。除了这些解决方案提供的功能之外,Cloud Foundry 还为您完成了创建容器映像和在适当的主机上调度容器的所有繁重工作。您只需提供您的应用程序代码和配置。
组件:
- App Code
作为开发人员,您有责任向平台提供您的应用程序代码。您可以使用 cf push 命令执行此操作。 - Runtime Dependencies
要运行您的应用程序代码,Cloud Foundry 需要运行时元素。这可能是 ruby 应用程序的解释器,Java 应用程序的 JRE(或 JRE + Tomcat),或类似 NGINX 的东西来提供静态内容。运行时依赖项在暂存过程中由一个或多个构建包提供。droplet在暂存过程中,应用程序代码和运行时依赖项组合在一个称为“”的单元中。 - stack
要运行您的应用程序实例,我们需要一个用于容器进程的文件系统。“堆栈”是用于构建容器映像的预构建文件系统。当应用程序实例启动时,通过将堆栈与液滴(应用程序 + 运行时依赖项)结合起来,“及时”创建一个容器。 - Application Configuration
配置在您的应用程序之外。(十二因素应用程序原则指导我们通过环境注入此配置)。Cloud Foundry 允许您直接设置环境变量,也可以设置一些默认值。VCAP_APPLICATION 环境变量提供有关正在运行的应用程序实例的信息,包括路由和其他运行时配置。VCAP_SERVICES 环境变量用于注入服务实例凭据和配置。 - Deployment Configuration
最后,部署配置用于指定 Cloud Foundry 的参数,包括要调度的应用程序实例(容器)的数量以及要为每个实例分配的内存和磁盘量。用于在 Cloud Foundry 中引用应用程序的应用程序名称是部署配置的一部分。应用程序路由(如果适用)也是部署配置的一部分。作为开发人员,您可以指定这些值。
总之,作为开发人员,您需要带上您的应用程序代码,告诉 Cloud Foundry 您要应用的部署配置,并可选择通过环境变量提供应用程序配置。Cloud Foundry 完成其余的工作。无需构建、审查和管理容器映像、文件系统、运行时等。
pushing
cf push 由三个阶段组成:upload, staging and starting.。 对于这些阶段中的每一个,cf push 都是发起者。
上传
- 为应用程序创建了一条记录。
- App metadata,包括名称、所需的实例数量、选定的buildpack,都存储在称为云控制器数据库 (CCDB) 的数据库中。
- 源文件已上传。 任何已存在于资源缓存中的应用程序文件都将被忽略。
- 上传的应用程序文件与资源缓存中的任何已有文件组合以创建应用程序包。
- 应用程序包已存储。
Staging
此时,CLI 发出启动应用程序的请求,但在启动应用程序之前,它需要暂存。 暂存是为您的应用程序创建容器化映像的过程。
- 选择 buildpack 来暂存应用程序(如果未指定)。
- buildpack 创建并存储包含已编译和暂存应用程序的 droplet(tarball)。 Droplet是应用程序的容器映像减去根文件系统。
- buildpack 缓存已更新,以便下次登台应用程序时可以使用它。
- 分期阶段已完成。
Starting
- 容器化应用程序被安排为一个长时间运行的进程。
- 一旦通过健康检查,该应用程序就会启动并运行。
Restarting, Restaging, and Re-pushing
在某些情况下,您需要对正在运行的应用程序进行更改。 例如,您可能想要推出对应用程序代码的更新,或响应崩溃的应用程序。
在这种情况下,您通常会使用重新启动、重新暂存或 (re)-push 进行更改。
–strategy rolling
–strategy 标志是在 Cloud Foundry API v3 中引入的,以启用滚动(零停机时间)部署,它是目前唯一可用的策略,这意味着 --strategy 标志可以设置为滚动或 null。
在接下来的几节中,我们将讨论一下滚动部署的上下文,并将它们与早期的蓝绿部署机制进行比较。 目前,值得注意的是 --strategy 标志启用零停机时间应用程序更新,并且可以在重新启动、重新暂存或重新推送时使用。