这篇博客介绍 Cloud Foundry vmc CLI 接口及其与 Cloud Foundry 交互的方式。当客户端(如 vmc 或 STS)连接到 Cloud Foundry 时,它在后端进行什么操作,这些内容将在随后发布的其他博客中介绍。
以 Cloud Foundry 为目标
第 1 步:vmc 选定目标 api.cloudfoundry.com
第一次安装 vmc 并准备开始控制 Cloud Foundry 时,需要首先为它选择目标。为什么需要选择 api.cloudfoundry.com?因为 vmc 能够连接任何 Cloud Foundry 实例,不论它是在 cloudfoundry.com 中还是在其他位置。选择目标后,您还可以通过相同的方式使用同一个 CLI 连接多个 Cloud Foundry 云。
第 2 步:vmc 返回“已成功选择 [http://api.cloudfoundry.com] 作为目标”
这说明 vmc 能够从 api.cloudfoundry.com 获取有效响应,同时表明它是有效的 Cloud Foundry 实例。
注意: 每次通过 vmc 发布新命令时,示意图编号都会重复
登录 Cloud Foundry
第 1 步:vmc 登录
输入命令后,系统将提示您输入您的电子邮件地址和密码。之后,您的凭据将通过 vmc 传递到 Cloud Foundry,并在那里进行验证。假设您的凭据通过了验证,Cloud Foundry 随后会将安全令牌发回 vmc 客户端。
第 2 步:成功登录 [http://api.cloudfoundry.com]
当 vmc 客户端收到安全令牌后将显示此信息。现在,您可以发布命令,通过 vmc 来控制 Cloud Foundry 上的实例。
使用 vmc push 部署应用程序
第 1 步:vmc push
下面的步骤将详细介绍上面显示的对话框,说明每一步的具体操作及作用。
第 2 步:在这一步您可以选择应用程序的备用位置。使用 vmc push 时,可以添加 —path /some/location,这样您可以继续保持当前的目录位置,而不用进入您要部署的应用程序。
第 3 步:为您的应用程序指定一个简单好记的名称,以便在 vmc 内部引用它时使用。此名称可以(但不一定)和部署的 URL 无关,用户将通过该 URL 访问您的应用程序。
第 4 步:部署了应用程序的 URL 是用户从 Internet 或你的 Cloud Foundry 实例外部访问您的应用程序的位置。
第 5 步:检测或选择应用程序类型
vmc 将尝试检测所使用的框架,以便决定需要的正确的运行时环境是什么。如果您要以特定的方式处理代码,或者如果 vmc 无法检测所使用的框架,则可以手动选择框架,这样,您的代码将被视为同时用于此框架以及与该框架关联的运行时环境。
第 6 步:“预留内存”用于确定应用程序所需要的内存量。“预留内存”是清单(manifest)的组成部分,将在以后介绍,它还可以用于确保您不会超过系统的配额限制。
第 7 步:vmc 已在“本地”创建了应用程序,这意味着所有应用程序元数据都已创建并保存。应用程序元数据是清单的组成部分,具体包括:
- 应用程序名称
- URL
- 框架
- 运行时
- 所需的实例
- 预留内存
有一点很重要,现在还没有向 Cloud Foundry 发送任何数据。
第 8 步:将服务绑定到应用程序能够增加一些功能,如 Redis(键/值存储)、MySQL(关系数据库)以及消息传递等其他服务。
第 9 步:因为您的应用程序在远程运行(不在本地操作系统中),所以在将其发送到 Cloud Foundry 之前,必须进行预处理。下面的步骤将介绍这个复杂的过程,其中 vmc 和 Cloud Foundry 将共同协作,确定上传您代码的最有效方式。
第 10 步:命令提示“Checking for available resource”就是检查元数据和清单,以便确定要发送的数据。vmc 确定要发送到 Cloud Foundry 的数据的过程分为多个阶段,在下面几个示意图中进行介绍。
第 10a 步:检查元数据(应用程序需要的资源、应该使用的运行时和框架等)
第 10b 步:查看组件(确定准备用于下一步的 gem、库、npms 等)。
第 10c 步:基于文件的指纹识别(将在这里构建文件清单,以及与该文件关联的 SHA-1 哈希)。
第 10d 步:随后将清单发送到 Cloud Foundry。
第 11 步:应用程序已成功打包,具体什么是打包?请参见下面的示意图了解详细信息(以及对在第 10 步中发送的清单采取什么操作)
第 11a 步:打包开始时,将清单从 Cloud Foundry 发送到 vmc。此清单只列出了 Cloud Foundry 需要的文件,并不是构成应用程序的所有文件。与通过每次推送来发送所有代码/应用程序文件的方法相比,这种只请求和发送所需数据的方法使上传的效率更高。
第 11b 步:vmc 复制所需文件(仅限 Cloud Foundry 需要的文件)并压缩这些文件
第 11c 步:准备 vmc 清单以及包含 Cloud Foundry 需要的所有代码的压缩文件。
第 11d 步:文件可以上传到 Cloud Foundry。
第 12 步:vmc 将应用程序(仅包括清单和压缩文件)上传到 Cloud Foundry。在上面的情况中,如果您要部署的应用程序已经由其他用户部署了,则会看到上传(Uploading)为“确定”(OK)。这是因为 Cloud Foundry 不仅仅查看您发送给它的文件,而且还查看以前传过的所有文件。通过查看以前所有的文件,上传效率将大大提高,因为这些文件很可能是 Cloud Foundry 以前见过的文件。
第 13 步:当“推送状态”(Push Status)返回“确定”(OK)时,表示 Cloud Foundry 已收到应用程序,现在可使用它进行暂存。
第 14 步:只有在 Cloud Foundry 成功地分配了运行应用程序所需的资源和环境时,“暂存应用程序”(Staging Application)才会返回“确定”(OK)。
第 15 步:因为“启动应用程序”是自动执行的,所以不需要手动进行,除非在执行 vmc push 时命令行添加了 —no-start。只有 vmc 从 Cloud Foundry 收到表明所有应用程序实例运行正常/都在运行的信息时,“启动应用程序”才会返回“确定”。
应用程序成功启动后,您可以访问部署的 URL,在这里是http://hello.cloudfoundry.com,以便使用部署的应用程序。
Cloud Foundry 团队经过不懈的努力,使资源使用和效率成为代码和系统设计中优先考虑的条件。
有关 Cloud Foundry 工作原理的知识将在后面的博客中介绍。