阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

在AWS中部署OpenShift平台

176次阅读
没有评论

共计 3198 个字符,预计需要花费 8 分钟才能阅读完成。

OpenShift 是 RedHat 出品的 PAAS 平台。OpenShift 做为 PAAS 平台最大的特点是它是完全容器化的 PAAS 平台,底层封装了 Docker 和 Kubernetes,上层暴露了对开发者友好的接口来完成对应用程序的集成、部署、弹性伸缩等任务。

Docker 提供了对打包和创建基于 Linux 的轻量级容器的抽象。而 Kubernetes 提供了多主机集群管理和 Docker 容器编排。OpenShift 基于 Docker 和 Kubernetes 加入了新的功能:

  • 源代码管理、构建和部署
  • 在系统中集成镜像的管理
  • 按需扩展的应用程序管理
  • 在大型开发者组织中进行团队管理和用户追踪

OpenShift 直接提供支持的应用程序镜像有:

在 AWS 中部署 OpenShift 平台

OpenShift 直接提供支持的数据库镜像有:

在 AWS 中部署 OpenShift 平台

除此之外,OpenShift 还让你通过一键点击便生成相应的应用,比如几秒之内搭建好一个 Jenkins 服务。包括以下:

在 AWS 中部署 OpenShift 平台

OpenShift 架构概览

在 AWS 中部署 OpenShift 平台

从上图可以看出,OpenShift 的典型用户分为两种,开发人员和运维人员。开发人员可以通过现有的代码管理工具和持续集成、交付工具利用 OpenShift 完成对应用程序的打包、部署、扩容操作。而运维人员可以利用现有的自动化工具实现对 OpenShift 平台的维护。

OpenShift 中的 Kubernetes 用来管理跨宿主机(或容器)的容器化应用程序,并提供部署、维护和应用程序扩容机制。对于一个 Kubernetes 集群来说,它包括一个或多个 master 以及一组 node。

Master 主机托管了 API 服务器、controller manager 服务器以及 etcd 实例。Master 管理 Kubernetes 集群中的节点并控制运行在节点上的 pod。

Node 则提供了容器的运行时环境。Kubernetes 节点中的每个 node 会运行受 Master 管理的服务,当然也包括 Docker、Kubelet 及 serverice proxy 服务。node 可以为云机器、物理系统或者虚拟系统。Kubelet 用来更新 node 上的运行的容器状态。Service Proxy 用于运行一个简单的网络代理,来反映定义在 node 的 API 中的服务,从而使 node 可以跨后端进行简单的 TCP 和 UDP 流转发。

OpenShift 架设要求

如果想自己架设 OpenShift 平台作为商业用途,必须要获取 OpenShift Enterprise 的付费订阅。目前 OpenShift Enterprise 的最新版本为 3.6 版。对于 Master 和 Node 节点的系统要求如下。

Master:

  • 物理或虚拟机,或者运行于公有云或私有云之上的实例
  • 基础操作系统为 Red Hat 企业版 Linux(RHEL)7.1,并包含最小的安装选项
  • 2 核 CPU
  • 最小 8GB 内存
  • 最小 30GB 硬盘空间

Node:

  • 物理或虚拟机,或者运行于公有云或私有云之上的实例
  • 基础操作系统为 Red Hat 企业版 Linux(RHEL)7.1,并包含最小的安装选项
  • Docker 1.6.2 及以上版本
  • 1 核 CPU
  • 最小 8GB 内存
  • 最小 15GB 硬盘空间
  • 另外最小 15GB 的未分配空间,需要通过 docker-storage-setup 进行配置

环境要求:

  • 需要一个 DNS zone 来解析 OpenShift router 的 IP 地址。比如 *.cloudapps.example.com. 300 IN A 192.168.133.2
  • Master 和 Node 之间必须要有共享的网络,两者之间可以互相通讯。
  • 需要一个 Git Server 和能够访问该 Server 的账号。

AWS 中部署 OpenShift 平台

下图是一个在 AWS 中的 OpenShift 集群的示例。

在 AWS 中部署 OpenShift 平台

  • Master 节点:包含 3 个 Master 实例,实现高可用,上面运行 etcd、通过一个 external load balancer 向外暴露服务。

  • Infra Node: 由三个实例组成,这三个实例用来运行支撑 OpenShift 集群服务的一系列容器。

  • App Node:用于运行应用程序容器的实例,可以按需进行扩展。

  • Bastion:用于限制对集群中实例的 ssh 访问,增强安全性。

  • 存储:OpenShift 使用 EBS 作为实例的文件系统并用于持久化容器的存储;另外还使用 S3 这个对象存储服务作为 OpenShift registry 的存储。ELB:总共有三个. 一个用来在集群外访问 OpenShift API、OpenShift console。一个在集群内访问 OpenShift API。另一个用来访问通过 route 暴露的部署在集群中的应用程序服务。最后通过 AWS 的 Route53 来管理 DNS。

部署 OpenShift 集群的三个阶段

在 AWS 中部署 OpenShift 集群包括三个阶段:

  • 第一阶段:在 AWS 中设置好基础设施
  • 第二阶段:在 AWS 上部署 OpenShift Container 平台
  • 第三阶段:部署后的环境检查

关于整个部署活动绝大多数都是可以自动化的。RedHat 提供了一个 GitHub repo:openshift-ansible-contrib。openshift-ansible-contrib 提供了将 OpenShift 集群部署到不同的 Cloud 供应商的解决方案,当然也包括了 AWS。里面包含了相应的文档、代码以及脚本。RedHat 提供了一个叫做 openshift-ansible-playbooks 的 RPM 包,openshift-ansible-contrib 利用该 RPM 包来完成阶段 1 和阶段 2,在阶段 3 中我们可以利用一些现有的脚本工具实现环境检查和认证。

对 AWS 环境的要求

选择部署的 AWS 区域需要至少有三个可用区以及 2 个 EIP。该 OpenShift 平台需要新建三个公共子网和三个私有子网。由于需要新建一大批的 AWS 资源,所以必须要提供一个有适当权限的 AWS 用户,包括创建账号、使用 S3、Route53、ELB、EC2 等。

六个子网需要在一个 VPC 中。Ansible 脚本会建立一个 NAT Gateway 用来供内部的 EC2 实例访问外网。同时也会建立 8 个 Security Groups 来限制不同的实例、ELB 和外部网络间的访问。

openshift-ansible-contrib 提供了部署基础设施、安装和配置 OpenShift 以及扩展 router 和 registry 的功能。运行 Ansible 的机器必须是 RHEL7 操作系统。具体的安装过程可参见 https://access.redhat.com/documentation/en-us/reference_architectures/2017/html/deploying_openshift_container_platform_3.5_on_amazon_web_services/deploying_openshift%E3%80%82

安装完毕后的环境检查可以参见 https://access.redhat.com/documentation/en-us/reference_architectures/2017/html/deploying_openshift_container_platform_3.5_on_amazon_web_services/operational-management%E3%80%82

总结

在 AWS 上部署 OpenShift 平台并不是一件轻松的事情,一方面需要对 AWS 的各种服务了如执掌,一方面也需要对 OpenShift 的架构和核心概念有所了解。虽然 RedHat 提供了一些 Ansible 脚本和 RPM 包来简化安装,但整个过程也绝非一片坦途。安装完备之后,如何和企业现有的应用程序开发流程、持续交付流水线结合起来无缝过度,也是一件非常考验人的事情。下一篇文章会对这些方面进行揭秘。

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-08/146475.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3198字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中