专栏首页云计算开发者的福利--Cloud Foundry

开发者的福利--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的关键帐户电子邮件/密码。指定所需的组织和空间。

cf login

在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 push
cf push2

查看应用程序的状态

cf apps - 显示空间中所有应用程序的状态。 cf app [App-Name] - 显示应用程序的状态。 如果一切顺利,那么应用程序状态将如下所示:

cf apps

应用程序可以重新启动或重新进行: cf restart [App-Name] cf restage [App-Name]

cf restart

应用程序日志可以被查看。应用程序的环境属性可以查看: cf logs [App-Name] --recent

cf logs

程序运行的环境也可以看到 cf env [App-Name]

cf env

如果应用程序状态显示“正在运行”, 运行此命令CURL -k https://pcf-demo-app.pcfdev.com/user 则将获取数据。

curl命令获取数据

使用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的替代品,简化用户操作。

登录页
主页

本文的版权归 Hi胡瀚 所有,如需转载请联系作者。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 云原生应用程序:原因、内容及方法

    本文阐释了构建云原生应用程序的重要性、优点及其实现方式。

    Techeek
  • 使用Apprenda和R分析应用程序工作负载数据

    在权限范围内运行的访客应用程序的知识是平台即服务(PaaS)可以利用的最重要的数据来源之一。一个PaaS应该知道(译注:原文为know,此处应指可以获取并处理)...

    Techeek
  • 在Hadoop YARN群集之上安装,配置和运行Spark

    Spark是一种通用的集群计算系统。它可以在从单个节点到数千个分布式节点的集群上部署和运行并行应用程序。Spark最初设计用于运行Scala应用程序,但也支持J...

    Techeek
  • 「首席架构师看事件流架构」Kafka深挖第3部分:Kafka和Spring Cloud data Flow

    作为Apache Kafka深挖的博客系列第1部分和第2部分的后续,在第3部分中我们将讨论另一个Spring 团队的项目:Spring Cloud Data F...

    首席架构师智库
  • express4.2获取参数和视图

    1.获取参数 router.get('/', function(req, res) { //console.log(req.query.a); //get a...

    苦咖啡
  • Liunx服务器的几个安全防护措施

    很多服务器不时地被黑客入侵。因此,这里向您展示如何轻松地保护Linux服务器。 这并不是一个全面的安全指南。 然而,它可以帮助您阻止几乎90%的流行后端攻击,如...

    终身幼稚园
  • 一看就会又超级实用的Excel10大技巧

    本期责编:Sophie 普通人需要用到的Excel的功能不到其全部功能的10%。也就是说,对于绝大部分的用户来说,只要掌握了几个必须懂的Excel表格的基本操作...

    CDA数据分析师
  • Chrome 80.X版本如何解密Cookies文件

    最近遇到了一个头疼的问题,就是Chrome在2月份更新了版本 80.0.3987.122(正式版本) (64 位),以前写的抓取Cookies文件的脚本用不了,...

    HACK学习
  • ASP.NET Core 1.1 简介

    ASP.NET Core 1.1 于2016年11月16日发布。这个版本包括许多伟大的新功能以及许多错误修复和一般的增强。这个版本包含了多个新的中间件组件、针对...

    张善友
  • pixel art之 hqx 算法

    在去年的时候,偶然看到hqx算法。 一个高质量的插值放大算法。 与双线性插值等插值算法相比,这个算法放大后对人眼保护相对比较好。 没有双线性插值看起来模糊,固然...

    cpuimage

扫码关注云+社区

领取腾讯云代金券