开发者的福利--Cloud Foundry
Cloud Foundry是一个流行的开源平台即服务(PaaS)。Cloud Foundry可以在您自己的部署基础架构上使用,也可以在腾讯云 Web服务,VMware或vSphere等任何IaaS(Infrastructure as a Service)上使用 。它可以使用BOSH部署系统进行部署 。Cloud Foundry提供了一个可轻松运行,扩展和维护应用程序的环境。Cloud Foundry支持Java,NodeJS,Ruby,Python等大多数语言和环环境。
Pivotal还提供PCF的轻量级分布式应用,称为PCF Dev,可以在单台机器上运行。
Cloud Foundry的概念
用户是可以管理org/space/app的Cloud Foundry的用户。
角色是分配给不同用户(如组织管理者/空间管理者)的权限。
组织处于最高级别,可供不同用户使用来分组应用程序。每个组织都有一个或多个空间。
空间是可以部署应用程序并共享配置的地方。多个应用程序可以在单个空间中部署。单个或多个空间组成一个组织。
应用程序是在Cloud Foundry内部运行的各个应用程序。
服务
应用程序使用的每个外部服务(如数据库,消息队列等)都是Cloud Foundry中的服务。这些服务需要在Cloud Foundry级别定义,可以通过Service Broker API由任何组织/空间使用。所有的服务都需要在Marketplace中注册。市场是查看Cloud Foundry上所有可用服务的地方。
我们可以创建适合我们需求的可用服务实例。例如,Pivotal在Pivotal Web Services上提供了一个名为p-mysql的MySQL服务,其中包含512MB和1024MB等不同类型的计划。如果我们的应用程序需要一个MySQL数据库,我们可以根据需要创建适当的计划的p-mysql的服务实例,并将这个服务实例绑定到应用程序。然后,Cloud Foundry将此MySQL的连接参数写入环境变量VCAP_SERVICES,该应用程序可以使用该变量连接到MySQL数据库。
绑定
绑定是应用程序空间中可用服务之间的映射。
路由
每个应用程序由一个/多个称为路由的地址来标识。这些路由可以映射到应用程序并用于访问应用程序。
构建包
构建包根据用户需求解析/下载/配置应用程序的依赖关系。例如java-buildpack。这个构建包包含Java,Tomcat,Grails,Groovy,Play等依赖性,当然具体的依赖关系主要取决于应用程序的性质。Cloud Foundry为大多数平台提供了构建包。有社区支持的构建包。Cloud Foundry允许创建自定义的构建包。
Droplets
当用户创建应用程序时(用命令 'cf push' 创建),Cloud Foundry会生成一个droplets。droplet就像实际应用程序二进制文件和依赖包的镜像或blob(binary large object,二进制大对象)存储。droplet存储在Cloud Foundry中供以后使用。每当用户尝试运行/缩放应用程序时,都会使用此镜像创建VM并运行该映像。所以每当application/configuration/env发生变化的时候。变量,应用程序需要重新创建,并再次生成droplet。Restarting/restaging只会重新启动或部署相同的droplet。
环境变量
这些是Cloud Foundry和应用程序之间的共享变量。应用程序可以使用这些来发现各种服务。
VCAP_SERVICES - Cloud Foundry将与服务相关的信息添加到此变量。
VCAP_APPLICATIONS - Cloud Foundry将与应用程序相关的属性添加到此变量中。
登录到Cloud Foundry
LogAggregator是Cloud Foundry组件,用于整合来自所有App的日志。日志可以流式传输到终端、文件或第三方服务。
CF CLI工具
CF CLI是使用Cloud Foundry的命令行客户端; 它用于传递命令来部署/扩展/管理/监视应用程序,创建/停止服务等。CF CLI可以安装在任何Linux / Windows / Mac机器上。CF CLI命令列表。Spring Tool Suite(STS)是一个基于eclipse的IDE,用于Spring应用程序开发,还有一个Cloud Foundry插件,可以帮助部署/管理应用程序,以及从IDE创建和管理组织/空间。
Pivotal提供了一个称为PCF Dev的轻量级开发版Cloud Foundry ,可以安装在单个开发者机器上。如果您不想在您的机器上安装PCF Dev,仍想尝试Cloud Foundry,则可以跳过安装部分,只安装CF CLI,并使用Pivotal Web Service中提供的评估版本。首先你需要一个免费的Pivotal帐户。
PCF Dev安装
1)为您的操作系统安装VirtualBox。
2)安装CF CLI。
3)下载您喜欢的操作系统的PCF Dev。将PCF Dev提取到一个文件夹中,然后运行pcfdev- [VERSION] - [OS]。这将PCFDev插件安装到CF CLI。
4)在该文件夹中打开新的终端并执行命令 cf dev start
5)这会提示您输入关键帐户凭据,然后下载VM,依赖关系,启动所有必需的服务。如果您没有Pivotal帐户,请注册。
一旦CF启动,您可以打开一个新的终端并运行CF命令连接到Cloud Foundry。
登录到Cloud Foundry
cf login -a [api-endpoint] --skip-ssl-validation
PCF Dev的API端点是https://api.local.pcfdev.com,而Pivotal Web Service则是https://api.run.pivotal.io。将会提示您输入电子邮件和密码。如果您是PCF Dev版则电子邮件/密码将是admin/admin,如果是正式版Pivotal Web Services的关键帐户电子邮件/密码。指定所需的组织和空间。
在Cloud Foundry中部署示例应用程序
示例应用程序可以在此Github找到。这是一个Spring Boot Web Services应用程序开放get API的示例。在默认配置文件中,应用程序创建一个内存数据库,并以JSON形式从该数据库获取数据。在云配置文件中,应用程序使用服务名称mysqldb连接到云上的MySQL数据库。该项目使用 Spring云服务连接器连接到云MySQL服务。
在使用以下命令选择的组织/空间中部署应用程序:
cf push [App-Name] -b [build-pack] -i [No-of-instances] -m [App-memory]
这部署和启动应用程序。如果没有指定路由,则会创建一个名称与app-name相同的默认路由并绑定到应用程序。应用程序也可以使用清单文件推送。所有选项都可以在清单文件中使用:
cf push -f [Path-To-Manifest-File]
清单文件的示例内容:
applications:
- name: pcf-demo-app
buildpack: https://github.com/cloudfoundry/java-buildpack
memory: 512M
instances: 1
host: pcf-demo-app
path: pcf-demo-1.0.0-SNAPSHOT.jar
timeout: 180
查看应用程序的状态
cf apps
- 显示空间中所有应用程序的状态。
cf app [App-Name]
- 显示应用程序的状态。
如果一切顺利,那么应用程序状态将如下所示:
应用程序可以重新启动或重新进行:
cf restart [App-Name]
cf restage [App-Name]
应用程序日志可以被查看。应用程序的环境属性可以查看:
cf logs [App-Name] --recent
程序运行的环境也可以看到
cf env [App-Name]
如果应用程序状态显示“正在运行”, 运行此命令CURL -k https://pcf-demo-app.pcfdev.com/user
则将获取数据。
使用MySQL服务在Cloud Profile中运行应用程序
您可以看到Cloud Foundry中提供的所有服务:
cf marketplace
- 显示所有可用的市场服务。
cf marketplace -s [service-name]
- 显示市场中可用的特定服务的详细信息。
cf create-service [service-name] [service-type] [service-instance-name]
- 这将创建名称为[service-instance-name]的服务,并在当前空间中键入[service-type]。
cf services
- 这显示了当前空间中的所有服务。
cf service [service-instance-name]
- 这显示了有关空间内的特定服务的详细信息。
您可以更改清单文件的内容:
applications:
- name: pcf-demo-app
buildpack: https://github.com/cloudfoundry/java-buildpack
memory: 512M
instances: 1
host: pcf-demo-app
path: pcf-demo-1.0.0-SNAPSHOT.jar
timeout: 180
env:
SPRING_PROFILES_ACTIVE: cloud
services:
- mysqldb
这将创建环境变量SPRING_PROFILES_ACTIVE并将值设置为cloud。它还在推送的应用程序和服务mysqldb之间创建一个绑定。此绑定也可以使用此命令手动创建: cf bind-service [App-Name] [Service-Instance-Name]
现在再次推送应用程序,新清单更改:cf push -f [Path-To-Manifest-File]
您可以再次运行CF env以查看使用mysqldb详细信息更新的VCAP_SERVICES。
缩放应用程序
cf scale [App-name] -i [no-of-instances] -m [memory-limit]
在CLI中有删除,重命名,启动和停止应用程序,注销用户,查看文件,创建/更新/删除服务,创建/更新/删除用户提供的定制服务,绑定/解除绑定服务,绑定/取消绑定路线,创建/删除组织和空间,创建/更新/删除构建包,创建/删除用户,等等命令。
如果您正在使用Pivotal Cloud Foundry(Cloud Foundry的商业版本)或Pivotal Dev,则Cloud Foundry可以使用基于Web的控制台应用程序,该web端的控制台可用作CF CLI的替代品,简化用户操作。