我的任务是更新一些BOSH脚本/作业/你有什么,开发它们花费了我很多时间。
我终于学会了使用BOSH lite,但我只真正了解了如何将CloudFoundry
部署到BOSH lite环境中。
然而,我有点不知所措,我需要在我的BOSH lite发布/清单/这里有什么?
有人能描述他们在BOSH lite中的工作流程吗?我需要在发布清单中输入哪些类型的信息来部署我的发布并在BOSH lite中测试我的工作和跑腿?我一直很难在这个领域找到好的资源,尤其是BOSH。
高级工作流是:
- 在您的工作站上,您有一个BOSH版本的回购
- 你在某个地方有BOSH总监
- 你制作你的发行版,构建它,然后上传给导演
- 创建/修改引用上载版本的部署清单
- 使用清单运行
bosh deploy
,这样Director就可以在"云中"创建"虚拟机",并在清单中描述的拓扑结构中将您发布的软件放在这些虚拟机上(并运行软件)
您需要告诉Director的三件主要事情是干细胞、发布和部署清单。到目前为止,你已经知道什么是发布了,它基本上是所有运行的软件。
干细胞是所有部署的虚拟机通用的基本操作系统映像(在一个部署中可以有不同的干细胞,但最常见的是它们都相同);这是一个特殊的图像,其中预先烘焙了一些东西,以便于与BOSH合作。主要是,它有一个BOSH代理,这就是Director与VM通信的方式,告诉它"下载此包"、"下载此作业"、"启动此过程"等。
部署清单是一个YAML文件,您可以在其中指定以下内容:
- 部署的
name
releases
的列表,以及您将作为此部署的一部分部署的特定版本- 要与部署的虚拟机关联的
networks
的描述。例如,如果你使用的是像AWS这样的IaaS,你可能会部署到VPC中,在这里你可以指定一些子网ID jobs
的描述,基本上是要部署的几个同构集群的列表,以及每个集群需要多少VM/节点实例。假设您的版本由frontend
服务、backend
服务和database
服务组成。然后,您可能需要部署一个只运行frontend
作业的frontend
集群,并且有5个实例。您可能需要backend
集群的10个实例,可能只需要database
的1个实例。清单中的每个job
都可以引用来自多个版本的多个jobs
(是的,这两个东西被命名为同一个东西是一个不幸的历史事故)- 配置
properties
,例如,您的作业可能需要配置一组参数和凭据,并且任何需要全局共享的属性都可以放在properties
部分中
BOSH Lite是一个Vagrant虚拟机,它本质上运行两件你关心的事情:
- BOSH董事
- Garden,一个Linux容器管理器(如果你听说过Docker,Garden与之类似,但存在时间更长,更适合生产用例)。Garden在这里的行为就像"云",当Director需要创建一个VM时,它会委托给它的"云提供商接口",该接口反过来只要求Garden创建一个容器
BOSH Lite的优势在于,在笔记本电脑上的虚拟机中启动容器比在AWS、vSphere、OpenStack或其他真正的数据中心中启动真正的虚拟机更便宜、更快。
首次工作流程(启动并瞄准BOSH Lite之后):
$ git clone YOUR_RELEASE_REPO
$ cd YOUR_RELEASE_REPO
$ bosh create release && bosh upload release
$ # create manifest, call it manifest.yml
$ bosh -d manifest.yml deploy
迭代:
$ # modify the code in your repo
$ bosh create release --force && bosh upload release
$ # modify your manifest if necessary
$ bosh -d manifest.yml deploy
如果您不熟悉BOSH清单,从头开始创建清单可能会很困难。您可能需要考虑的一件事是按照您找到的为Cloud Foundry创建BOSH Lite清单的说明进行操作。然后修改它以适合您的项目。
以下是关于部署清单模式的完整文档:https://bosh.io/docs/deployment-manifest.html.
如果你生成了一个清单,但遇到了问题,你可以求助于GitHub问题或邮件列表,这可能更适合于来回帮助你的清单工作。