面向开发者的Cloud Foundry

Cloud Foundry是一个流行的开源PaaS(Platform as a Service 平台即服务)云平台。Cloud Foundry可以用在你自己部署的基础设施上,也可以在诸如Amazon web services(AWS 亚马逊网络服务)、Azure(微软的公有云平台)、VMware(虚拟机软件)或vSphere(VMware公司的虚拟化平台)中任何一个laaS(Infrastructure as a Service 基础设施即服务)上使用。它可以使用BOSH(开源工具链)部署系统进行部署。Cloud Foundry提供了一个可以轻松运行、扩展和维护应用程序的环境。Cloud Foundry支持大部分的开发语言和系统环境,比如Java、node js、Ruby、Python等等。Pivotal公司有一个云计算的商业实例,叫做AWS云之上的Pivotal Web Service (PWS Pivotal 网络服务)。

该公司 还提供了PCF(Cloud Foundry 商业版)的轻量级发行版,称之为PCF Dev(Cloud Foundry 开发版),该版本是为应用开发人员准备的,在单独一台机器上即可运行。

Cloud Foundry 的几个概念

Users(用户)是可以管理 org用户组、space应用空间和应用程序app的Cloud Foundry用户

Roles(角色)表示赋予用户不同的权限,比如Org管理员或者Space管理员。

Orgs(用户组)表示用户可以在不同的用户组中使用不同的应用,每一个用户组都有一个或更多的空间。

Space(应用空间)是应用程序可以部署和共享配置的地方。单个空间可以部署多个应用程序。一个或多个空间构成了Org。

Apps (应用程序)是指在Cloud Foundry中运行的每一个独立应用程序。

Service(服务)

应用程序所使用的每一个外部服务如数据库、消息队列等等,都是Cloud Foundry中的服务。这些服务需要在Cloud Foundry层中进行定义,然后就可以被任何一个org或space通过Service Broker API进行调用。所有的服务都需要在Marketplace(服务市场)中进行注册。Marketplace是可以浏览所有在Cloud Foundry上可见并且可用的服务的地方。

我们可以创建任何符合我们需求的可用服务的实例。举例来说,Pivotal公司在

Pivotal Web Service上提供了一个MySQL服务,称之为p-MySQL,有着诸如512M和1024M等不同的规格设计。如果我们的应用程序需要一个MySQL数据库。我们可以根据需求创建一个有着恰当的设计方案的p-mysql实例,并且将这个服务实例绑定到应用程序。

Binding(绑定)

绑定是指应用空间中的可用服务和应用程序之间的映射。

Route(路由)

每一个应用程序都由一个被称之为路由的的单个或多个地址来标识。

Buid Packs(一种打包脚本)

Build packs 能够解决、下载并且配置基于用户输入的应用程序依赖。其中的一个例子就是java-buildpack,它将根据应用程序的性质,提供Java、Tomcat、Grails、Groovy、Play等不同的依赖项。Cloud Foundry在大多数平台上都提供有build packs,有社区支持的Build Packs,Cloud Foundry也允许创建定制的Build Packs

Droplets(最后生成的包)

当用户创建一个应用程序(cf push)时,Cloud Foundry会在其结束后生成一个droplets 。一个droplets就相当于实际应用程序二进制文件或者依赖项的镜像或者blob(binary large object 二进制大对象)存储。它将被存储在Cloud Foundry中,以便以后使用。当用户试图运行并解压应用程序时,这个映像就会被用来创建一个VM(虚拟机)并运行它。

环境变量

环境变量是Cloud Foundry和应用程序之间的共享变量。应用程序可以使用这些信息来发现各种服务。

VCAP_SERVICES - Cloud Foundry将服务相关信息增加到了该变量之中。 VCAP_APPLICATIONS - Cloud Foundry将应用程序相关属性增加到了该变量之中。

登陆到Cloud Foundry

LogAggregator是用来整合所有应用程序实例日志的Cloud Foundry组件,可以将日志输出到终端、文件或者第三方服务中。

CF CLI 工具

CF CLI 是Cloud Foundry的命令行工具客户端,它是通过传递命令来进行部署、扩展、管理和监控应用程序,创建和停止服务等操作。CF CLI 可以被安装在Linux、Windows和Mac中任意一个操作系统的机器上面。这是CF CLI 的命令行列表。Spring工具套件(STS)是一个基于eclipse的IDE,用于Spring程序开发,还有一种可以协助部署和管理应用程序的Cloud Foundry插件,它可以在IDE中创建和管理用户组org和应用空间space。

Pivotal公司为开发人员提供了一个轻量级的Cloud Foundry版本,称之为PCF Dev,它可以安装在开发者自己的单个机器上。如果你不想在自己的机器上安装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)这里将提示你输入Pivotal的账户凭证,然后下载VM、依赖项,然后启动所有必须的服务。如果你没有Pivotal账号,请前去官网注册

一旦启动了CF,你就可以打开一个新的终端,然后运行CF命令连接到Cloud Foundry。

登录 Cloud Foundry

cf login -a [api-endpoint] --skip-ssl-validation

PCFDev的API“终点”是 https://api.local.pcfdev.com和Pivotal Web Service 端 https://api.run.pivotal.io,这里会提示输入电子邮箱和密码,PCFDev邮箱和密码就是admin和admin,Pivotal Web Service的邮箱和密码是Pivotal账户的邮箱和密码。登陆后会定位到用户组和应用空间。

部署一个Cloud Foundry示例应用

这个示例应用程序你可以在这个Github项目位置上找到,这是一个Spring Boot Web(由Java框架SpringBoot搭建的Web程序)服务应用程序的示例,它公开了get请求的API。在默认的配置下,该应用程序创建了一个内存数据库并以JSON格式从这个数据库中获取数据。在云端配置文件中,此程序使用mysqldb的服务来连接到云上的MySQL数据库。这个项目使用Spring cloud service connector(云平台服务连接器)来连接云端MySQL服务。

用以下命令在用户组和应用空间中部署应用程序:

cf push [App-Name] -b [build-pack] -i [No-of-instances] -m [App-memory]

以上命令将部署并启动应用程序。如果没有事先指定路由,系统就会自动创建一个名为app-name的默认路由并将其绑定到应用程序的默认路径。我们还可以用描述文件Manifest对此应用进行推送。描述文件中的所有选项都会生效。

cf push -f [Path-To-Manifest-File]

描述文件Mainifest的示例内容:

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] - 显示该应用的状态

如果一切顺利,那应用程序的状态应该是这样的:

应用程序可以用restart或者restaged命令进行重启

cf restart [App-Name] cf restage [App-Name]

查看应用程序日志

cf logs [App-Name] --recent

查看应用程序的环境变量

cf env [App-Name]

如果应用程序的状态显示为“Running”,那么就可以输入 CURL -k https://pcf-demo-app.pcfdev.com/user 命令获取数据。

使用有MySQL服务的云端配置运行应用程序

你可以在Cloud Foundry中查看所有的服务。

cf marketplace - 显示服务市场Marketplace中所有可用的服务。 cf marketplace -s [service-name] - 显示服务市场Marketplace中可用服务的详细信息。

cf create-service [service-name] [service-type] [service-instance-name]- 这条命令会在当前应用空间内创建一个服务,[service-name]指明服务名称、[service-instance-name]指明服务实例名称,[service-type]表示服务的类型。

cf services - 这条命令将在当前目录中显示所有服务

cf service [service-instance-name] - 这条命令将显示应用空间内指定服务的详情

你可以更改描述文件mainifest的内容如下:

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的变量,并且将其同步到云端。除此之外,该内容还将在要推送的应用程序和mysqldb服务之间创建一个绑定。这个绑定也可以由如下命令手动创建:cf bind-service [App-Name] [Service-Instance-Name]

现在可以再次推送该应用,更新描述文件mainifest变更的内容。

cf push -f [Path-To-Manifest-File]

你可以再次运行CF env 来浏览更新后的变量VCAP_SERVICES和mysqldb服务详情。

应用扩展

cf scale [App-name] -i [no-of-instances] -m [memory-limit]

这是CF CLI命令的说明文档,其中包含如下命令的详情:删除、重命名、启动和终止一个应用程序,登录一个用户,浏览文件,创建、更新和删除服务,创建、更新和删除为本地用户提供的服务,绑定和解绑服务,路由的绑定和解绑,创建和删除用户组和应用空间,创建、更新和删除build packs打包脚本,创建和删除用户等等。

如果你正在使用Pivotal Cloud Foundry 的商业版或者开发版,那么这个基于Web的应用程序控制台在Pivotal Cloud Foundry 上是可用的,它完全可以作为 CF CLI的替代品。

本文的版权归 白加黑大人 所有,如需转载请联系作者。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SDNLAB

基于Linux Network Namespace的Mininet架构分析

Mininet作为一个轻量级的SDN仿真工具,在其系统实现架构中充分利用了Linux命名空间内核技术,其中Linux Network Namespace机制更是...

4236
来自专栏惨绿少年

LXC 容器集chroot使用说明

1.1 LXC是什么? 1.1.1 关于LXC LXC,其名称来自Linux软件容器(Linux Containers)的缩写,一种操作系统层虚拟化(Opera...

82513
来自专栏Jerry的SAP技术分享

C4C Product Price List的模型中和有效期相关的两个字段

SAP C4C的price list实例可以在工作中心Products,视图Price Lists里看到。

1557
来自专栏Golang语言社区

NSQ:分布式的实时消息平台--简介

源码下载地址: https://github.com/bitly/nsq NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,代码托管在Gi...

5146
来自专栏醉程序

CentOS7 编译安装 nginx php7

2332
来自专栏IT技术精选文摘

微服务部署策略的选择

动机 部署单体应用程序意味着运行多个通常是单个大型应用程序的相同副本。您通常会提供N个服务器(物理或虚拟)并在每个服务器上运行M个应用程序的实例。部署单体应用程...

2297
来自专栏杨建荣的学习笔记

海量数据迁移之一个误操作的问题总结(r3笔记第21天)

在生产环境中的数据迁移还是很惊心动魄的,毕竟生产的数据不容许有任何潜在的问题,很小的问题也可能导致业务的终端,这个时候dba的角色是很重要的,如果dba犯了一个...

3397

教你快速安装OpenShift容器平台3.6

自OpenShift容器平台(OCP)发布以来,我一直希望提供一个简单、完整且易用的安装教程。

42910
来自专栏CSDN技术头条

运用Kubernetes进行分布式负载测试

本文为CSDN原创编译文章,禁止转载。 负载测试是开发后台基础架构的重要一环,它不但能够演示系统在真实需求面前的性能表现,还可以通过模拟用户与设备行为,在应用程...

2136
来自专栏有刻

Docker 小记 — MySQL 与 Redis 配置

4657

扫码关注云+社区

领取腾讯云代金券