OpenShift对Kubernetes生态的延伸主要体现在七个方面,我们接下来分别介绍这七个方面。
目前OpenShift Pipeline默认使用Tekton。Tekton是一个功能强大且灵活的Kubernetes原生开源框架,用于创建持续集成和交付(CI/CD)。通过抽象底层实现细节,用户可以跨多云平台和本地系统进行构建、测试和部署。
Tekton将许多Kubernetes自定义资源(CR)定义为构建块,这些自定义资源是Kubernetes的扩展,允许用户使用Kubectl和其他Kubernetes工具创建这些对象并与之交互。
虽然OpenShift默认使用Tekton实现Pipeline,但OpenShift会继续发布并支持与Jenkins的集成。OpenShift与Jenkins的集成,体现在以下几个方面:
·统一认证:OpenShift和部署在OpenShift中的Jenkins实现了SSO。根据OpenShift用户在Project中的角色,可以自动映射与之匹配的Jenkins角色(view、edit或admin)。
·OpenShift提供四个版本的Jenkins:默认已经提供了一键部署Jenkins的四个模板,如图2-4所示。
图2-4 四种类型的Jenkins模板
·自动同步Secret:在同一个项目中,OpenShift的Secret与Jenkins凭证自动同步,以便Jenkins可以使用用户名/密码、SSH密钥或Secret文本,而不必在Jenkins中单独创建。
·Pipeline的集成:可以在Jenkins中定义Pipeline来调用OpenShift API,完成一些应用构建和发布等操作。
在Kubernetes刚发布时,红帽主要想借助Kubernetes构建企业级开发平台。为了全面提升OpenShift的运维能力,红帽收购CoreOS,将其中优秀的运维工具纳入OpenShift中。CoreOS麾下能大幅提升OpenShift运维能力的组件有:
·Tectonic:企业级Kubernetes平台。
·Container Linux:适合运行容器负载的Linux操作系统CoreOS。
·Quay:企业级镜像仓库。
·Operator:有状态应用的生命周期管理工具。
·Prometheus:容器监控平台。
CoreOS在Prometheus社区建立了领导地位,这为红帽带来了宝贵的专业知识。红帽OpenShift也逐步与CoreOS完成整合。
·在监控方面,Prometheus成为默认的监控工具,提供了原生的Prometheus监控、警报和集成的Grafana仪表板。
·在运维管理方面,OpenShift将CoreOS Tectonic控制台的功能完全融入OpenShift中,提供运维能力很强的Cluster Console。
·操作系统CoreOS作为OpenShift的宿主机操作系统。
·将Operator作为集群组件和容器应用的部署方式。
·Quay正在与OpenShift进行最后的集成。后面OpenShift的Docker Registry可以由Quay替代。
CoreOS推出了在Kubernetes上管理应用的新方——perator。Operator扩展了Kubernetes API,它可以配置和管理复杂的、有状态应用程序的实例。如今,Operator能够管理的应用类型越来越多。
Operator为什么这么重要?这是因为我们在Kubernetes上运行复杂的有状态应用程序(如数据库、中间件和其他服务)通常需要特定于该应用领域的知识。Operator允许将领域知识编程到代码中,以便使每个应用能够自我管理,主要利用Kubernetes API和声明性管理功能来实现这一目标。Operator可以实现跨混合云的应用生命周期统一管理。
OpenShift提供一个非常方便的“容器应用商店”:OperatorHub。OperatorHub提供了一个Web界面,用于发现和发布遵循Operator Framework标准的Operator。开源Operator和商业Operator都可以发布到OperatorHub。截至目前,OperatorHub中的应用数量超过200个,如图2-5所示。
图2-5 OperatorHub应用概览
Kubernetes虽然对运行在其上的容器化应用有较强的管理能力,但Kubernetes缺乏对Kubernetes下的基础设施进行管理的能力。为了实现PaaS对基础架构的纳管,OpenShift引入Machine API,通过配置MachineSet实现IaaS和PaaS统一管理。也就是说,当OpenShift集群性能不足的时候,自动将基础架构资源加入OpenShift集群中。目前OpenShift实现了对AWS EC2、微软Azure、Red Hat OpenStack等云平台的纳管。
安装Kubernetes集群后,一个重大挑战是让它们保持最新状态。CoreOS率先推出了Tectonic和Container Linux的“over the air updates”概念。通过这个技术,客户能够将OpenShift集群连接到红帽官网,这样客户就可以收到有关新版本和关键更新的自动通知。如果客户的OpenShift集群不能连接红帽官网,客户仍然可以从本地镜像仓库下载和安装相同的更新。
OpenShift的主机操作系统基于CoreOS,将提供平滑升级的能力。
红帽为上游Istio社区做出贡献,并在OpenShift上发布企业级Istio。Istio通过Envoy为微服务添加轻量级分布式代理来管理对服务的请求。在OpenShift 4.2上的Red Hat Istio已经正式发布,Istio也将是本书着重介绍的一部分内容。
Knative是一种支持Kubernetes的Serverless架构。红帽是Knative开源项目的贡献者,红帽希望基于OpenShift实现开放的混合无服务器功能(FaaS)。如今,AWS Lambda等FaaS解决方案通常仅限于单一云环境。红帽的目标是与Knative、OpenWhisk社区以及其他的FaaS提供商合作,为开发人员在混合的多云基础架构中构建应用程序提供无服务器功能。
在介绍了OpenShift与Kubernetes之间的关系后,接下来将从企业使用的视角逐步展开说明OpenShift的各部分架构。