Cloud Foundry Job图文详解

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: 本文以e2e-test-release项目为原型介绍如何开发一个可以部署到Cloud Foundry集群的Job Release。

Cloud Foundry集群上运行的是一组Job,这些 Job由开发者以release包的形式提供,利用BOSH命令部署到集群节点上。如下图所示:

image

相关概念

  • Release: Bosh定义的一组Job的集合,用来在集群上进行部署。可以简单理解为运行Job所需要的源码、二进制包、安装脚本的压缩包。
  • Job: 运行在Cloud Foundry节点上的应用/进程。
  • Package: job的依赖包

Release源码结构

初始化一个Release项目的命令如下:

bosh init-release --dir e2e-test-release

自动生成如下目录结构:

$ tree .
.
├── config
│   └── blobs.yml
├── jobs            # 一组应用或服务的定义,例如:postgres服务
├── packages        # 运行Job所需的依赖的描述。这里分两种依赖:源码依赖和二进制依赖
├── src             # 存放依赖源代码
└── blobs           # 存放依赖二进制

Job

初始化Job的命令如下:

bosh generate-job slb-registration-test

生成Job目录结构如下:

$ tree e2e-test-release
e2e-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/run
packages:                          # 当前job需要依赖哪些package
- aliyun_py
- aliyun_python_sdk_slb
properties:                        # 定义用户可以在manifest中配置值传给job ctl
  access_key:
    description: The Alicloud Access Key
  secret_key:
    description: The Alicloud Access Secret Key

Package

初始化Package命令如下:

bosh generate-package aliyun_py

package目录结构如下:

$ tree packages
packages
└── aliyun_py              # 名称
    ├── packaging          # 安装脚本
    └── spec               # 元信息

spec 是package的元信息配置文件,其结构如下:

---
name: aliyun_py             # package名称
dependencies:               # 依赖名称
- aliyun_python_sdk_slb
files:                      # 在编译阶段,如何找到源码或者二进制依赖. 源码则在src目录下进行查找,二进制在blobs目录下查找
  - action/**/* 

Blob

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目录下

Create Release

生成release包的命令如下:

bosh create-release --force

manifest

在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生命周期如下图:

image

部署的时候,会把release目录下的内容复制到vm的/var/vcap目录下;job的日志会写到/var/vcap/sys/log/JOB_NAME文件中。

image

源码地址

最后

欢迎PaaS生态上的合作伙伴和开发者参与Cloud Foundry社区的建设,也欢迎大家来阿里云构建企业自己的PaaS平台。任何问题和建议可以在Github上提Issue

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
弹性计算 IDE 安全
Alibaba Cloud Toolkit:本地应用一键部署到任何机器上
Alibaba Cloud Toolkit:本地应用一键部署到任何机器上
1203 0
Alibaba Cloud Toolkit:本地应用一键部署到任何机器上
|
Kubernetes 负载均衡 Cloud Native
Spring Cloud Kubernetes使用全解(一)—官方原版
Spring Cloud Kubernetes使用全解(一)—官方原版
12472 2
|
Kubernetes 负载均衡 安全
Spring Cloud Kubernetes使用全解(二)—官方原版
Spring Cloud Kubernetes使用全解(二)—官方原版
689 0
|
Shell API Go
Cloud Foundry 1. 快速入门
Cloud Foundry 1. 快速入门
Cloud Foundry 1. 快速入门
|
JSON 安全 网络协议
Cloud Foundry 3. cf 命令(2)
Cloud Foundry 3. cf 命令(2)
Cloud Foundry 3. cf 命令(2)
|
安全 Java 应用服务中间件
Cloud Foundry 3. cf 命令(1)
Cloud Foundry 3. cf 命令(1)
Cloud Foundry 3. cf 命令(1)
|
消息中间件 Cloud Native 容灾
Spring Cloud Alibaba 2.2.8 版本发布与社区未来规划介绍
本次发布的 Spring Cloud Alibaba 2.2.8 版本是基于项目 2.2.x 分支构建发布的,是在 Spring Cloud Hoxton.SR12、Spring Cloud 2.3.12.RELEASE 的基础上对其中包括注册配置中心、分布式消息等在内的众多组件进行了升级,属于一个组件升级与 Bug 修改的版本。
Spring Cloud Alibaba 2.2.8 版本发布与社区未来规划介绍
|
消息中间件 Cloud Native 容灾
Spring Cloud Alibaba 新版本发布及未来规划
本次发布的 Spring Cloud Alibaba 2.2.8 版本是基于项目2.2.x分支构建发布的,是在 Spring Cloud Hoxton.SR12、Spring Cloud 2.3.12.RELEASE 的基础上对其中包括注册配置中心、分布式消息等在内的众多组件进行了升级,属于一个组件升级与 Bug 修改的版本。
Spring Cloud Alibaba 新版本发布及未来规划
|
Prometheus 监控 Cloud Native
Spring Cloud Alibaba基础教程:Nacos 生产级版本 0.8.0
Spring Cloud Alibaba基础教程:Nacos 生产级版本 0.8.0
174 0
Spring Cloud Alibaba基础教程:Nacos 生产级版本 0.8.0