容器安全技术容器使用场景

容器使用场景

容器提供了类似虚拟机
的隔离功能,但系统资源消耗比虚拟机少得多,近年来在多个场景中得到了越来越广泛的应用。中国信息通信
研究院 2018 年发布的《中国云计算开源发展调查报告》[29]显示,30.1% 的企业已经将容器技 术投入生产环境使用,较 2016 年增长了 6.8%,正在测试环境使用容器的企业占比为 36.3%,还有 24.5% 的企业 正在对容器技术进行评估。技术普及度不够(43.7%)、缺少成功案例(41.4%)和对安全性的担忧(33.8%)是 很多企业尚未使用容器技术的三个最主要原因。该调查报告中还对容器的使用场景进行了统计,其中 57.9% 的企业将其用于运维自动化
,占比最高。其它使 用场景还包括开发测试的快速交付(34%)、多环境一致性管理(31.2%)、CI/CD(29.4%)以及微服务(22.7%)。本文将容器技术的使用场景归纳总结为云计算
中的容器服务、DevOps、微服务、运维自动化等。下面本节 将就这几个主要使用场景进行简要的介绍和分析。1. 云计算
平台即服务(Platfor
m as a Service,PaaS)和容器即服务(Container as a Service,CaaS)都是云计算的 服务模式,是将软件研发的平台或者业务基础平台作为一种服务提供给用户。由于其对 DevOps、CI/CD 天然的 优势,CaaS 正如雨后春笋般发展起来。无论是国外的谷歌、微软或亚马逊,还是国内的华为、阿里、腾讯等云服务商,均在其公有云中提供了容器 服务。例如谷歌的 GKE[30](Google Kubernetes Engine)、微软的 AKS[31](Azure Kubernetes Service)和 ACI[32](Azure Container Instances)、亚马逊的 ECS[33](Elastic Container Service)和 EKS[34](Elastic Container Service for Kubernetes)。
据 RightScale2017 年的调查报告 [35],在云服务商提供的服务中,Docker 的使用占据了很大的比重,包括 AWS ECS(35%)、Azure 容器服务(11%)以及谷歌容器引擎(8%)。
国内有包括 DaoCloud、数人云、时速云、灵雀云等众多企业级 PaaS 云服务提供商,对接金融、政府和电 信等行业,助力企业打造领先的云原生应用平台。其中绝大多数的服务提供商,在技术上也均选择了 Docker 作 为其容器运行时引擎。
2. DevOps
当前软件系统的开发过程通常包括编码、单元测试、集成测试、处理 bug 等步骤,如图 2.18 所示。随着系 统复杂度的增加,模块之间的依赖关系越来越复杂,很多 bug 要到项目集成时才能发现,而且距离开发阶段越久, bug 的修复成本就越高。

发现 bug 分配bug
DevOps 是一个面向 IT运维的完整工作流,以 IT自动化和持续集成(CI)、持续部署(CD)为基础,来优化开发、 测试、运维等所有环节。
DevOps 成为开发和运营的新组合模式,强调软件开发人员和运维人员的沟通合作,通过自动化流程来使得 软件构建、测试、发布更加快捷、频繁和可靠。缩短了各个环节的等待时间,减少了很多重复性、手工性的工作, 使得解决问题的成本明显降低,成为解决前述问题的有效手段。

DevOps 成功的关键标准之一是提升开发对运营的影响,容器技术可在整个 DevOps 闭环中发挥重要作用。 在实践中,开发团队不应该只将代码丢给运营团队,还应该关心代码如何在生产环境中运行,于是可利用容器技 术将应用程序以容器镜像的形式发布,这些镜像不仅包括应用程序代码,还包括基本操作系统以及依赖库等整个 堆栈,甚至还配置好了运行时环境,从而完成了应用一致性地部署,极大降低了运营成本。
RightScale2017 年的调查报告 [35] 显示,超过 84% 的企业,DevOps 的采用率达到 78%,而众多的 DevOps 工具中,Docker 的使用率也达到了 35%,Kubernetes 的使用率也从 2016 年的 7%增长到 2017 年的 14%。

  1. 微服务
    微服务,就是将一个完整应用中所有的模块拆分成多个不同的服务,其中每个服务都可以进行独立部署、维 护和扩展,服务之间通常通过 RESTful API进行通信。
    微服务设计的本质在于用功能较明确、业务较精炼的服务去解决更大、更实际的问题。微服务架构相比于传 统的单体架构其最大优点在于降低了各模块之间的耦合度。每个服务都可由一个团队来进行开发和维护,不同的 服务甚至可以用不同的编程语言、架构来实现,这样每个服务都可用其最适合的技术加以实现,不仅增加了应用 开发效率,而且使得整个架构清晰明了,降低了学习成本。
    下图是从单体架构到微服务架构转换过程的示例,单体架构将 PHP 服务和模块的功能耦合起来,而微服务 架构基于服务概念对应用进行了拆分,为每个适合拆分的模块提供了 API,PHP 服务通过对 API的逻辑管理达到 对外提供服务的目的。

    用户模块
    UI 用户模块 用户模块 库存模块 UI API API
    PHP
    订单模块
    PHP 用户模块 用户模块 API
    ······ API API
    微服务 架构
    单体架构
    微服务的核心架构,主要包含两大组件:API Server 以及微服务应用。其中 API Server 是整个微服务的核心, 集成了认证、授权、请求日志记录、请求日志监控、负载均衡等功能,微服务应用可用容器进行封装,在系统内 部提供 REST API接口。以下是基于容器的微服务架构示例。
    Containers
    Module1 Module2 API Server
    HTTPS
    User
    OAuth2.0
    Module3 Module4
    DB Docker Daemon
    OS

31

随着微服务架构的兴起,业界诞生了许多类型的微服务架构,第一代微服务架构典型的有 Spring Cloud[^1] 、 Dubbo[^2] 等,第一代微服务架构因其稳定性等优势,目前使用者较多,已被许多公司用于生产环境中。第二代微 服务架构为服务网格(Service Mesh[^3] ),目前已衍生出许多种类型的 Service Mesh,典型的有 Buoyant 公司开 发的 Linkerd[36]、Google、IBM、Lyft 协作开发的 Istio[37]等。
2.4.2.4 快速部署交付
前述应用场景主要是模式和设计,此外,容器的一个重要特点是可将复杂系统快速部署交付,而省去了大量 安装和配置的工作。一个典型的场景是可以采用容器的方式部署 OpenStack 等基础设施平台,实现其运维管理的 自动化和敏捷化。
Kolla[38]是 OpenStack 中用于将所有组件进行容器化部署的项目。众所周知,对于 OpenStack 的安装和部署, 通常要消耗大量的精力,如何做到把更多的精力放在业务逻辑实现,而不是平台环境的安装和部署,是大家一贯 的诉求。
使用 Kolla来部署 OpenStack,装好操作系统之后,大概需要 10 分钟左右的时间,就可以搭建出包括各种社 区功能的 OpenStack 系统。由于这种容器化部署,基本是类似于搭积木的方式,所以无论是对于安装,还是升级, 都会变得更优雅。

参考资料

绿盟 容器安全技术报告

友情链接

CSA 云应用安全技术规范ron

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值