OpenStack支持虚拟机、存储卷和网络配置的部署和管理,并支持各种管理程序、存储后端和网络技术。OpenStack还提供API和web界面,供用户访问和管理其云资源。
OpenStack由各种相互依赖的组件组成,这些组件一起工作,以提供一个完整的云计算平台。这些组件包括:
——计算(Nova):提供对计算资源(包括虚拟机(VM)和裸金属服务器)的可扩展、按需访问的组件。
——对象存储(Swift):用于存储和检索大量数据的分布式对象存储系统。
——块存储(Cinder):为VM提供持久块级存储的组件。
——网络(Neutron):提供网络即服务(NaaS)的组件,用于VM和其他云资源。
——身份(Keystone):为所有其他OpenStack组件提供身份验证和授权服务的组件。
——镜像(Glance):为VM镜像提供存储库的组件。
——仪表板(Horizon):用于管理OpenStack资源的基于web的图形用户界面(GUI)。
笔者将讨论在OpenStack上部署软件的主要选项——包括内部部署、公共云、私有云、Kubernetes以及蓝绿色部署等渐进式部署。
OpenStack上的传统软件部署
内部部署
内部部署OpenStack发行版是指在用户自己的硬件上安装和运行的OpenStack平台版本,而不是在公共云或私有云中。该发行版为用户提供了对云基础设施的部署和管理的更多控制,允许定制和与现有IT系统集成。它是使用基于公共云或私有云的OpenStack部署的替代方案,非常适合具有特定安全、合规性或数据主权要求的组织。
基于OpenStack的公共云解决方案
基于OpenStack的公共云解决方案是一种云计算服务,它使用OpenStack平台构建并通过互联网交付给客户。在此模型中,云服务提供商管理底层OpenStack基础设施,并通过web界面或API向客户提供对计算、存储和网络资源的访问。
然后,客户可以使用这些资源托管他们的应用程序和数据,而无需投资和管理自己的硬件和软件。这为传统IT基础设施提供了一种经济高效且可扩展的替代方案,并允许客户在利用云服务提供商的专业知识和基础设施的同时,从OpenStack的特性和功能中获益。AWS就是一个例子。
基于OpenStack的私有云
供应商托管的OpenStack私有云是指由第三方供应商安装和管理OpenStack平台,但仅由单个组织使用的云计算解决方案。在此模型中,供应商提供OpenStack基础设施的硬件、软件和管理,而客户保留对其应用程序和数据的部署和管理的控制权。
客户享有私有云的好处,包括对安全和合规性的更多控制,但无需投资和管理底层硬件和软件。对于那些需要私有云的好处但缺乏自行构建和维护私有云的资源或专业知识的组织来说,这可能是一个经济高效的解决方案。
OpenStack即服务
OpenStack即服务(OpenStackaaS)是指一种云计算服务,其中OpenStack平台作为一种完全管理的解决方案提供给客户。在此模型中,云服务提供商安装、管理和维护OpenStack基础设施,并通过web界面或API向客户提供对计算、存储和网络资源的访问。
客户可以使用这些资源托管其应用程序和数据,而无需投资和管理自己的硬件和软件。提供商通常负责OpenStack的所有运维方面,如安装、升级、安全和维护,允许客户专注于其应用程序和数据。
Kubernetes在OpenStack上的部署
OpenStack适合部署Kubernetes,原因有几个。它为部署Kubernetes提供了可扩展的基础设施,允许组织轻松地扩展集群以满足不断变化的需求。OpenStack包含高级网络功能,如负载均衡和安全组,非常适合部署和管理Kubernetes集群。
Kubernetes容器中的OpenStack
你可以使用OpenStack Helm项目在Kubernetes容器中托管OpenStack。OpenStack Helm是Helm图表的集合,提供了在容器化环境(如Kubernetes)中部署OpenStack的灵活方式。
以下是使用OpenStack Helm在Kubernetes集群中部署OpenStack的示例脚本:
$ git clone https://github.com/openstack/openstack-helm.git
$ cd openstack-helm
$ helm install .
$ helm upgrade .
使用Kubernetes的独立OpenStack
OpenStack可以在独立的Kubernetes集群上运行,而不是在现有基础设施上运行。在这种设置中,OpenStack服务作为容器部署在Kubernetes集群中,允许组织利用Kubernete提供的可扩展性、灵活性和易管理性,同时仍然使用OpenStack满足其云计算需求。
Ironic配置的硬件上的Kubernetes
Ironic是一种OpenStack服务,提供裸金属资源调配功能。它旨在在云环境中提供和管理物理服务器,为裸金属服务器提供一致的API和工作流,类似于OpenStack中管理虚拟机的方式。
在Ironic提供的硬件上运行Kubernetes集群可提高资源利用率、一致的工作流程、成本效率,并增强对硬件资源的控制,使其成为希望在混合云环境中部署和管理其Kubernete集群的组织的一个有吸引力的选择。
OpenStack中的Canary和Blue Green部署
金丝雀部署和蓝-绿部署是两种可用于在OpenStack等云环境中部署应用程序更新的技术。这两种技术都涉及创建应用程序的新版本,并将其与现有版本一起部署,从而允许用户在旧版本仍然可用的情况下访问新版本。
以下是如何在OpenStack中执行金丝雀和蓝-绿部署的简要概述:
——创建应用程序的新版本,并将其打包到VM镜像或容器镜像中。
——使用OpenStack的Compute(Nova)服务在与现有版本不同的环境中启动一个或多个运行新版本应用程序的VM或容器。
——设置负载均衡器,例如OpenStack的负载均衡器即服务(Octavia),以在应用程序的旧版本和新版本之间分配流量。
——最初,只有一小部分用户或测试环境应该被引导到应用程序的新版本。
——监控新版本的性能并收集用户的反馈。
——一旦新版本稳定并可用于生产,请切换负载均衡器以将所有流量发送到新版本。旧版本仍然可用,以备新版本出现问题时使用。
——如果新版本出现问题,请将负载均衡器切换回旧版本,直到问题得到解决。
结论
OpenStack为希望在云环境中部署和管理其应用程序和服务的组织提供了一系列软件部署选项。从公共云解决方案到内部部署发行版和供应商托管的私有云,OpenStack为部署和管理应用程序提供了一个灵活且可扩展的平台。
此外,OpenStack还支持金丝雀和蓝-绿部署等部署策略,这些部署策略允许组织以最小的停机时间和降低的风险部署新版本。无论你希望部署简单的应用程序还是复杂的多层解决方案,OpenStack都提供了完成任务所需的工具和资源。OpenStack具有开源的特性和充满活力的社区,对于希望在云环境中部署和管理其应用程序的组织来说,它是一个强有力的选择。