UDN-企业互联网技术人气社区

板块导航

浏览  : 745
回复  : 1

[技术交流] 搭建企业级Docker基础设施,要考虑哪些问题?

[复制链接]
开花包的头像 楼主
发表于 2016-7-21 21:50:09 | 显示全部楼层 |阅读模式
  Ian Miell大学在牛津大学学习现代历史专业,后进入伯贝克学院拿到了计算机科学的硕士学位。Ian是Docker的早期实践者之一,从三年前就开始鼓捣Docker了,2015年还写了《Docker In Practice》一书。

  Ian之前在一家叫OpenBet的游戏公司,公司技术环境相对宽松,在Docker上走了很多野路子,比如:自己搭了Registry,在开发服务器上安装Docker和Jenkins插件,把Docker容器应用到了CI流程中,甚至为了免受Dockerfile的限制自己写构建工具。后来Ian去了英国巴克莱银行,各种制度都非常严格,在那里他很长时间都在研究企业级Docker平台解决方案。

  这样一个在互联网公司“百无禁忌”过,又在大企业经过了严格流程规范的Docker大牛,在他眼中企业在考虑搭建Docker基础设施时,重点应该考虑哪些问题呢?Ian以提问的方式带你一步步深入思考。本文的关注点在基础设施建设上,如果你更关心生产环境中的Docker使用,请看:生产环境用Docker?先做到这些再说!

  以下为译文:

  镜像

  Registry

  Registry是必不可少的,Docker有一个开源版本的Registry,如果你想要花钱买一个商业版本,也有很多选择。

  这个Registry和你的身份认证系统能很好地配合吗?

  有没有推广镜像的机制?

  有没有角色访问控制?

  能不能和其它镜像市场资源互通?

  镜像扫描

  这一点很重要!当镜像被上传到Registry中,如果Registry能自动检测它是否符合标准,是再好不过的。比如可以很快查出这些问题:

  Dockerfile中有没有会造成安全漏洞的bash(shellshock)?

  有没有过期的ssl库?

  基础镜像是否安全?

  镜像构建

  镜像是如何被构建的?那种构建方式是贵公司需要的?Dockerfile是标准的,但是一些用户可能想用S2I,Docker+Chef/Puppet/Ansible工具,甚至手工处理它们。

  你想要使用哪种CM工具?

  你能在选择的配置管理中重用标准的管理流程吗?

  任何人都能构建镜像吗?

  镜像完整性

  要保证运行在你系统中的镜像,从构建到运行的整个过程中都没有被篡改。

  有没有安全密钥的方式进行镜像签名?

  有没有可以重用的密钥仓库?

  这个密钥仓库是否可以集成你选择的产品?

  第三方镜像

  供应商未来会通过Docker镜像交付产品。

  对于供应商技术的采用,是否有一个管理流程?

  是否能做成Docker镜像被重用?

  是否要搭建特定的环境(比如DMZs)去运行它们?

  Docker在这些环境中是否可用?

  SDLC(软件开发流程)

  如果你已经有了软件开发流程(SDLC),Docker如何去适应这个流程?

  如何处理补丁?

  如何确定哪个镜像需要更新?

  如何更新它们?

  如何告知团队去更新?

  如果镜像没有及时更新,如何去强制更新?

  加密

  像数据库密码这种信息总是要以某种方式被发送到容器中,可以在构建的时候(可能不是个好主意)或运行的时候被发送过去。

  容器内如何管理需要保密的信息?

  这种信息的使用方式能否被审计/跟踪?是否真的安全?

  基础镜像

  如果你在企业内运行Docker,你可能会希望公司内部使用统一的基础镜像。

  这个基础镜像中应该有什么?

  应该默认安装了哪些标准的工具?

  谁负责这个镜像的管理和更新?

  安全和审计

  Root问题

  默认情况下,进入Docker命令意味着你可以操作整个机器,对于大多数安全团队来说,这在生产环境中是不能接受的。

  都有谁可以跑Docker的命令?

  对于可以执行Docker命令的用户都有哪些限制?

  对于容器内运行的服务有哪些限制?

  解决方案是有的,但相对都较新。

  监控

  一个规范的企业希望时刻都能确定在基础设施上运行的服务。

  如何检测在运行着什么服务?

  这些内容能匹配上你的Registry吗?

  正在运行的服务是最新的吗?

  有没有容器在运行起来后改变了关键文件?

  取证

  出现问题的时候,人们都会想找出原因。以前的物理机和VM中,设有很多保障措施帮助事件后的调查,而Docker则是没有“黑匣子”的世界。

  知道这个容器是谁启动的吗?

  知道谁构建了这个容器吗?

  你能确定一个容器停止后会做什么吗?

  你能确定一个容器在停止前做了什么吗?

  运维

  日志

  应用日志很可能是关键的管理或控制方式。

  容器内运维需要的东西是否都记录下来了?

  它们是否遵循了日志的标准?

  日志存在哪里?

  编排

  容器集群能被很快地扩展,这也是容器编排发挥作用的时候,你想要使用吗?

  你选择的编排工具是否能和你的Docker基础设施很好地配合?

  你是要跟随主流,押宝在一个编排工具上,还是等到不得不做决定?

  操作系统

  企业级操作系统可能大多数已经落后于最新和最好的操作系统了。

  你的操作系统是否支持所有的最新特性?比如,一些编排工具和Docker需要的内核版本和包,比你的操作系统要新。

  在你本地的包管理工具中,哪个版本的Docker可用?

  开发

  开发环境

  开发者都喜欢admin,你准备好给通过Docker给他们admin权限了吗?

  他们的客户端会和部署环境一致吗?如果他们正在用Docker-compose,可能不会希望在生产环境中用到pod(Kubernetes的部署调度单元)。

  CI/CD

  Jenkins是最受欢迎的CI工具,但对于企业来说也有其它的选择。

  对于CI/CD插件你的政策是什么?

  是否准备好了马上转换到新的插件?

  你的CI流程是为了迎合暂时的Jenkins实例,还是永久的,亦或是两者兼顾?

  基础设施

  共享存储

  Docker容器的持久化数据存在volume中,而volume的使用独立于运行的容器。

  容易提供共享存储吗?

  共享存储能应对需求的增长吗?

  共享存储有跨部署区域可用的需求吗?

  网络

  企业通常都有更偏爱的SDN解决方案,比如Nuage,Calico等。

  有没有规定的SDN解决方案?

  容器会影响你选定的SDN解决方案吗?

  容器和SDN的交互会制造不可忽略的开销吗?

  aPaaS

  通过提供容器运行的环境支持,类似OpenShift或Tutum Cloud的aPaaS解决方案能解决以上的大部分问题。

  考虑过用aPaaS解决方案吗?

  哪种方案解决了你的大部分问题?

  云服务商

  如果你在使用AWS或Google家的云服务:

  你计划如何交付镜像?如何在云上运行容器?

  你想要将自己绑定到他们的Docker解决方案,还是选择一种更通用的方式?

原文作者:周小璐  来源:开发者头条
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部