本文发布于Cylon的收藏册,转载请著名原文链接~

介绍

Spinnaker 是一个由 Netflix 和 Google 领导开发的开源持续交付系统,用于管理不同计算平台上的应用部署。

开源,多云持续交付平台,可以帮助快速而稳定的发布软件更改,主要提供两个核心功能:“应用管理” 与 “应用程序部署”。

目前支持的云供应商:

  • Kubernetes
  • Oracle
  • GCP
  • App Engine
  • Kubernetes
  • Microsoft
  • Cloud Foundry
  • Tencent
  • ….

Netflix曾经有一个零散的连续输送的故事。每个组织的交付系统都是专门为该组织构建的,因此其他组织通常无法从该工作中受益。团队认为自己与众不同,并与Asgard一起致力于詹金斯的工作。所有这些重复的工作不仅浪费,而且使团队难以掌握最新的交付最佳实践并保持最新状态。

2014年,团队同意 Jenkins 之类的通用持续集成(CI)工具无法为构建具有所需安全性和灵活性的持续交付平台提供合适的基础。为此,一个新的工具诞生了。 Netflix 的交付工程团队与 Google 合作,构建了 Spinnaker,这是一个多云连续输送和基础架构管理工具,该工具可以集中管理并且足够灵活,可以让团队自定义交付内容,但是要进行标准化,以便为所有人带来最佳实践和安全性。 Spinnaker 汇集了数十年的经验,将软件编写和交付到每个人都可以使用的东西中,而无需经历同样的痛苦。

自从 Spinnaker 在开源社区中被广泛采用以来,维护者一直在不断添加新功能和集成,从而使 Spinnaker 在 Netflix,Google,Airbnb,Pinterest和 Snap 等公司中变得更加有用和具有粘性。

Spinnaker 功能

  • CI 工具集成:监听事件 , 收集制品。支持触发 Jenkins/TravisCI 管道。
  • cli 配置管理工具:使用 halyard 安装、配置和更新 Spinnaker 实例。
  • 监控集成:使用指标进行金丝雕分析。支持Prometheus、Datadog等。
  • 部署策略:内置highlander、red/black、canary、自定义策略。
  • 基于角色访问控制:支持 oAuth、SAML、LDAP、X.509 证书等身份验证方式。
  • 事件通知:设置email、Slack、HipChat或SMS的事件通知。
  • 受限发布窗口:将阶段的执行限制在特定的时间范围内,确保在非高峰部署。

Spinnaker 应用管理

Spinnaker 应用程序对此概念进行了建模。应用程序,集群和服务器组是Spinnaker用来描述服务的

关键概念。负载均衡器和防火墙描述了服务如何向用户公开。

  • 应用:将要部罩的服务,该服务的所有配置以及将在其上运行的所有基础结构。可以通俗理解为,一个 Spiinaker 的应用程序,就是现实中的一个服务
  • 集群:实例的集合(这里的集群不是 k8s 集群)。
  • 服务器组:运行服务的实例(VM实例, Kubernetes容器)的集合。
  • “负载均衡器”:实例之间的流量控制,对应集群中的service(Kubernetes中的service)。
  • 防火墙:网络流量的访问。它实际上是由IP范围(CIDR〉以及通信协议(例如TCP)和端口范围定义的一组防火墙规则。

应用部署

使用Spinnaker的应用程序部署功能来构建和管理连续交付工作流程。由一系列阶段组成。可配置根据事件自动触发。管道消息通知。

Spinnaker 架构组成

  • Deck:前端 web页面 “端口9000”
  • Gate:AP1网关,所有程序通过 gate 与spinnaker通信。端口8084
  • Orca:编排引攀,定义管道或任务,并管理阶段和任务,协调其他Spinnaker服务。端口8083
  • Clouddriver:云厂商适配器,负责对云厂商的变更资源调用。端口7002
  • Front50:用于保存应用程序、管道、项目和通知的元数据。端口8080
  • Rosco:为各种运供应商生成不可变的VM镜像。端口80871
  • Igor:持续集成系统集成,触发管道。端口8088
  • Echo:消息通知,负责发送通知。端口8089
  • Fiat:认证授权服务。端口7003
  • Kayenta:自动化的金丝雕分析。端口8090
  • Halyard:Spinnaker 生命周期配置管理工具。端口8064

Halyard

Halyard是用于配置,安装和更新Spinnaker的工具。

Halconfig:是 Spinnaker 部署的所有配置的来源。它通常位于 “/.hal/config“,但可以通过halyard.halconfig.directorySpring 的 config 属性更改其目录。

安装 Spinnaker

  1. 部署 Minio 存信服务(S3)
  2. 配置Docker代理
  3. 部署 Nalyard 容器并进行代理配置。
  4. 使用 Nalyard 配置 Spinnaker
  5. 使用 Nalyard 部署 Spinnaker
  6. 检查 Spinnaker pod正常
  7. 创建Ingress 访问
  8. 备份配置
  9. 删除安装
1
2
3
4
5
6
7
8
9
以 root 身 份 进 入 容 器 , 修 改 配 置 文 件

docker exec -i -u root halyard bash

vi /opt/halyard/bin/halyard

挂 找 到 DEFAULT_JVWL_0PTS 参 数 , 添 加 代 理 配 置 DEFAULT_IVMLOPTS=「“-Djava.security.egd=file:/dev/./urandom「“- Dspring.config.additional-location=/opt/spinnaker/config/““- Dhttp.proxyHost=192.168.1.289“ “-Dhttp.proxyPort=16879“-

Dhttps .proxyHost=192.168.1.289““-Dhttps.proxyPort=1887““- Dhttp.nonProxyHostS=V“spinnaker-Spinnaker-halyard|localhost|*.Spinnaker.comyo 

本文发布于Cylon的收藏册,转载请著名原文链接~

链接:https://www.oomkill.com/2023/06/ch01-spinnaker-introduction/

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」 许可协议进行许可。