wikowin 2020-03-04
企业现在正在使用各种IT资源来增强业务。当成本是考量最多的部分,而免费使用和可修改的开源工具能帮助企业降低成本。同时,云供应商还提供了许多新工具,来帮助企业从云服务中获得比较大的价值。这些工具使企业能够将预算和人力用于更具战略意义的业务项目中。利用开源云工具使企业本地组件和基于云的组件协同工作。今天,介绍一些不错的开源云工具。
Grafana
Grafana允许查询,可视化和了解指标,无论数据存储在哪里,你可以与团队创建,浏览和共享仪表板,并促进数据驱动的文化。其优秀用例是时间序列数据,如工业传感器,天气和进程控制。Grafana用Go和Node.js编写。它带有一个内置的名为sqlite3的嵌入式数据库。也可以使用其他数据存储(如MySQL,PostgreSQL,Graphite,Influx DB,Prometheus和Elasticsearch)来存储数据。它还通过使用其他插件来支持其他数据存储。
Grafana可以安装在Linux,Windows,Docker和Mac上。它带有内置的用户控件和身份验证机制,例如LDAP,Google Auth和GitHub,可帮助控制对仪表板的访问。除了上面列出的身份验证之外,Grafana还支持AD身份验证。Grafana具有一个API接口,可用于保存仪表板,创建用户和更新数据源。
Grafana仪表板
你可以轻松创建动态且可重复使用的仪表板,还可以选择创建模板以进行重用。使用保留的标签过滤器浏览和搜索日志可以使创建仪表板的工作更加轻松。甚至可以使用临时查询来浏览特定数据并向下获取取源。Grafana具有内置的警报系统,可以使用该系统定义指定指标的警报规则。它会不断评估它们,并通过电子邮件或通过Slack等工具将通知发送到系统。
将Grafana与Kibana进行比较时,前者更适合基于特定指标(例如CPU/磁盘/IO使用率)的时间序列数据。但是Kibana更适合使用Elasticsearch功能的分析仪表板。因此,我们不能使用Grafana进行数据搜索和探索。
Terraform
Terraform是HashiCorp提供的云基础架构工具。它用于有效地构建,更改和版本化基础结构。简而言之,Terraform对交付基础设施即代码(IAAC)很有用。它支持大多数公有云服务提供商的基础架构以及本地基础架构。
Terraform与平台无关,可帮助你部署自动测试,源代码控制等编码原则。它得到了社区的大力支持,许多企业已开始使用它来管理其基础架构。
你可以进行Terraform的试运行,它无需提交即可模拟实际更改,此功能对开发人员非常有用。Terraform资源图创建所有资源的视图,包括每个资源之间的依赖关系。Terraform利用各自的云提供商的API来管理基础架构,从而减少了对其他资源的需求。
Terraform是一种描述性语言,用于描述资源的目标级别。流行的云供应商可以使用插件来管理各自的云资源。此外,可以使用多种语言创建自己的插件。Terraform主要支持Go语言。
git-secret
开发人员通常的做法是对代码中使用的密码/凭据进行加密,然后将其保存在安全的地方。为此,我们有多种工具,其中Vault是其中之一。git-secret是一个用于在Git存储库中存储秘密的简单工具。git-secret使用gpg加密和解密。
用例有:
可以使用git-secrets来存储以纯文本格式存储的Oauth密钥,DB密码,应用程序密钥和其他密钥。
git-secret是一个用于在Git存储库中存储私有数据的工具。它使用gpg加密密码,并使用所有受信任用户的公共密钥跟踪文件。因此,用户只能使用各自的个人密钥解密文件,并且此处不会更改任何密码。当某人离开企业或被替换时,只需删除公钥,重新加密文件,他们将无法再解密。
Aardvark和Repokid
Aardvark和Repokid可以确保角色在大型动态云部署中仅保留必要的特权。这些是Netflix提供的开源云安全工具,用于适应快速创新和分布式扩展。它们帮助实现了最小特权访问的原则,而不会影响性能。
所有公有云提供商都具有身份和访问管理(IAM)服务,可帮助为用户创建精细的策略。但是,自定义粒度策略增加了复杂性,这会使开发人员创建产品更加困难。缺少必要的权限会使应用程序失败,而过多的权限会带来安全漏洞和合规性问题。
Aardvark使用Phantoms登录到云提供商的控制台,并检索帐户中所有IAM角色的Access Advisor数据。它将最新的Access Advisor数据存储在DynamoDB数据库中,并公开RESTful API。
Aardvark支持线程化以同时检索多个帐户的数据,并在不到20分钟的时间内刷新数据。
DynamoDB表具有有关策略,权限计数(总数和未使用),角色是否符合回购条件或是否经过过滤以及最后一次删除每个角色的未使用权限(回购功能)的数据,如图. Repokid将DynamoDB中存储的数据与角色未使用的服务一起使用,并删除未使用的权限。
Aardvark学习过程
一旦对角色进行了充分的概要分析,Repokid的repose功能便会修改该角色附带的内联策略,以排除未使用的权限。Repokid还维护以前策略版本的缓存,以防需要将角色恢复到以前的状态。回购功能可以应用于单个角色,但通常用于定位帐户中的每个合格角色。
OpenShift
OpenShift是一项类似于针对内部部署和云平台的“容器即服务”的服务。它基于由Kubernetes在Red Hat Enterprise Linux的基础上编排和管理的Docker容器构建。V3的最新版本具有许多新功能。OpenShift项目由Kubernetes,Docker,CoreOS,Framework,Crio,Prometheus等支持。
OpenShift容器平台架构
将容器分组在一起极大地增加了可带入OpenShift的应用程序的数量。这带来了具有单个IP地址和共享文件系统的好处。由于OpenShift容器本质上是不可变的,因此可以在运行时将应用程序代码,从属库和机密附加到容器。这使管理员和集成商可以将代码和补丁与配置和数据分开。OpenShift容器框架如图所示。
OpenShift和Kubernetes是作为一组微服务构建的,这些微服务通过常见的REST API一起工作以更改系统。这些非常API可供系统集成商使用,并且可以禁用那些相同的核心组件以允许替代实现。OpenShift在REST API上公开了细粒度的访问控制,这使服务集成商的工作变得容易。
BOSH
BOSH是一个与云无关的开源工具,用于复杂分布式系统的发布,部署和生命周期管理。大多数发行版和托管Cloud Foundry环境都使用BOSH全面管理环境,以便可以专注于编码和交付业务价值。由于BOSH的灵活性和强大功能,Google和Pivotal使其成为了Kubo项目(Kubernetes的Web规模发布工程)的核心。
BOSH的工作方式类似于分布式系统,在该系统中,运行在不同虚拟机上的各个软件组件的集合作为一个更大的系统一起工作。
BOSH部署
下面列出了BOSH的主要组件。
其他环境中也采用了BOSH来打包和管理各种软件。BOSH的优势在于它可以同时管理第一天和第二天的操作任务,例如配置软件并将其升级到新版本,测试将整个系统从一个版本升级到另一个版本,调整主机大小以及处理安全更新。
Spinnaker
Spinnaker是一个开源的多云连续交付平台,用于以高速发布软件更改。它结合了强大而灵活的管道管理系统以及来自主要云提供商服务的集成,这些服务包括AWS EC2,Kubernetes,Google Compute Engine,Google Kubernetes Engine,Google App Engine,微软Azure,OpenStack,Cloud Foundry和Oracle Cloud Infrastructure。
它通过创建部署管道来自动化发布,这些管道可以运行集成和系统测试,上下移动服务器组以及监控部署。它通过Git events,Jenkins,Travis CI,Docker,CRON或其他Spinnaker管道触发管道。
Spinnaker部署管道
Spinnaker创建并部署不可变的镜像,以实现更快的部署,更容易的回滚并消除难以调试的配置漂移问题。它利用内置的部署策略(例如红色/黑色和金丝雀部署)利用云中的不变基础架构。
Spinnaker的应用程序管理功能可帮助管理云资源。Spinnaker作为服务的集合运行,有时称为应用程序或微服务。应用程序,集群和服务器组是Spinnaker用来描述服务的关键概念。负载均衡器和防火墙描述了你的服务如何向用户公开。
Spinnaker管道是关键的部署管理结构,它由一系列动作组成。可以沿管道在阶段之间传递参数,如图所示。你可以手动启动管道,也可以通过事件自动触发管道,例如作业的完成,注册表中出现的新镜像,CRON计划或另一个管道中的动作。可以配置管道,以在管道执行期间的各个时间点通过电子邮件,Slack或SMS通知。
Spinnaker以云原生部署策略为先构建,处理基础编排,例如,验证运行状况检查,禁用旧服务器组和启用新服务器组。它支持红色/黑色(又名蓝色/绿色)策略,并在积极开发中采用滚动的红色/黑色和金丝雀策略,如图所示。