256. Spinnaker介绍(企业级K8S自动化运维平台)

256. Spinnaker介绍(企业级K8S自动化运维平台)文章目录1.Spinnaker简介2.Spinnaker逻辑架构3.Spinnaker核心功能3.1集群管理3.2部署管理4.Spinnaker管理方法5.部署Spinnaker的Armory发行版1.Spinnaker简介Spinnaker是Netflix在2015年开源的一款持续交付平台,它继承了Netflix上一代集群和部署管理工具Asgard:Web-basedCloudManagementandDeployment的优点,同时根据公司业务以及技术的的发展抛

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

1. Spinnaker简介

Spinnaker 是 Netflix 在2015年开源的一款持续交付平台,它继承了 Netflix 上一代集群和部署管理工具 Asgard:Web-based Cloud Management and Deployment的优点,同时根据公司业务以及技术的的发展抛弃了一些过时的设计:提高了持续交付系统的可复用性,提供了稳定可靠的API,提供了对基础设施和程序全局性的视图,配置、管理、运维都更简单,而且还完全兼容 Asgard,总之对于 Netflix 来说 Spinnaker 是更牛逼的持续交付平台。

2. Spinnaker逻辑架构

官网传送门—》https://spinnaker.io/
Spinnaker 自己是一个微服务架构,由若干组件组成,所有组件都开源在github上,整个逻辑架构如下图所示:
在这里插入图片描述

Deck:面向用户 UI 界面组件,提供直观简介的操作界面,可视化操作发布部署流程。
API: 面向调用 API 组件,我们可以不使用提供的 UI,直接调用 API 操作,由它后台帮我们执行发布等任务。
Gate:是 API 的网关组件,可以理解为代理,所有请求由其代理转发。
Rosco:是构建 beta 镜像的组件,需要配置 Packer 组件使用。
Orca:是核心流程引擎组件,用来管理流程。
Igor:是用来集成其他 CI 系统组件,如 Jenkins 等一个组件。
Echo:是通知系统组件,发送邮件等信息。
Front50:是存储管理组件,需要配置 Redis、Cassandra 等组件使用。
Cloud driver 是它用来适配不同的云平台的组件,比如 Kubernetes,Google、AWS EC2、Microsoft Azure 等。
Fiat 是鉴权的组件,配置权限管理,支持 OAuth、SAML、LDAP、GitHub teams、Azure groups、 Google Groups 等。

3. Spinnaker核心功能

3.1 集群管理

集群管理主要用于管理云资源,Spinnaker 所说的“云”可以理解成 AWS,即主要是 IaaS 的资源,比如 OpenStack,Google云,微软云等,后来还支持了容器,但是管理方式还是按照管理基础设施的模式来设计的。
在这里插入图片描述
Spinnaker 中管理如下资源:

Server Group:最基本的逻辑资源,包括了若干使用相同配置和镜像的虚拟机,若干负载均衡(load balancer),以及安全组。
安全组规则(Security Group):就是 AWS 中的安全组,可以理解成防火墙。
负载均衡(Load Balancer):AWS 中的 ELB,也可能是安装在虚拟机中的负载均衡。

3.2 部署管理

管理部署流程是 Spinnaker 的核心功能,他负责将软件包(可能是手工创建的或者 jenkins 创建的)打成一个镜像,用这个镜像生成对应的虚拟机,让服务真正运行起来:
在这里插入图片描述
pipeline
在 Spinnaker 中一个部署流程叫做pipeline,由若干个操作组成,每个操作又叫做一个 stage。触发一个 pipeline 方式非常灵活,可以手动触发,也可以用 jenkins、CRON 等。同时,可以配置 pipeline 向外发送一些通知信息,比如“开始”,“结束”,“失败”等。
stage
pipeline 中的一个操作,stage 之间可以有先后顺序,也可以并行。Spinnaker 中预定义了一些 stage 的类型,这些类型的 stage 往往使用频率比较高:

Bake:在某个 region 中制作虚拟机的镜像。Netflix 推崇不可变基础设施的理念,所以他们将软件打包进镜像的方式来部署服务。创建镜像的核心基于 Packer(Hashicorp 开源的镜像烘焙工具,Vagrant 就出自该公司 CEO 之手)。如果部署时用 docker,则打包过程就交由 docker build 完成。
Deploy:用 Bake 中创建的镜像部署成一台虚拟机。
Jenkins: 执行一个 Jenkins 的 job。
Manual Judgment : 暂停,等待用户的许可后再继续。
Pipeline : 执行另外一个 pipeline。
Script :执行任意的脚本。
Wait : 等待一段时间。

在这里插入图片描述
从 pipeline 的定义看,Spinnaker 和 Jenkins 有几分相似,不过两者的设计出发点的不同,stackoverflow上有相关的讨论。总结来看,jenkins 偏向 CI,产出物是软件包;Spinnaker 是 CD,将软件包分发到服务器/虚拟机上,保持软件正常运行,它的目标只是让“部署”的过程更容易更可扩展。有一个例子可以说明两者的关系:Netflix 内部有人不用 Spinnaker 的 pipeline,而只是将 Spinnaker 看为一个部署工具,直接在 jenkins 中调用它的 API 来部署服务。

4. Spinnaker管理方法

Spinnaker 看起来也是一个复杂的微服务架构,由不少服务组成,所以本身也遵循一些运维准则:

1.每个 Spinnaker 的服务(如 deck,gate,orca)都运行在独立的 cluster 中。
2.每个服务都将自己的运行指标推送到 Atlas 中,用于绘制仪表盘和报警。Atlas 是Netflix的一个内存时间序列数据库。
3.每个服务都将自己的日志发送到 ELK 集群中。
4.每个内部服务除了deck 和 gate 必须用 mutual TLS,并且证书和认证通过 Lemur 进行管理。不允许任何外部流量进入内部服务中。所有的 API 调用必须经过 gate。
5.每个外部服务(除了gate)都要支持 mTLS 或者 SSO。
6.如果某个服务有数据存储的需求,那么只能存在自己的数据库中,服务之间不共享数据存储。

-->为了保证兼容性,Spinnaker 在开发过程中还会准守一些准则:
1.保证足够的单元测试和覆盖率。
2.在 code review 的时候特别注意是否会破坏API兼容性。
3.7×24 不间断的执行集成测试。有两种集成测试,一种是一个 jenkins job,会不断调用 API 接口,确保API是按照预想的在工作,另一种是一个 Spinnaker 的 pipeline,用来执行日常任务(比如创建镜像,部署环境等)。
4.当发现未知的失败是,首先执行回滚操作,直到这个问题被修复。

Jetbrains全家桶1年46,售后保障稳定

5. 部署Spinnaker的Armory发行版

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226749.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • tf2013_office2010绿色激活成功教程版

    tf2013_office2010绿色激活成功教程版
    TFS2010的安装与VSS升级到TFSVS2010正式发布有一个星期了,大家应该都尝鲜过VS2010下载了吧,当然还有TFS2010。TFS2010作为微软极力推荐的团队开发平台,可谓倾尽全力,当然也没有让我们失望。旧版本的TFS安装那一步步繁琐的配置过程和前提条件,还强迫我们去学习配置安装sharepointservice,这点真是无法容忍的,还有TFS2010吸取了以前的教训,我们终于可以尽情的NEXT了。TFS2010的安装之所以说不需要我们过分关注TFS2010的安装过程,不是不

    2022年9月24日
    1
  • 二进制与十进制的讲解与转换「建议收藏」

    二进制与十进制的讲解与转换「建议收藏」文章目录?什么是十进制呢??什么是二进制??十进制和二进制之间可以转换吗??十进制与二进制之间的转换?二进制转十进制?十进制转二进制?写在最后哈喽,大家好!这是我的第一篇博客,就先来介绍一下自己吧,我是Why,一名在读学生,目前刚刚开始进入自己的编程学习生涯。虽然学习起步较晚,但我坚信做了才有0或1的可能。学了一段时间以后也是选择在CSDN上分享自己的日常笔记,也希望能够在众多道友的大家庭中打成一片。本文主要讲解二进制以及进制之间的转换,如果大家读后觉得有用的话,还请大家多多支持博主:欢迎❤️点赞

    2022年10月18日
    2
  • 13典藏AutoHotKey脚本让您生活更轻松

    13典藏AutoHotKey脚本让您生活更轻松AutoHotKey是最好的Windows自动化程序之一,可以执行最简单的操作到最艰巨的任务。AutoHotKey是一个免费的开源程序,通过这种脚本语言您的任何Windows日常任务。即使“脚本语言”听起来令人生畏,实际它非常易于使用,并且您可以做各种很酷的事情。让我分享我最喜欢和最常用的AutoHotKey脚本,这些脚本使我的日常任务更加轻松,这可能会对您有所帮助。在开始之前,假定您已经知道如何安装和配置AutoHotKey。此外,请注意以英文分号开头的行是注释。1.搜索快捷方式…

    2022年7月21日
    14
  • php递归算法经典实例_php递归函数详解

    php递归算法经典实例_php递归函数详解在前面的文章中,我们给大家介绍了三种递归算法的实现方法,即“静态变量”、“全局变量”、“引用传参”。需要的朋友可以了解《PHP递归算法(一)》《PHP递归算法(二)》《PHP递归算法(三)》下面我们就给大家介绍如何通过xdebug调试运行PHP引用传参的递归算法。代码如下:…

    2022年8月11日
    7
  • 操作系统栈溢出检測之ucosII篇

    操作系统栈溢出检測之ucosII篇

    2022年1月25日
    40
  • Redis – 11、集群(Cluster)

    Redis – 11、集群(Cluster)redis集群是对redis的水平扩容,即启动N个redis节点,将整个数据分布存储在这个N个节点中,每个节点存储总数据的1/N。

    2025年7月27日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号