本文共 2685 字,大约阅读时间需要 8 分钟。
Cloud Foundry集群上运行的是一组Job
,这些 Job由开发者以release
包的形式提供,利用BOSH命令部署到集群节点上。如下图所示:
相关概念:
Release
: Bosh定义的一组Job的集合,用来在集群上进行部署。可以简单理解为运行Job所需要的源码、二进制包、安装脚本的压缩包。Job
: 运行在Cloud Foundry节点上的应用/进程。Package
: job的依赖包初始化一个Release项目的命令如下:
bosh init-release --dir e2e-test-release
自动生成如下目录结构:
$ tree ..├── config│ └── blobs.yml├── jobs # 一组应用或服务的定义,例如:postgres服务├── packages # 运行Job所需的依赖的描述。这里分两种依赖:源码依赖和二进制依赖├── src # 存放依赖源代码└── blobs # 存放依赖二进制
初始化Job的命令如下:
bosh generate-job slb-registration-test
生成Job目录结构如下:
$ tree e2e-test-releasee2e-test-release├── blobs├── config├── jobs│ ├── slb-registration-test│ │ ├── monit # monit服务会调用这个脚本,检查应用的健康状态,汇报给BOSH│ │ ├── spec # job的描述文件│ │ └── templates│ │ └── run.erb # 应用启动和停止的脚本├── packages└── src
spec
是job的元信息配置文件,其结构如下:
---name: slb-registration-test # job名称,写manifest的时候一一对应templates: # templates目录下的文件,放置到vm的哪个位置上 run.erb: bin/run # 把templates/run.erb复制到vm的/var/vcap/jobs/slb-registration-test/bin/runpackages: # 当前job需要依赖哪些package- aliyun_py- aliyun_python_sdk_slbproperties: # 定义用户可以在manifest中配置值传给job ctl access_key: description: The Alicloud Access Key secret_key: description: The Alicloud Access Secret Key
初始化Package命令如下:
bosh generate-package aliyun_py
package目录结构如下:
$ tree packagespackages└── aliyun_py # 名称 ├── packaging # 安装脚本 └── spec # 元信息
spec
是package的元信息配置文件,其结构如下:
---name: aliyun_py # package名称dependencies: # 依赖名称- aliyun_python_sdk_slbfiles: # 在编译阶段,如何找到源码或者二进制依赖. 源码则在src目录下进行查找,二进制在blobs目录下查找 - action/**/*
Package依赖的源码是直接放到项目的src目录下的,但是二进制文件体积较大,而且非源码不适合做版本控制,所以二进制文件放到远程BlobStore上。
添加Blob到项目的命令如下:
bosh add-blob ~/Downloads/aliyun-python-sdk-slb-3.2.1.tar.gz sdk_slb/aliyun-python-sdk-slb-3.2.1.tar.gz
在编译阶段,aliyun-python-sdk-slb-3.2.1.tar.gz会放置到blobs/sdk_slb目录下
生成release包的命令如下:
bosh create-release --force
在manifest中定义job信息如下:
instance_groups: - name: srt jobs: - name: slb-registration-test # 前面定义的job名称 release: e2e-test # release名称 properties: # job spec中定义的配置,值会传到 job脚本中 access_key: ((access_key)) secret_key: ((secret_key))
Release意义在于打包、编译、部署、运行Job到CLoud Foundry,利用monit监控和管理应用状态。那么关键所在是Job,Job生命周期如下图:
部署的时候,会把release目录下的内容复制到vm的/var/vcap
目录下;job的日志会写到/var/vcap/sys/log/JOB_NAME
文件中。
欢迎PaaS生态上的合作伙伴和开发者参与Cloud Foundry社区的建设,也欢迎大家来阿里云构建企业自己的PaaS平台。任何问题和建议可以。
转载地址:http://qjpdx.baihongyu.com/