背景
AT&T正在与SK电信(SKT),Intel和OpenStack基金会合作推出一个名为Airship的新型云开放基础设施项目。Airship的宣传语是“声明式地定义您的OpenStack和Kubernetes基础设施”。
Airship是OpenStack的一个新的开放式基础设施项目,这个项目是建立在2017年推出的OpenStack-Helm基础上的。
Airship是一组用于自动化云配置和管理的开源工具。Airship提供了一个声明性框架,用于定义和管理开放式基础架构工具和底层硬件的生命周期。这些工具包括用于虚拟机的OpenStack,用于容器编排的Kubernetes和用于裸机的MaaS,并计划支持OpenStack Ironic,即Airship是一种管理工具,可以用于管理数据中心中目前繁杂的裸机、IaaS、PaaS平台。
Airship层级
下图中所标注为蓝色的是Airship的组件,后文也会详细介绍这些组件的具体功能,这张图很好得解释了Airship与OpenStack和Kubernetes关联,以及Airship在层级中所处的位置。即底层利用Kubernetes进行OpenStack服务组件容器的编排,并通过Airship来通过YAML语言进行各类配置、版本的容器的生命周期管理。
架构
由于架构图字太小,可以参考[4]
里面涉及了一堆新名词
1.Pegleg
Pegleg是一个文档聚合器, Deckhand是Airship中的文档管理微服务
2.Shipyard
Shipyard是用于Kubernetes和OpenStack生命周期管理的控制器,Shipyard为控制平面的提供Entrypoint, 包括站点设计和操作。名称上也可以看出来是一个是Airship“飞船”的Shipyard“造船厂”,为Airship提供分类过后的数据。
2.1站点设计
作为AirShip入口,将裸机主机节点的配置,网络设计,操作系统,Kubernetes节点,Armada manifests,Helm图表以及定义一组服务器构建的任何其他描述符通过Shipyard进入Airship。 密码和证书、使用相同的机制。密码和证书存储在Airship的Deckhand中,提供版本历史记录和安全存储。
2.2操作
通过调用Shipyard中的操作完成与站点控制平面的交互。 每个操作都由作为使用Apache Airflow运行的有向无环图(DAG)实现的工作流支持。 Shipyard提供了mechanism来监视和控制workflow。
总结一下,Shipyard就是把各类的配置通过各个接口收集起来,提供给Airship其他的组件,并将各类需要经过Shipyard的Workflow(别名Airflow)监控起来。
3.DryDock
Drydock将基于YAML的声明性的拓扑(从Shipyard传过来的)转换为可用于构建企业Kubernetes集群的配置信息。 相比Shipyard,Drydock更像是具体干活的,他可以做如下一些工作:
1.PXE引导新服务器的初始IPMI配置
2.支持Canonical MAAS配置
3.配置复杂网络拓扑,包括绑定,标记VLAN和静态路由
4.支持基于Keystone的身份验证和授权
4. Deckhand
Deckhand是一种通过一系列配置语言来提供存储的服务,其构建时考虑了可审计性和认证。利用现有的OpenStack API(即Barbican)可靠、安全地存储数据。
5.Armada
Armada是一个管理多个具有依赖关系的Helm图表的工具,它通过在单个Armada YAML中集中所有配置并为所有Helm版本提供生命周期支持。
6.Kubernetes
Kubernetes是一个开源系统,用于跨多个主机管理容器化应用程序,为应用程序的部署,维护和扩展提供基本机制。
7. Promenade
Promenade是一个用于部署Kubernetes集群并管理其生命周期的工具。Promenade可针对节点故障和完整群集重新启动提供群集恢复能力。
8.Helm
Helm是Kubernetes的包管理工具。可以使用Helm图表定义、安装和升级Kubernetes应用程序。图表是用于描述Kubernetes资源的。 Helm将每个图表的部署包装成一个具体的版本,它是构成该服务的所有Kubernetes资源的集合, 我们能够通过Kubernetes资源模板化,即通过Helm提供标准接口,以控制Kubernetes的安装和应用生命周期管理。
9.OpenStack-Helm
OpenStack-Helm项目提供了一个框架,实现松散耦合的OpenStack服务及其依赖项的部署,维护和升级。
OpenStack-Helm本质上是Kubernetes、Helm和OpenStack的结合,旨在为每个OpenStack服务创建Helm图表。 这些Helm图表为这些OpenStack服务提供完整的生命周期管理。
10.Divingbell
Divingbell是一种轻量级解决方案:实现一些有针对性的用例的裸机配置管理和实现裸机的安装包管理器
其他OpenSource项目Airship集成
1.OpenStack-Helm
OpenStack-Helm是一个OpenStack项目,提供一组Helm图表。便于在Kubernetes上部署OpenStack和相关服务。
2. Barbican
Barbican是一个OpenStack REST API,专为安全存储、配置和管理秘钥
3. Keystone
Keystone是一个OpenStack项目,提供身份验证,授权和服务。通过HTTP协议提供给OpenStack中的其他项目使用。
4.Ironic(未来整合)
Ironic包含各类API和插件,用于管理和配置物理机器
5.Mogan(未来整合)
Mogan是一个OpenStack项目,为用户提供裸机作为基础资源,支持各种裸机配置驱动器,包括Ironic。
Airship优势
1.声明式配置
Airship使用YAML声明。 包括网络配置和裸机主机以及软件,如helm chart、docker image等,只需要通过Airship来进行YAML信息管理即可。
2.生命周期管理
Airship既可以处理初始部署,也可以处理基础设施管理平台的后期更新。
3.面向容器
容器是AIrship的软件交付单位,这样方便对基础设施管理平台的部署、开发,测试
4.灵活适用于不同的架构和软件
Airship正在提供各种规模的小型和大型环境配置。 可以使用Airship来管理的整个基础设施架构,而不仅仅是OpenStack。
预览安装
想尝试一下Airship的功能的话也没有很高的门槛,基本就是起一个Ubuntu16.04的虚拟机然后执行下面的5行命令即可[3]:
sudo -i
mkdir -p /root/deploy && cd “$_”
git clone https://github.com/openstack/airship-in-a-bottle
cd/root/deploy/airship-in-bottle/manifests/dev_single_node
./airship-in-a-bottle.sh
参考
[1].https://wiki.openstack.org/w/index.php?title=Airship&oldid=165315
[2].https://www.sdnlab.com/20822.html
[3].https://www.airshipit.org/
[4].https://airship-treasuremap.readthedocs.io/en/latest/_images/architecture.png
[5].https://airship-treasuremap.readthedocs.io/en/latest/