前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面向开发者的Cloud Foundry

面向开发者的Cloud Foundry

作者头像
白加黑大人
修改2018-01-15 17:43:40
2.4K0
修改2018-01-15 17:43:40
举报
文章被收录于专栏:我的技术笔记我的技术笔记

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的示例内容:

代码语言:js
复制
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的内容如下:

代码语言:js
复制
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 条评论
热度
最新
推荐阅读
目录
  • Cloud Foundry 的几个概念
  • Service(服务)
  • Binding(绑定)
  • Route(路由)
  • Buid Packs(一种打包脚本)
  • Droplets(最后生成的包)
  • 环境变量
  • 登陆到Cloud Foundry
  • CF CLI 工具
  • 安装PCF Dev
  • 登录 Cloud Foundry
  • 部署一个Cloud Foundry示例应用
  • 查看应用程序的运行状态
  • 使用有MySQL服务的云端配置运行应用程序
  • 应用扩展
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档