什么叫云原生?
云原生(CloudNative)是一个组合词,Cloud+Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。
我的个人理解是,云原生就是基于云计算的应用程序,而且不同于传统的云计算,他的整个应用都在云上,适用于不同的环境。
云原生的要素:
1.微服务:
比如在电商系统中,将不同的业务功能拆分成独立的服务,例如用户服务(负责用户账户管理)、商品服务(负责商品信息管理)、订单服务(处理订单流程)、支付服务(实现支付功能)。每个服务都可以单独开发、部署和扩展,这样当需要更新用户注册逻辑时,可以只修改用户服务而不会影响到其他服务。
2.容器化:
假设一个新闻网站应用被拆分为多个微服务,如文章服务、评论服务、推荐引擎服务。这些服务分别被打包成Docker容器,并且每个容器包含了该服务运行所需的所有依赖环境。这样一来,无论是在开发人员的笔记本电脑上,还是在生产环境的云服务器集群中,只需运行相应的Docker镜像,就能确保服务以一致的方式运行。
3.持续交付与DevOps文化:
一个团队使用GitLab或GitHub进行代码版本控制,编写单元测试和集成测试,并配置自动化流水线,一旦代码合并到主分支,就会触发CI/CD工具链自动构建新的软件版本、运行所有测试,如果测试通过,则自动将新版本部署到预生产环境进行灰度发布,并根据监控数据决定是否全量上线。整个过程强调开发和运维团队之间的紧密协作以及对快速反馈和改进的追求。
4.敏捷基础设施:
使用Kubernetes作为容器编排平台的例子中,可以根据实时流量动态地调度和管理容器实例的数量。比如,在促销活动期间,当访问量激增时,Kubernetes会自动扩展现有服务的副本数量以满足需求;而在非高峰时段,又能自动减少资源占用,从而降低成本。此外,底层的基础设施如网络、存储等可以通过YAML文件声明式地定义和管理,方便团队快速调整和复用。
云原生系统特征
- 轻快不变的基础设施。
- 弹性服务编排
- 开发运营一体
- 微服务架构
- 无服务模型
关于云原生安全
在学习云原生的过程中,有那么几个名词始终是绕不过去的:docker,k8s等。那么结合上面的要素,也可以大体了解一些其中的安全问题。
云原生的三大安全机制
1.容器安全
容器环境基础设施的安全性:主机的安全配置和安全漏洞对容器的影响。
容器的镜像安全:镜像中的软件是否存在安全漏洞,镜像在构建的过程是否存在安全风险,镜像传输中是否被恶意篡改。
容器的运行时安全:运行隔离,通信安全,恶意程序的横向运动,容器资源使用情况是否安全。
容器生态的安全性:一些容器自身的安全问题。
对此,容器云的安全可以大体参考云计算安全架构
这样,对于容器云的安全方案,可以分别从两个方面进行设计。
对于南北向的网络安全,可以通过安全资源池引流的方式,实现相应的安全检测与防护,这也是业界多数云安全解决方案的实现方式。对于容器云内部的安全,可以通过相应的容器安全机制实现。最后将这两部分统一接入云安全集中管理系统,进行统一的安全管理和运营。
2.编排系统安全
当前云原生大都使用k8s为编排系统,那么其安全就成为了非常重要的编排安全部分。
3.云原生应用安全
编排系统支撑着诸多微服务框架和云原生应用,如无服务、服务网格等,这些新型的微服务体系也同样存在各种安全风险。例如,攻击者通过编写一段无服务器的代码获得运行无服务程序容器的shell权限,进而对容器网络进行渗透。
作为一个本科学生,基础知识不多的情况下接触云原生这个方面还是有些束手无措的,因此还是要从最基础的方面来一步步扎实的学下去。还希望大佬不吝赐教。
学习与创作参考:《云原生安全:攻防实践与体系构建》
版权归原作者 隔壁小登 所有, 如有侵权,请联系我们删除。