云原生景观:供应层(Provisioning)解决了什么问题?如何解决的?

dotNET知音

共 3995字,需浏览 8分钟

 ·

2020-10-24 03:16

上篇文章《叮,你收到一份来自CNCF的云原生景观简介》,我们对CNCF云原生生态系统做了概述。从这篇文章开始,我们将介绍云原生景观中,每种类别中的工具是什么,他们解决了什么问题以及如何解决的。

云原生环境中的第一层是供应层(Provisioning)。这涵盖了从自动化基础结构的创建,管理和配置镜像扫描,镜像签名和存储镜像的所有内容。该层还扩展了安全性,其工具可用于设置和实施安全策略,处理应用程序和平台中身份认证和授权,以及密钥分发。

查看云原生景观图时,你会注意到一些区别:

  • 大盒子中的项目是CNCF托管的开源项目。有些仍处于孵化阶段(浅蓝色/紫色框),而另一些则是已毕业的项目(深蓝色框)。

  • 白色小盒子中的项目是开源项目。

  • 灰色的是专有产品。


请注意,即使在撰写本文时,我们也看到新项目成为CNCF的一部分,因此始终参考实际情况-事情发展很快!

好的,让我们看一下供应层(Provisioning)的每个类别,它所扮演的角色以及这些技术,如何帮助应用程序适应云原生环境。

自动化与配置 (Automation and Configuration)

这是什么

自动化和配置工具可加快计算资源(虚拟机,网络,防火墙规则,负载均衡器等)的创建和配置。这些工具可能会处理供应层(Provisioning)的不同部分,或者尝试控制所有端到端的内容。大多数工具,提供与该空间中其他项目和产品集成的能力。

解决了什么问题

传统上,IT流程依赖冗长且复杂的手动发布周期,甚至需要三到六个月。这些周期伴随着许多人工流程和控制,从而减缓了生产环境的变更。这些缓慢的发布周期和静态环境与云原生开发不兼容。为了实现快速的开发周期,必须动态配置基础架构,并且无需人工干预。

它如何解决

此类工具使工程师无需人工干预即可构建计算环境。环境设置,只需单击一个按钮,它就可以实现。手动设置很容易出错,但是一旦进行了编码,环境创建就会与所需的确切状态相匹配,这是巨大的优势。

尽管这些工具可能采用不同的方法,但它们都旨在通过自动化配置资源减少所需的手工操作。

相应的解决工具

当我们从老式的人为驱动的配置过渡到云环境所要求的按需扩展时,我们发现以前使用的模式和工具不再满足我们的需求。组织也无力维持庞大的7×24员工队伍,并且他们的工只作是创建,配置和管理服务器。

Terraform之类的自动化工具减少了扩展数十个服务器和相关网络以及多达数百个防火墙规则所需的工作量。诸如Puppet,Chef和Ansible之类的工具会在启动时以编程方式配置这些新服务器和应用程序,并允许开发人员使用它们。

一些工具可以直接与AWS或vSphere等平台提供的基础架构API进行交互,而其他工具侧重于配置单个计算机以使其成为Kubernetes集群的一部分。

像Chef和Terraform一样,许多工具可以进行交互操作以配置环境。诸如OpenStack之类的其他工具,运用基础架构即服务(IaaS)的理念来配置环境。从根本上讲,在此空间中,你需要一个或多个工具来为Kubernetes集群搭建计算环境,CPU,内存,存储和网络。你还需要其中一部分来创建和管理Kubernetes集群本身。

在撰写本文时,该领域中有三个CNCF项目:KubeEdge(一个CNCF沙盒项目)以及Kubespray和Kops(后两个是Kubernetes子项目,因此虽然尚未列出,但它们属于CNCF)。此类别中的大多数工具都提供开源和付费版本。

流行语热门项目/产品
  • 基础架构即代码(IaC)

  • 自动化

  • 声明式配置

  • Chef

  • Puppet

  • Ansible

  • Terraform

镜像仓库 (Container Registry)

这是什么

在介绍镜像仓库之前,让我们首先讨论三个紧密相关的概念:

  1. 容器是用于执行软件流程的一组计算约束。容器内启动的进程相信它们正在自己的专用计算机上运行,而不是与其他进程(类似于虚拟机)共享的计算机上运行。简而言之,容器使你无论身在何处都可以以受控方式运行代码。

  2. 镜像是运行容器及其过程所需的一组存档文件。你可以将其视为模板的一种形式,可以在其上创建无限数量的容器。

  3. 存储库是存储镜像的地方。


镜像仓库是用于分类和存储镜像的专用Web应用程序。

解决的问题

云原生应用程序打包并作为容器运行。镜像仓库存储并提供这些容器镜像。

如何解决

通过将所有容器镜像集中存储在一个地方,任何使用该应用程序的开发人员都可以轻松访问它们。

相应的解决工具

镜像仓库工具存储和分发镜像,从根本上说,它是一种Web API,允许容器引擎存储和检索镜像。他们有的还提供接口以允许容器扫描或签名工具来增强存储的镜像的安全性。

任何使用容器的环境都将需要使用一个或多个镜像仓库。

该空间中的工具可以提供集成功能,以扫描,签名和检查它们存储的镜像。在撰写本文时,Dragonfly和Harbor是CNCF项目,而Harbor最近成为了第一个符合OCI的注册机构。每个主要的云提供商都提供自己托管的镜像仓库,许多镜像仓库可以独立部署,也可以通过Helm之类的工具直接部署到Kubernetes集群中。

流行语热门项目/产品
  • Container

  • OCI Image

  • Registry

  • Docker Hub

  • Harbor

  • Hosted registries from AWS, Azure, and GCP

  • Artifact

安全与合规(Security and Compliance)

这是什么

云原生应用程序旨在快速迭代。就好像你的手机应用程序不断更新–每天它们都在不断发展,并且可能会变得越来越好。为了定期发布代码,我们必须确保我们的代码和操作环境是安全的,并且只能由授权的工程师访问。

本节中的工具和项目代表了以安全方式创建和运行现代应用程序所需的一些内容。

解决的问题

这些工具和项目可帮助你加强,监视和实施平台和应用程序的安全性。从容器到你的Kubernetes环境,它们使你能够设置策略(用于合规性),深入了解现有漏洞,捕获错误配置以及增强容器和集群的安全性。

如何解决

为了安全地运行容器,必须对容器进行扫描以查找已知漏洞并签名,以确保它们未被篡改。Kubernetes本身默认的访问控制设置比较宽松。因此,对于希望攻击你的系统的任何人来说,Kubernetes集群都是一个有吸引力的目标。该空间中的工具和项目有助于增强群集,并提供工具来检测系统何时出现异常。

相应的解决工具

为了满足在动态,快速发展的云环境中安全运行,我们必须将安全性视为平台和应用程序开发生命周期的一部分。这个领域中的工具种类繁多,旨在解决问题的不同部分。大多数工具属于以下类别之一:

  • 审计与合规(Audit and compliance)

  • 生产环境中强化的途径

    • 代码扫描

    • 漏洞扫描

    • 镜像签名

  • 政策制定与执行

  • 网络层安全

这些工具和项目中的一部分很少会被直接使用,例如镜像仓库或其他扫描工具会利用Trivy,Claire和Notary等。其他一些工具,是现代应用程序平台的关键强化组件,例如Falco或Open Policy Agent(OPA)。

有许多成熟的供应商在此领域提供解决方案,在撰写本文时,Falco,Notary / TUF和OPA是该领域中仅有的CNCF项目。

流行语热门项目/产品
  • 镜像扫描

  • 镜像签名

  • Policy enforcement(政策执行)

  • Audit(审计)

  • OPA

  • Falco

  • Sonobuoy

密钥和身份管理(Key and Identity Management)

这是什么

在进行密钥管理之前,让我们首先定义密钥。密钥是用于加密或签名数据的字符串。就像物理密钥一样,它加密数据,以便只拥有正确密钥的才能解密数据。

随着应用程序适应新的云原生世界,安全工具也在不断发展以满足新的安全需求。此类别中的工具和项目涵盖了从如何安全地存储密码和其他机密信息(敏感数据,例如API密钥,密钥等)到如何从微服务环境中安全删除密码和机密信息等。

解决的问题

云原生环境是高度动态的,需要按需,完全编程(无人参与)和自动化的秘密分发。应用程序还必须知道给定的请求是否来自有效来源(身份验证),以及该请求是否有权执行其尝试执行的任何操作。通常将其称为AuthN和AuthZ。

如何解决

每个工具或项目都采用不同的方法,但是它们都提供了一种安全分发密钥的方法,或者它们提供了与身份验证,授权或两者相关的服务或规范。

相应的解决工具

此类别中的工具可以分为两组:一些工具专注于密钥生成,存储,管理和轮换,另一组专注于单点登录和身份管理。例如,Vault是一种相当通用的密钥管理工具,可让你管理不同类型的密钥。另一方面,Keycloak是一种身份代理,可用于管理不同服务的访问密钥。

在撰写本文时,SPIFFE / SPIRE是该领域中唯一的CNCF项目,并且大多数工具都提供开源版本和付费版本。

流行语热门项目
  • AuthN and AuthZ

  • Identity

  • Access

  • Secrets

  • Vault

  • Spiffe

  • OAuth2

正如我们已经看到的那样,供应层(Provisioning)侧重于构建你的云原生平台和应用程序的基础,其工具处理从基础结构到镜像仓库到安全性的所有内容。本文旨在作为详细介绍云原生环境的系列文章的第一篇。在下一篇文章中,我们将专注于运行时层,并探索云原生存储,容器运行时和网络。

译者:王延飞

译文连接:https://thenewstack.io/the-cloud-native-landscape-the-provisioning-layer-explained/


END

浏览 38
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报