某医疗制造企业,在疫情环境之下急速发展,业务规模迅速扩大,海外市场订单暴增,该医疗企业及时抓住国际市场机遇,树立自身的国际品牌形象,在提升医疗制造技能的同时更注重IT建设和服务创新。
为了能迅速支撑并服务激增的海外业务,该医疗企业在海外亚马逊云科技公有云环境借助 OpenShift 托管服务,迅速搭建起云原生的开发和运行环境,令海外业务系统准时上线,紧跟业务的步伐,也充分体现了IT对业务的支持与促进作用。
OpenShift是一个企业级的Kubernetes容器平台,它为企业应用系统的开发和运行提供了一个易扩展、可信任的容器环境。OpenShift扩展了Kubernetes容器编排平台,内置企业级应用扩展组件,以增强企业级应用的生命周期管理能力,从开发到运维能力的增强再到安全项的加固。借助OpenShift,用户可以在混合云、多云的环境中实现工作负载的持续集成和持续部署。
ROSA是R ed Hat OpenShift Service on Amazon Web Services 的简称,它是红帽容器平台OpenShift在亚马逊云科技上的托管服务。用户可以在ROSA上快速构建和部署业务应用,不需要过多的关心底层基础设施的搭建和运维,因此ROSA的用户更能关注于企业的业务价值,而不是与企业业务无关的环境和不同基础设施的适配。
亚马逊云科技和红帽的 站点可靠性工程(SRE) 专家负责管理和运维底层平台,因此用户不必担心复杂的基础架构层管理工作。ROSA 还提供了与亚马逊云科技的计算、存储、网络、数据库、分析工具、机器学习、移动应用等服务的无缝集成,在加速用户业务系统的构建与交付的同时也节省了用户的运维成本。
ROSA 架构支持多种网络配置类型:公共网络、专用网络和亚马逊云科技 PrivateLink 网络,可满足不同用户的安全需求。
该医疗制造企业把ROSA的OpenShift创建在独立的私有网络中,通过亚马逊云科技的负载均衡器对外提供业务访问,不直接被外部访问,如业务负载需要访问外网,则通过NAT网关间接访问,业务负载分布在多个高可用区中保证其高可用性。
ROSA的管理员和开发人员与OpenShift分布在不同的VPC( Virtual Private Cloud )私有网关中,私有VPC直接通过亚马逊云科技中转网关(Transit Gateway)连接,如果需要从外网对业务负载或OpenShift容器平台进行管理,则需要通过对外子网的堡垒机再次跳转,这样在保证安全性的同时也不失其灵活性。
系统的有状态应用持久化到云原生存储ODF (OpenShift Data Foundation) 中,ODF 是基于 Ceph、Noobaa 和 Rook 软件组件的云原生存储、数据管理和数据保护组合。其中,Ceph 提供对象、块和文件存储。Noobaa抽象出跨混合多云环境的存储基础架构,并提供数据存储服务管理。Rook 编排了多个存储服务,每个服务都有一个 Kubernetes 算子,可用于设置 Ceph 集群。
数据的可靠性和完整性由Ceph的3副本保证,在ROSA环境中,ODF创建在亚马逊云科技的EBS (Elastic Block Storage) 上,多份EBS均匀地分布在3个高可用区中,Ceph在EBS之上池化并对外提供对象存储、块存储和文件存储,满足云原生所有场景的存储需求。Ceph的 3 副本分布在亚马逊云科技的3个高可用区中,因此能保证数据的可用性和完整性。
系统的安全设计已考虑到多层次、多维度的安全保障:系统层面、网络层、容器层、应用层、数据层、用户层,主要设计如下:
1.系统层安全
系统层面安全是ROSA所运行的基础设施上的操作系统,在这层提供的安全保障措施包括:
操作系统自身的安全
ROSA的容器平台(OpenShift)部署在Red Hat CoreOS(RHCOS)操作系统上,RHCOS是红帽专门针对容器提供的云操作系统,它继承了红帽企业操作系统(RHEL)的稳定、安全同时,针对容器云环境做了加固,内置容器运行环境所必须的软件包,去除了支撑容器运行外的非必要、有安全隐患的软件包。
RHCOS的用户空间是只读的,这就有效的避免了潜在的、对操作系统的恶意攻击,当系统维护人员需要维护操作系统时,需要通过最初安装时指定的ssh key才能登录。
操作系统安全性扫描
RHCOS可以满足第三方安全管理系统的要求,接受相关第三方安全系统对本平台的服务器操作系统层面的安全扫描和检查,即使通过补丁升级等方式满足最新的操作系统安全要求。
2.网络层安全
OpenShift容器平台(以下简称为平台)配备多个级别的网络安全管理,在 Pod 级别上网络命名空间可以用来限制网络访问、防止容器查看其他 Pod 或主机系统,网络策略可让平台控制允许或拒绝特定的连接,也可以通过应用程序的入口和出口流量进行控制,详情如下:
使用网络命名空间
平台使用软件定义网络(SDN) 来提供一个统一的集群网络,它允许集群中的不同容器相互间进行通信。
默认情况下,网络策略模式使项目中的所有Pod 都可被其他 Pod 和网络端点访问。要在一个项目中隔离一个或多个 Pod,可以在该项目中创建 NetworkPolicy 对象来指示允许的入站连接。如使用多租户模式,可以为 Pod 和服务提供项目级别的隔离。
使用网络策略隔离Pod
使用网络策略,可以在同一项目中将Pod 相互隔离。网络策略可以拒绝对 Pod 的所有网络访问,只允许入口控制器的连接,拒绝其他项目中的 Pod 的连接,或为网络的行为方式设置类似的规则。
使用多个Pod 网络
默认情况下,每个运行中的容器只有一个网络接口。Multus CNI 插件容许平台创建多个 CNI 网络,然后将任何这些网络附加到 Pod。这样,就可以执行一些高级的操作,例如将私有数据单独放在更为受限的网络上,并在每个节点上使用多个网络接口。
隔离应用程序
平台允许为单个集群上的网络流量分段以创建多租户集群,使用户、团队、应用程序和环境与非全局资源隔离。
保护入口流量
如何配置从平台集群外对平台内服务的访问会产生很多安全影响。除了公开HTTP 和 HTTPS 路由外,入口路由还允许设置 NodePort 或 LoadBalancer 入口类型。NodePort 从每个集群 worker 中公开应用程序的服务 API 对象。借助 LoadBalancer,可以将外部负载均衡器分配给平台集群中关联的服务 API 对象。
保护出口流量
平台提供了使用路由器或防火墙方法控制出口流量的功能。例如,可以使用IP 白名单来控制对数据库的访问。集群管理员可以为SDN 网络供应商中的项目分配一个或多个出口 IP 地址。同样,集群管理员可以使用出口防火墙防止出口流量传到平台集群之外。
通过分配固定出口IP 地址,可以将特定项目的所有出站流量分配到该 IP 地址。使用出口防火墙时,就可以阻止 Pod 连接到外部网络,阻止 Pod 连接到内部网络,或限制 Pod 对特定内部子网的访问。
3.容器层安全
在容器层,平台提供如下措施进行安全保障:
容器自身安全隔离
容器是在一台Linux上启动多个在独立沙箱内运作的应用,相互不影响。容器底层使用Linux 内核的namespace、cgroups、SELinux对不同容器的CPU、内存、网络、存储、进程等进行隔离。
容器集群的安全隔离
在容器层面还可以通过不同的容器集群进行隔离,不同的容器集群拥有自己独立的主机、存储卷、网络、镜像仓库、管理节点、Node节点,达到进一步的隔离。
安全上下文約束(Security Context Constraints)- SCC
平台在Kubernetes基础上添加了 安全上下文約束(SCC),对容器运行的特殊权限进行控制,比如:root权限运行容器、是否可以挂载宿主机上的磁盘、是否可以访问宿主机上的资源、是否可以用任何指定用用户ID运行等做了限制,默认不开通,可以在经过安全组评估后可开通的情况下再进行开通。
4.应用层安全
平台上运行的应用镜像是经过安全组件扫描的。
5.数据层安全
平台从数据保存和数据传输方面保障数据层的安全。
6.用户层安全
在用户层平台也提供必要的安全保障。
用户权限管理
支持“用户账号-角色-权限”模式进行用户和权限管理,不直接对用户账号进行权限的管理而是通过角色进行权限管理。
支持企业和个人账号的注册登录,支持多租户的管理,多租户间应用隔离、网络隔离、资源隔离。提供组织、空间、权限和域名管理,支持公司,不同用户登陆云计算门户后可以获取自己的计算资源。
提供角色的管理,通过角色进行权限的赋予与管理。支持对细粒度的资源权限的管理定义。间的虚拟网络是完全隔离的。对于租户自有的应用,租户可以自由选择隔离或者打通。
支持单点登录集成
支持与现有的系统进行单点登录集成,实现用户的统一管理和单点登录认证。
租户隔离
从技术角度,所有租户共享平台的底层物理资源(计算、存储、网络);
从用户角度,用户所有的物理资源及其至上应用、数据都是隔离的。为了保障安全性,不同租户之间的虚拟网络是完全隔离的。对于租户自有的应用,租户可以自由选择隔离或者打通。
业务负载与基础组件分布在ROSA上以命名空间方式隔离的四个环境中:基础环境、开发环境、测试环境和生产环境。
基础环境中Quay是业务应用在容器环境运行的镜像仓库,云原生的管道工具Tekton负责从源码仓库中获取业务应用源代码,以管道方式执行构建、测试、镜像打包、开发环境业务部署、并推送产生的镜像到镜像仓库Quay中。
ArgoCD以GitOps方式部署新产生的镜像到测试环境中,进行QA测试,测试通过后再由ArgoCD部署镜像到生产环境,整个过程由Tekton管道驱动。由于环境的持续部署是以GitOps方式进行,因此,任何版本的发布记录都会在部署专有的git仓库中留有痕迹,可回溯、可回退。
1.Tekton简介
Tekton 是一个强大、灵活的构建 CI/CD 流水线系统的开源框架,允许开发者构建、测试和发布应用。Tekton 是云原生的,通过定义 CRD ,让用户快速灵活定义流水线。
Tekton的组件包括:
使用Tekton的优势:
2.ArgoCD简介
ArgoCD是一个专为Kubernetes而生,遵循GitOps理念的持续部署工具。Gitops简单来说就是:
1) 以Git为核心;
2) 声明式定义各类对象;
3) 配置一致性管理。
ArgoCD的主要功能
3.应用部署整体优势
系统的部署与架构设计已考虑到系统的扩展能力。在业务增长、请求激增的情况下,可按需自动或手动扩展业务应用的副本数,以保证业务系统的容量和响应时间;在基础设施层计算资源不足的情况下,可充分发挥亚马逊云科技公有云环境的优势:无限扩展计算资源、按需付费、节省成本。
当拓展新的海外市场时,可以立即开启新区域的ROSA服务,并通过多云管理组件纳管ROSA实例,克隆业务应用到新的ROSA上,极大缩短了业务在新市场上线的周期,为该医疗制造企业提供了业务的能力复制,提升了企业自身在国际市场的服务和竞争能力。
当需要将海外业务下沉到国内市场时,可以充分利用既有的数据中心资源,借助多云管理组件纳管私有数据中心的OpenShift实例,下沉业务应用到私有数据中心的OpenShift上,实现海外业务能力到国内市场的迅速复制,实现国内外业务的无缝衔接。
三大建设策略和对应收益:
1.采纳成熟开源技术
2.兼容多种开发语言
3.注重团队能力建设
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞13
添加新评论6 条评论
2022-12-28 09:22
2022-12-28 09:19
2022-12-27 19:21
2022-12-26 18:55
2022-12-26 17:59
2022-12-26 17:46