OpenShift3如何打破Docker容器世界的性限制。在过去的一年里,OpenShift2已经成为我个人最喜欢的开源PaaS解决方案。我当时评论说,“OpenShift非常易于使用、管理和安装,对于了解Git的开发人员和了解Puppet的管理员来说几乎没有学习曲线。”以自动化方式向外扩展就像在应用程序配置中检查设备一样简单。它默认启用自动设备空闲,并允许用户以非常高的密度部署应用程序。另外,只需要一次gitpush就可以完成应用程序的更新。无论是开发人员还是运维人员,OpenShift可以说满足了PaaS技术做出的所有功能承诺。”此后,OpenShift一直潜心退却,完成面向Docker容器的应用部署能力的转型。这是一次大规模的重构,而不仅仅是一个“弹药筒”或“齿轮”。从理论上讲,这应该让OpenShiftPaaS具有更大的易用性和访问更大的编程语言和应用程序支持资源池,这要归功于各种现成的DockerHub。容器机制。但从实用的角度来看,它的具体表现是什么呢?让我们一起来探寻答案。OpenShift3架构如图1所示。OpenShift3仍然基于RedHatEnterpriseLinux。但除此之外,几乎所有其他内容都已调整。今天的操作单元不再是“齿轮”——而是“吊舱”。每个pod由一组或多组Docker容器组成,它们一起运行在一个“节点”上。locale不再是一个“cartridge”,而是一个Dockerimage,并使用“sourcecodetoimage”工具进行代码集成。对了,node是RHEL中应用程序的运行实例。图1:OpenShift3系统架构示意图。因此调度、管理、复制功能都是主体的一部分,主体是通过基于RHEL的Kubernetes来实现的。其中一个服务层负责与底层虚拟或物理硬件甚至公共或私有云进行通信。另一个路由层负责将应用程序连接到Internet,以便它们可以被运行在计算机或移动设备上的客户端使用。开发者可以使用oc命令行界面或web控制台在OpenShift3上完成自助配置。一些功能目前只能在命令行界面中使用,但在未来的OpenShift3.1版本中将由web控制台全面支持。OpenShiftSKU和安装OpenShift目前有四个独立但密切相关的产品:OpenShiftOrigin、OpenShiftOnline、OpenShiftDedicated和OpenShiftEnterprise。OpenShiftOrigin3的主要卖点是开源和灵活性:您可以将其本身作为容器运行,使用Ansible作为集群,或者使用AmazonWebServices或GoogleCloudEngine为其提供公有云运行环境。这个版本是upstream,清楚地展示了与OpenShift2的区别。此外,它还提供了OpenShiftOrigin3VagrantVirtualBoxVM,可以在几分钟内安装。Online版本需要托管在公有云上,相当于直接从Origin代码中剥离出来的部分。但是Online版本继续沿用了齿轮机构,可以说已经完全脱离了OpenShift3。因此,我们可以认为Online仍然是运行在OpenShift2模式下。OpenShiftDedicated负责提供基于公共云的专用、定制化和托管应用程序平台,该平台托管在AmazonWebServices内的任何可用区中。此版本由OpenShift3Enterprise提供支持并由RedHat管理。OpenShiftEnterprise是目前最稳定和典型的安装选项。你需要创建一套主节点、基础设施(包括注册表、路由器和存储机制)和至少两个节点,并且你需要先从RHEL开始,然后陆续添加Docker、Kubernetes和OpenShift。理想情况下,每个主机和节点至少有8GB的RAM用于生产。Enterprise版与PivotalCF和Apprenda竞争,我个人使用RedHat提供的“旅游环境”对其进行了测试。您可以在笔记本电脑上安装和运行OpenShiftEnterprise,OpenShiftEnterprise首席技术营销经理ErikJacobs在第一次给我演示时选择这样做。Jacobs将此称为“三虚拟机”配置,其中一个虚拟机用作主节点和基础设施主机(包括注册表和路由器),而另外两个虚拟机托管应用程序。使用OpenShift3进行开发为了了解OpenShiftEnterprise如何匹配当今用户的开发需求,我放弃了我经常使用的随机PaaS评估方法,而选择使用RedHat提供的“NineLabs”机制。Lab1主要包括命令行界面工具oc的安装和运行。需要注意的是,虽然在实验室过程中一些具体步骤存在差异,但OpenShiftEnterprise中的oc版本与OpenShiftOrigin并没有太大区别。Lab2要求我们运行一组SmokeTest项目,了解如何使用oc并学习使用Web控制台的技巧,如图2所示。图2:OpenShift中的Web控制台SmokeTest应用程序概述。右侧的详细描述解释了与pod、服务和部署相关的信息。在图2的右侧,您可以在项目概览屏幕中看到详细信息面板提供的有用定义信息。具体内容如下:每个pod包含一组或多组Docker容器,它们一起运行在一个节点上,承载着应用的所有代码。服务组提供一个通用的DNS名称和一个可选的负载均衡IP地址,供pod访问。一组部署相当于应用程序的一组更新,由镜像或配置信息的更改触发。在图2的左侧,您可以在底部看到两个当前正在运行的pod,在顶部看到服务URL。SmokeTest基本上是一个“hello,world”网络应用程序。整个源码如下:echo"WelcometotheOpenShift3RoadshowSmokeTestApplication";图3显示了两个正在运行的SmokeTestpod和一个已完成的Buildpod。图3:OpenShift3Web控制台中的SmokeTest应用程序Pods视图。其中两个pod托管正在运行的应用程序;第三个pod显示构建成功。Lab3的作用是引导大家从DockerHub获取一组镜像,即KubernetesGuestbook应用,并将镜像部署到OpenShiftEnterprise中,创建运行的pod和服务。在此过程中,您会看到如下提示信息:注意:需要强调的是,出于安全考虑,OpenShift3默认不允许Docker镜像部署以root身份运行。如果您想要或需要允许OpenShift用户部署Docker镜像并以root身份运行它们(或仅针对特定用户),您将必须进行一些小的配置更改。换句话说,您不能在具有正常安全设置的OpenShift中运行任意随机Docker映像。据了解,OpenShiftEnterprise会在未来的版本中为特定用户提供Docker镜像的沙箱环境——可能是3.1.1:当前运行的镜像会在沙箱里面有root权限,但不会以root身份运行在其他OpenShiftEnterprise环境中。#p#Lab4将带您了解如何为您的服务创建路由机制,使其能够与外界通信。实验5负责指导您使用以下命令行来扩展应用程序:$ocscale--replicas=3rcguestbook-1上面的命令将在复制控制器中设置guestbook-1控制器所需的副本pod数量(简称rc)设置为3。此后rc会检查当前服务中实际的pod数量,如果当前数量为1,则再创建2个pod。如果您关闭其中一个pod,可能是因为它停止响应并需要重建,复制控制器将以几乎即时的方式快速创建一个新的pod。Lab6负责讲解s2i(即源代码到镜像),这个“神奇”的服务(一个免费的开源项目)可以“通过直接将源代码转换成Docker镜像,为用户提供可直接使用的镜像,以及新的Docker图像包括构建器图像和构建源代码。”在这一步,你可以尝试在GitHub上fork一套JBoss应用库,使用s2i和JBossEAP镜像,基于你自己的repo实现应用。创建、构建和运行:$ocnew-appjboss-eap6-openshift~https://github.com//openshift3mlbparks.git构建并运行后,我们可以通过将服务连接到互联网来创建相应的路由:$ocexposeserviceopenshift3mlbparks此服务显示北美地区的地图,但不包含任何公园位置。在实验7中,我们要做的是向服务添加一个MongoDBpod,并为数据库凭证提供各种环境变量。接下来需要在部署控制器(简称dc)中设置相同的环境变量;OpenShift会立即检测到变化的环境,获取dc版本并重新部署。同时,应用程序会与数据库进行连接,保证各个球场的位置都能正常显示。图4显示了重新部署的pod。图4:Openshift3mlbparks应用每个pod。这个应用程序负责显示每个大联盟体育场的位置。第一个pod用于运行MongoDB数据库,第二个用于运行Java应用程序,第三个是完成的构建。在实验8中,您需要在GitHub存储库中设置一个Web挂钩,当它检测到有代码推送到当前存储库时,它将通知OpenShiftEnterprise部署控制器。接下来要做的就是修改网页的源代码,检查并提交结果到GitHub。OpenShift检查传入的通知、进行更改、重构应用程序,然后成功构建dc的增量版本并重新部署它。图5展示了openshift3mlbparks应用经过多次注册后的运行效果。图5:在OpenShift上运行的美国职业棒球大联盟体育场应用程序。该应用程序依赖于Java代码并与MongoDB数据库协作。标题中的“InfoWorld”和“mod2”来自我在源代码库中添加的部分,用于触发webhook以启用OpenShift重构和重新部署应用程序。Lab9负责教您如何使用应用程序模板来加快部署过程。它实际上并没有教您如何创建模板。对于这部分内容,您可以点此查看开发者指南(英文原版)中的相应说明。OpenShiftEnterprise2的一些功能现在已在OpenShiftEnterprise3中删除。其中一项更重要的功能是齿轮空闲:OpenShiftEnterprise3目前无法空闲未接收任何流量的pod。OpenShiftEnterprise3.2可能会解决这种功能缺失的问题。同样,OpenShiftEnterprise3无法在负载增加或减少时自动扩展pod;但可以肯定的是,这个问题会在后续版本中得到修复。另一方面,OpenShiftEnterprise3可以支持蓝/绿部署。基于有问题的“绿色”部署回滚很简单:$oceditroute/blue还有,OpenShiftEnterprise3并没有像我想象的那样实现多镜像的Docker容器切换,据说是出于安全考虑。一旦下个版本的OpenShiftEnterprise引入了沙盒机制,各种镜像都可以root运行,这个问题自然就迎刃而解了。总的来说,我对OpenShift3的评价还是很正面的。而在这里我可以郑重的向大家保证,“对于开发者和运维工作者来说,OpenShift实现了PaaS技术做出的所有承诺。”总体概述OpenShiftEnterprise3已完全重写以与Docker容器技术对接。虽然还缺少一些必要的功能,但会在下一个版本中得到妥善解决,而这个PaaS解决方案的强大、易用性和出色的可扩展性毋庸置疑。OpenShift来源:免费;OpenShiftEnterprise起价为每年4,000美元,具体取决于配置(核心/VM或插槽数量)。OpenShiftOnline仍处于版本2,因此不在本次审查范围内。OpenShiftDedicated目前处于抢先体验阶段,并已升级到版本3,可在任何AWS可用区运行。优点容器、语言、Web框架、数据库和应用程序堆栈的广泛可用性和支持。易于使用和快速的自我部署。在源代码级别实施Git集成。它可以运行在任何支持红帽企业Linux系统的硬件、云或虚拟机上。能够运行任何符合安全要求的LinuxDocker容器系统。缺点许多常见的Docker容器不能满足其严格的安全要求。相当于“gearidle”的新版本尚不可用。尚不支持WindowsDocker容器。目前,只能通过命令行界面手动进行Pod缩放。原标题:回顾:OpenShift3rocksDocker容器【.com独家翻译,合作站点转载请注明出处】
