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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • networkx教程

    networkx教程创建一个图创建一个没有节点和边的空图 importnetwor nx Graph 根据定义 a nbsp Graph 是节点 顶点 的集合以及确定的节点对 称为边 链接等 在 NetworkX 中 节点可以是任何可哈希对象 例如文本字符串 图像 XML 对象 另一个 Graph 自定义节点对象等 节点该图 G 可以以几种方式生长 NetworkX 包含许多图形生成器功能和设施 以多种格式读取和写

    2025年8月30日
    3
  • [trans] Thresholding Algorithm[通俗易懂]

    [trans] Thresholding Algorithm[通俗易懂]十三种基于直方图的图像全局二值化算法原理、实现、代码及效果。     图像二值化的目的是最大限度的将图象中感兴趣的部分保留下来,在很多情况下,也是进行图像分析、特征提取与模式识别之前的必要的图像预处理过程。这个看似简单的问题,在过去的四十年里受到国内外学者的广泛关注,产生了数以百计的阈值选取方法,但如同其他图像分割算法一样,没有一个现有方法对各种各样的图像都能得到令人满意的结果。 …

    2022年5月16日
    50
  • 「Odoo 基础教程系列」第三篇——从 Todo 应用开始(2)

    「Odoo 基础教程系列」第三篇——从 Todo 应用开始(2)

    2021年6月11日
    117
  • Dreamweaver 2020安装教程[通俗易懂]

    Dreamweaver 2020安装教程[通俗易懂]装前先关闭杀毒软件和360卫士,注意安装路径不能有中文,安装包路径也不要有中文。1.鼠标右击【Dreamweaver2020】压缩包选择【解压到Dreamweaver2020】。2.双击打开解压后的【Dreamweaver2020】文件夹。3.双击打开【setup】文件夹。4.鼠标右击【Set-up】选择【以管理员身份运行】。5.点击【继续】。6.点击文件夹图标,然后点击【更改位置】更改安装路径。7.建议安装在除…

    2022年5月25日
    39
  • 提升进程权限函数OpenProcessToken 及相关函数详解

    提升进程权限函数OpenProcessToken 及相关函数详解提升进程权限函数OpenProcessToken及相关函数详解http://m.blog.csdn.net/blog/Armstronghappy/8797630 LookupPrivilegeValue函数查看系统权限的特权值,返回信息到一个LUID结构体里。BOOLLookupPrivilegeValue(LPCTSTRlpSystemName,LPCTSTRlpN

    2022年6月25日
    30
  • unity3d简单游戏教程_3D推荐

    unity3d简单游戏教程_3D推荐经过前面《Unity3D入门教程》系列讲解,再加上我们自己的探索,相信大家已经掌握了Unity3D的相关知识和基本方法。本文将使用前面学到的知识,开发一款简单的五子棋程序。本文用到的东西其实不多,非常简单。在最后我们会把完整工程的源代码发布出来,以供初学者参考。

    2022年8月10日
    7

发表回复

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

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