1.OpenShift的逻辑架构OpenShift的逻辑架构如图2-6所示。▲图2-6OpenShift逻辑架构图2-6中的关键组件介绍如下。底层基础设施:OpenShift可以运行在公共云(AWS、Azure、Google等)、私有云(OpenStack)、虚拟机(vSphere、RHV、RedHatKVM)、X86和IBMPower/Z服务器上。ControlPlane:负责整个集群的调度和管理,如认证授权、容器调度、应用管理、服务注册和发现等。控制节点需要运行在CoreOS系统上。计算节点(Worker):提供在OpenShift上运行容器应用所需的计算资源,如Tomcat、MongoDB等。您可以选择根据运行容器的类型,将节点进一步细分为Infra节点和App节点。Infra节点运行集群的附加组件(如路由器、日志、监控等),App节点运行真正的业务应用容器。计算节点可以在CoreOS或RHEL上运行。Kubernetes层:OpenShift会集成最新版本的Kubernetes,通过Kubernetes实现核心功能。应用生命周期管理层:OpenShift通过Jenkins或Teckton实现应用的CI/CD。ServiceCatalog层:提供各种预装的应用服务,如Redis、OpenJDK等,实现基础服务和自助服务的快速创建和管理。容器层:多种编程语言运行时、数据库和其他软件包的经过认证的容器镜像可以在OpenShift上运行。二、OpenShift的技术架构了解了OpenShift的逻辑架构之后,接下来就是讲解OpenShift使用了哪些关键技术。OpenShift的技术架构如图2-7所示。▲图2-7OpenShift的技术架构是分层的,我们从下往上介绍。OpenShift的底层操作系统是RedHatCoreOS。RedHatCoreOS是一个精简的RHEL发行版,专门用于容器执行的操作系统。CRI-O是KubernetesCRI(容器运行时接口)的一个实现,以支持使用OCI(开放容器计划)兼容的运行时。CRI-O可以使用任何满足CRI的容器运行时,例如runC、libpod或rkt。Kubernetes是一个容器调度和管理平台,具体功能我们就不赘述了。Etcd是一种分布式键值存储,Kubernetes使用它来存储有关Kubernetes集群元数据和其他资源的配置和状态信息。CustomResourceDefinition(CRD)是Kubernetes提供的用于扩展资源类型的接口。自定义对象也存储在Etcd中并由Kubernetes管理。容器化服务(ContainerizedService)使PaaS功能组件以容器的方式运行在OpenShift上。ApplicationRuntimeandxPaaS(运行时和xPaaS)是可供开发者使用的基础容器镜像,每一个都预先配置了特定的运行时语言或数据库。xPaaS产品是一组用于RedHat中间件产品(例如JBossEAP和ActiveMQ)的基础镜像。OpenShiftApplicationRuntime(RHOAR)是用于在OpenShift中运行云原生应用程序的程序运行时,包括RedHatJBossEAP、OpenJDK、Thorntail、EclipseVert.x、SpringBoot和Node.js。DevOps工具和用户体验:OpenShift提供用于管理用户应用程序和OpenShift服务的WebUI和CLI管理工具。OpenShiftWebUI和CLI工具是使用RESTAPI构建的,可以与IDE和CI平台等外部工具集成。作者简介:魏新宇,红帽副首席解决方案架构师。拥有丰富的IaaS和PaaS经验,致力于开源解决方案在企业的推广应用。从售前角度领导红帽在金融和汽车行业的多个PaaS项目。曾就职于华为、IBM、VMware。郭跃军目前在VMware担任解决方案工程师。曾在RedHat担任PaaS顾问,在AWS咨询服务团队担任云架构顾问,熟悉私有云和公有云生态。自2015年接触容器技术以来,一直战斗在PaaS建设第一线,参与了多个OpenShift项目的招标、PoC、咨询和实施,帮助多家企业实现数字化转型。本文节选自《OpenShift在企业中的实践:PaaS DevOps 微服务》(第2版),经出版社授权发布。
