4.3. 应用程序
应用程序仍然是 OpenShift 的焦点。在 OpenShift v2 中,应用程序是一个单独的单元,由一个 Web 框架组成,它不包含多个 cartridge 类型。例如,某个应用程序可能有一个 PHP 和一个 MySQL,但它不能有一个 Ruby、一个 PHP 和两个 MySQL。它本身也不能是一个数据库 cartridge(如 MySQL)。
这限制了应用程序的范围,意味着 OpenShift 会使用环境变量为应用程序中的所有组件执行无缝的连接。例如,每个 Web 框架都知道如何使用 OPENSHIFT_MYSQL_DB_HOST
和 OPENSHIFT_MYSQL_DB_PORT
变量连接到 MySQL。然而,这种连接会被限制在一个应用程序中,且只能在一个设计为一起工作的 cartridge 才可以正常工作。它无法实现跨应用程序组件的连接,比如在两个应用程序间共享 MySQL 实例。
虽然大多数其他 PaaSes 将自身限制在 Web 框架内,其他类型的组件需要依赖外部服务,但 OpenShift v3 可让更多应用程序拓扑结构成为可能并可以进行管理。
OpenShift v3 使用术语"应用程序(application)"来代表将服务连接在一起这一概念。根据需要,您可以在一个项目(project)中包括多个组件并将它们灵活地连接。另外,还可以使用标记(label)提供分组或结构功能。这可以实现一个独立的 MySQL 实例,或在 JBoss 组件间共享一个 MySQL 实例。
这种灵活的连接意味着可以将任意两个组件连接在一起。只要一个组件可以导出环境变量,另一个组件就可以使用这些环境变量的值,且有对变量名称进行转换的可能。这样,就可以将任何两个组件连接在一起,而无需更改它们所基于的镜像。因此,您所需数据库和 Web 框架的最佳容器化实施可直接使用,而不必重新部署并配置它们以使它们可以相互兼容。
这意味着您可以在 OpenShift 上构建任何内容。OpenShift 要实现的主要目的是:一个基于容器的平台,允许您在可重复的生命周期内构建整个应用程序。