CloudFoundry CLI CF 解析
来源:互联网 发布:linux复制粘贴一行命令 编辑:程序博客网 时间:2024/05/23 11:53
cf push
CLI 中的cf push 命令,需要调用cloud controller的6次rest接口
app = create_app(get_inputs)//app的信息存入数据库
map_route(app)// 保存app的route(subdomain+domain)信息保存到数据库
create_services(app) //为该应用创建service service 如何使用?
bind_services(app) // 将service 绑定到app,数据存入数据库,调用service gateway接口完成app与service绑定
upload_app(app, path)//将应用上droplet传,根据是否使用nginx ,将应用放置在不同的目录
(使用nginx时,
(1)首先将文件上传到/var/vcap/data/cloud_controller_ng/tmp/uploads (文件名举例 /var/vcap/data/cloud_controller_ng/tmp/uploads/0000000018)
(2)然后启动AppBitsPackager 任务,将应用由本地存储转变为blobstore存储,存储到/var/vcap/nfs/shared/cc-packages 目录 并将文件名修改为为app的guid,,文件名举例
(/var/vcap/nfs/shared/cc-packages/d7/a3/d7a3eddb-d479-4cdc-b0e9-92d80ae3df76))
(3)生成应用的package hash值,保存到数据库中
start_app(app)
(1)调用get "/staging/apps/:guid" 接口完成 从blobstore 下载应用信息
Sequel::Model after_commit 回调函数,会在数据库发生变化时,调用,
当app的状态发生变化时,判断是否需要stage,如果需要,启动stage
\src\cloud_controller_ng\lib\cloud_controller\app_stager_task.rb stage 函数
1、保存app 的stage 的任务id,选择合适的dea进行stage
2、发布staging.stop" 将该app之前的stage任务停止
3、cc发布“staging.#{@dea_id}.start”消息 启动stage,dea 接受到该消息进行stage
dea_next src\dea_next\lib\dea\responders\staging.rb handle 函数完成处理
里面包含一个订阅通知,会有多个response返回
src\dea_next\lib\dea\staging\staging_task.rb 中的start函数启动 stager 任务
部分函数解析
resolve_staging_setup函数
1、准备workspace
根据需要的内存,硬盘创建warden,配置warden的Ip,配置warden内的运行日志
resolve_staging
调用的函数
promise_unpack_app,// warden 执行脚本下载应用信息到临时目录
promise_unpack_buildpack_cache,
//warden执行脚本下载buildpack_cache (目前未使用)
promise_stage,
//warden执行脚本/var/vcap/packages/dea_next/buildpacks/bin/run
检测应用类型,进行compile,下载依赖包
promise_pack_app,
//warden 执行脚本,将应用+依赖包进行打包
promise_copy_out,
//将应用 从warden copy到新的目录
promise_save_droplet, // 保存droplet 到/var/vcap/data/dea_next/droplets
promise_log_upload_started,// 将droplet上传到cloudcontroller (实际是保存到/var/vcap/nfs/shared/cc-droplets)
promise_staging_info // 保存staging_info.yml 保存stage 信息
(2)调用POST /staging/droplets/gudi 接口完成应用信息+依赖包信息保存在
/var/vcap/data/cloud_controller_ng/tmp/staged_droplet_uploads 然后将其保存到blobstore
/var/vcap/nfs/shared/cc-droplets
然后将本地文件删除
(3)调用POST /staging/buildpack_cache/guid 接口完成 将依赖包保存到该路径
/var/vcap/data/cloud_controller_ng/tmp/staged_droplet_uploads然后将其保存到blobstore
/var/vcap/nfs/shared/cc-droplets/buildpack_cache
保存完成后,将本地的文件删除
当stage 完毕后,使用deaClient启动该应用,首先查找最优的DEA,CloudController指定DEA发送消息dea.#{dea_id}.start,DEA接收该应用的信息,调用CloudController的接口(/staging/droplets/guid/download\"),下载droplet到DEA
- CloudFoundry CLI CF 解析
- CloudFoundry部署(四):CF部署
- CloudFoundry Micro CF v2.0
- Ubuntu install cf cli
- CloudFoundry部署(五):CF应用部署
- openstack用bosh部署cloudfoundry(二)---准备bosh cli
- 使用predix-cli来简化cf-cli操作
- 使用CF Cli发布应用Spring Music
- 【kibana源码解析】-src/cli/cli.js
- OpenStack使用Bosh部署CloudFoundry(二)—准备Bosh Cli客户机
- OpenStack使用Bosh部署CloudFoundry(二)—准备Bosh Cli客户机
- commons-cli命令行参数解析
- nise_bosh在openstack上搭建cloudfoundry中cf.yml的完整版
- cf_nise_installer部署单机版cloudfoundry,The `cf' command exists in these Ruby versions: 1.9.3-p484
- Bluemix云平台实践: 命令行的艺术CF CLI
- 实例解析C++/CLI之开卷有益
- 实例解析C++/CLI线程之多任务
- 实例解析C++/CLI的“克隆”
- 京东发布即时通讯工具“京东咚咚”
- Interpolator学习
- JAX-RS入门 十一:HATEOAS
- 素数筛法计算完全数
- VB6中ScaleMode位置属性特性的实验及总结.
- CloudFoundry CLI CF 解析
- NYOJ 97 兄弟郊游问题
- 黑马程序员_温习 GUI图形用户接口一 (个人笔记)摘要(GUI图形用户界面介绍-----布局管理器-----事件监听机制-----窗体事件---Action(执行事件)----鼠标事件----键
- Excel Application 对象 开发指南
- flex actionScript读取文件
- Opencv2系列学习笔记9(使用Canny算子检测轮廓)
- JAX-RS入门 十二: 可伸缩的JAX-RS应用
- 百度云与私有SVN.
- Github上600多个iOS开源项目分类及介绍