容器技术让应用打包变得非常简单,容器将成为未来最主流的部署方式。据权威咨询公司Gartner预测,到2022年,全球超过75%的企业组织将在容器中运行应用程序,与目前不到30%的比例相比有了显着增长。单从数据来看,容器和Kubernetes这几年在传统数据中心和云原生应用中得到了很好的应用,但目前容器生态并不完善,缺乏足够成熟的运营实践案例。容器集成、网络和自动化部署仍然是非常棘手的问题。此外,由于云原生应用需要高度自动化的基础设施环境和专业的运维技能,容器在企业中的应用仍然受到限制。在生产环境中部署容器的注意事项因此,在特定的生产环境中运行容器仍然需要一个漫长的学习过程。企业在生产环境部署容器之前,必须认真考虑以下六个问题:DevOps:是否有DevOps团队进行开发和维护,实现敏捷开发和部署模式?Workload:是否确定了专人负责容器化Workload?快速集成:知道如何集成IT基础架构,具备跨平台集成能力吗?支付模式:你知道使用哪个运行和编排引擎,以及他们的支付模式吗?训练技巧:你知道应该学哪一种吗?哪些新技能和规则将确保容器部署成功?投资回报率:投资回报率是多少?然而,许多企业组织往往低估了在生产环境中运行容器所需的工作量。尽量避免以下六种错误行为。在没有成熟的DevOps实践经验的情况下开始部署容器。选择那些带有专有组件的容器会导致被锁定。通用工具和合规性要求并未在整个企业组织中实施。不为开发和运维人员提供前沿技术培训服务。选择工具时没有考虑开发人员和运营商的需求。选择了具有非常高的依赖性和依赖性的复杂工作负载。容器实践需关注六方面管理企业在生产环境部署容器后,应特别关注容器本身的安全性。比如Docker宿主机的安全、Docker镜像的安全、运行环境的安全、编排的安全,都意味着保护容器的安全将是一个持续的挑战。在生产环境中部署容器需要考虑安全合规、持续监控、数据持久化、网络安全问题、全生命周期管理和容器编排等关键因素。安全合规性安全不能总是事后才想到的。它需要嵌入到DevOps流程中。企业组织需要考虑容器整个生命周期的安全问题,包括应用构建、开发、部署和运行的不同阶段。将镜像扫描集成到企业的CI/CD中,及时发现漏洞。在软件开发生命周期的构建和运行阶段扫描应用程序。重点是扫描和验证开源组件、库和框架。根据CIS基线检查安全配置。建立强制访问控制,加密和管理SSL密钥或数据库凭证等敏感信息,并仅在运行时提供它们。通过策略管理避免特权容器,以减少潜在攻击的影响。部署提供白名单、行为监控和异常检测的安全产品,以防止恶意活动。持续监控开发人员专注于容器的功能方面,而不是监控它们的性能。传统的监控工具侧重于主机级别的指标,例如CPU利用率、内存利用率、I/O、延迟和网络带宽。但这还远远不够,还缺乏容器或工作负载级别的指标数据。安全人员需要专注于容器和服务级别的监控,实现对“应用程序”的细粒度监控,而不仅仅是物理主机。优先考虑提供与容器编排深度集成的工具和供应商,尤其是Kubernetes。使用提供细粒度日志记录、自动服务发现和实时操作建议的工具。容器存储随着容器越来越多地用于有状态工作负载,客户需要考虑物理主机之外的数据持久性并保护该数据。即使容器不见了,数据也一定还在。如果企业对容器的主要使用场景是迁移遗留应用或无状态用例,那么对存储的安全要求不会有太大变化。但是,如果正在重构应用程序,或者要提供一个新的、面向微服务的有状态应用程序,那么安全专业人员需要一个能够最大限度地提高工作负载的可用性、灵活性和性能的存储平台。例如,为了更好地支持容器迁移和数据共享,Docker推出了Volumeplugin接口机制,允许第三方存储厂商支持DockerVolume,并在此基础上扩展功能。选择符合微服务架构原则的存储方案,必须能够满足支持API驱动的服务需求,具有分布式架构,支持本地和公有云部署。避免专有插件和接口。相反,优先考虑与Kubernetes紧密集成并支持容器存储接口(CSI)等标准接口的供应商。容器网络开发者最关心的是软件开发的敏捷性和可移植性,希望应用能够跨软件开发生命周期移植。虽然在传统的企业网络模型中,IT人员为每个项目的开发、测试和生产创建了网络环境,但即便如此,也未必能与业务流程保持良好的一致性。在容器业务环境中,容器网络问题更加复杂。例如,容器网络跨越多个层。虽然直接在宿主机端口开启服务是可行的,但是在部署多个应用时会出现端口冲突,增加集群扩展和宿主机更换难度。因此,网络解决方案需要与Kubernetes原语和策略引擎紧密集成。安全和运营人员需要努力实现网络的高度自动化,并为开发人员提供合适的工具和足够的灵活性。分析现有容器即服务(CaaS)或软件定义网络(SDN)解决方案是否支持Kubernetes网络。如果没有,可以选择通过容器网络接口(CNI)集成应用层网络和策略引擎。确保选择的CaaS和PaaS工具能够为主机集群提供负载均衡控制,或者选择第三方代理服务器。培训网络工程师使用Linux网络和自动化网络工具来弥补技能差距。容器生命周期管理对于高度自动化和无缝的应用程序交付管道,组织需要使用其他自动化工具来补充容器编排,例如Chef、Puppet、Ansible和Terraform等配置管理工具,以及应用程序发布自动化工具。虽然这些工具和CaaS产品之间存在重叠,但互补性远远超过重叠。建立容器基础镜像的标准,同时考虑到镜像大小、灵活性和开发人员添加组件的许可。使用容器感知的配置管理系统来管理容器镜像的生命周期。一旦系统感知到规则下的新版本镜像被推入仓库,会立即触发自动部署功能,将新镜像更新到指定容器。将CaaS平台与应用自动化工具集成,可以实现整个应用工作流程的自动化。容器编排,因为容器编排工具管理承载各种服务的容器集群。Kubernetes社区和第三方安全机构都对Kubernetes中的组件和资源安全进行了完善和加强,包括计算资源安全、集群安全和相关组件安全。这方面的重点考虑是隐私管理、授权管理、身份防控、编排控制平面、网络证书等,都需要充分考虑。其中,容器部署的关键在于提供编排和调度能力。编排层与应用程序交互,以保持容器在所需状态下运行。容器调度系统根据编排层的要求,将容器放置在集群中最优的主机上。比如通过ApacheMesos提供调度,Marathon提供编排或者使用单一工具Kubernetes或者DockerSwarm来提供编排和调度。当客户在编排引擎或跨Kubernetes发行版之间做出选择时,他们需要关注以下方面:支持的操作系统和容器运行时的深度和广度;整体产品的运行稳定性;可扩展性;支持有状态的应用支持程度;操作的简单性和供应商支持的质量;开源的支持和发展;易于部署和许可费用;支持混合多云。容器和DevOps容器和DevOps就像咖啡搭档。容器的快速发展也得益于DevOps的实践经验。在传统的开发环境中,开发团队编写代码,QA团队测试软件应用程序,然后将它们交给运营团队进行日常管理。为了解决传统开发模式存在的问题,很多企业采用了“DevOps流程+微服务理论+容器和容器编排工具的使用”。其实DevOps的前身是CI/CD,现在只是加入一些发布、部署等标准和管理,形成DevOps。在云原生环境中,不仅软件开发和发布速度快,而且平台本身也需要被视为一种产品,因为它是动态的,在功能和规模上不断发展。平台运营团队的目标是一个自动化、可扩展且有弹性的标准化平台。平台运营团队的职责包括CaaS和PaaS产品的部署、运营和定制,标准化中间件的开发和运营,以及IaaS供应的自动化、部署和安全使能等。企业组织需要创建一个DevOps团队来操作容器,而不是孤立的IT操作团队。以容器安全为例,企业需要一种可以集成到DevOps流程中的解决方案,而不会减慢软件开发速度。目前,国内外一些安全厂商已经在这方面取得了不错的成绩。例如,青藤容器安全解决方案可以提供容器镜像扫描、入侵检测、合规基线实施等产品服务,解决容器带来的问题。安全挑战。这是一个以应用为中心的轻量级分布式解决方案,保证容器静态资源和运行时安全。生命周期,持续安全保护。
