作者 | 瑶靖
起源 | 阿里巴巴云原生公众号
据信通院《中国 DevOps 现状调查报告(2020 年)》显示,63% 的企业曾经实际落地 DevOps,采纳继续交付流水线买通开发、测试、部署和运维多个环节。然而仍然有 20% 的企业反馈实际 DevOps 简单,自建 Jenkins 须要自部署及插件运维,而 SaaS 化 CI/CD 工具又配置繁琐,心愿有更轻量便捷的工具减速其转型落地。
目前,阿里云与 GitHub 联结公布了疾速部署至阿里云 ACK 的 GitHub Action Workflow。无需再自建部署保护 CI/CD 工具,基于开箱即用的 GitHub Action 及阿里云部署模板,即可实现 GitHub 代码变更后,主动利用打包构建上传阿里云容器镜像服务 ACR、疾速部署至阿里云容器服务 ACK 的流程。本文将从 GitHub Action、阿里云容器服务及实际 Demo 来为您具体介绍。
图 1 – GitHub Action 反对阿里云部署模板
GitHub 与阿里云联结公布 GitHub Action Workflow
1. 对于 GitHub Acticon
图 2 – GitHub Action 首页
GitHub Action 是 GitHub 2018 年 10 月推出的内置继续集成工具,简化自动化构建、测试、部署的流程。GitHub Action 通过将继续集成的原子操作封装成 Actions,再基于 Workflow 流程定义,将多个 Action 组装成可复用的模板,实现 GitHub 事件更新后主动触发执行 Action 流程。
GitHub Action 有以下特点:
- 开箱即用:GitHub Action 是 SaaS 化托管服务,可通过申明指定在 GitHub VM 或者容器外部执行工作,保障业务顶峰期间的弹性扩容。同时,也反对增加您自主托管在云上或者 IDC 的机器来执行工作,定制工作执行的环境。
- 灵便便捷:反对 Linux、macOS、Windows 多平台,虚拟机及容器运行环境。反对 Node.js、Python、Java、Ruby、PHP、Go、Rust、.NET 等多语言和框架。反对矩阵构建,实现多平台多环境并行兼容测试,进步软件测试集成效率。
- 限额收费:GitHub Action 针对公开仓库及自主托管的 runner 是收费的,针对其余 GitHub 规格有收费的存储及工作运行时长,超额后按量免费,具体免费信息参考:http://t.tb.cn/69r7pJmDOlTsLN724CgrlO。
- 凋谢生态:GitHub Action 应用 YAML 脚本编写,它们能够像代码片段一样被编辑和复用。GitHub Action Marketplace 也提供了云厂商认证及三方提供的 GitHub Action 模板,您可间接应用或二次定制。
GitHub Action 的外围概念分为以下四个局部:
- Workflow:基于代码仓库的一次继续集成运行过程,能够设置定时或者由 GitHub 事件触发。Workflow 文件采纳 YAML 格局定义,寄存在代码仓库的 .github/workflows 目录下。一个代码仓库能够有多个 Workflow 文件,GitHub 辨认到目录下的 .yaml 文件,就会并行执行这些 Workflow。
- Job:一个 Workflow 由多个 Job 形成。默认 Job 会并发执行,也能够设置 Job 程序执行,实现有前后逻辑依赖的 Workflow。
- Step:一个 Job 由多个 Step 形成。同一个 Job 下的 Step 会在一个 Runner 上执行,保障环境及数据的共享。
- Action:一个 Step 由多个 Action 形成。Action 是独立的命令集,也基于 YAML 代码定义的,开发者能够像代码一样编辑、重用以及共享。
以下是一个简略的 GitHub Action Workflow 示例,定义了由两个 Step 组成的 Job。其中,第一个 Step 复用了社区的 actions/checkout@v2 模板,执行以后代码库的检出,第二个 Step 则间接执行了 Bash 命令。
name: Greeting
on: push
jobs:
my-job:
name: My Job
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Greeting
run: |
echo 'Welcome to Alibaba Cloud!'
GitHub 与阿里云联结公布的 GitHub Action Worflow,定义了多个 Step,反对疾速构建及部署至阿里云容器服务 ACK。具体 Workflow 的定义,可参考链接:http://t.tb.cn/60eKsjLUTOKijV4NjGizeq。
2. 对于阿里云容器服务
如果说 GitHub Action 是实际 DevOps 的瑞士军刀,那么阿里云容器服务就是落地云原生 DevOps 的最佳界面,功能丰富又便捷易用。阿里云容器服务 ACK(Alibaba Cloud Container Service for Kubernetes)是寰球首批通过 Kubernetes 一致性认证的服务平台,提供高性能的容器利用治理服务,反对企业级 Kubernetes 容器化利用的生命周期治理。ACK 在阿里团体内作为外围的容器化基础设施,有丰盛的利用场景和教训积攒,包含电商、实时音视频、数据库、消息中间件、人工智能等场景,撑持宽泛的内外部客户的 双 11 流动。同时,容器服务将阿里外部各种大规模场景的教训和能力融入产品,向私有云客户凋谢,晋升了更加丰盛的性能和更加突出的稳定性,容器服务间断多年放弃国内容器市场份额第一。
图 3 – 阿里云容器服务产品家族
在利用治理畛域,针对阿里的大规模实际和企业的丰盛生产实践,阿里云进一步加强了可靠性、安全性,并且提供可赔付的 SLA 的 Kubernetes 集群 – ACK Pro 版。ACK Pro 版集群是在原 ACK 托管版集群的根底上倒退而来的集群类型,继承了原托管版集群的所有劣势,例如 Master 节点托管、Master 节点高可用等。同时,相比原托管版进一步晋升了集群的可靠性、安全性和调度性能,并且反对赔付规范的 SLA,适宜生产环境下有着大规模业务,对稳定性和安全性有高要求的企业客户。
在利用制品治理畛域,面向平安及性能需求高的企业客户,阿里云推出容器镜像服务企业版 ACR EE,提供公共云首个独享实例的企业级服务。ACR EE 除了反对多架构容器镜像,还反对多版本 Helm Chart、Operator 等合乎 OCI 标准制品的托管。在平安治理局部,ACR EE 提供了网络访问控制、平安扫描、镜像加签、平安审计等多维度平安保障,助力企业从 DevOps 到 DevSecOps 的降级。在寰球散发减速场景,ACR EE 优化了网络链路及调度策略,保障稳固的跨海同步成功率。在大镜像规模化散发场景,ACR EE 反对按需加载,实现镜像数据免全量下载和在线解压,均匀容器启动工夫升高 60%。目前已有泛滥企业生产环境模应用 ACR EE,保障企业客户云原生利用制品的平安托管及多场景高效散发。
如果你在容器镜像的应用方面有什么问题,欢送 点击填写考察问卷,咱们将随机筛选 10 位参与者,赠送阿里云容器镜像服务(企业版)ACR EE 优惠券。
基于 GitHub Action + ACK 构建云原生 DevOps 实际
上面将基于 GitHub Action 演示,如何将一个简略 Nginx 利用打包成容器镜像,托管至阿里云容器镜像服务 ACR,再自动化部署至阿里云容器服务 ACK,疾速便捷地实现 CI/CD 流程。GitHub Action Demo 地址参考:http://yli16.cn/LAZxC,您能够更新对应 Yaml 文件,实现自定义业务场景。
图 4 – 基于 GitHub Action 的 DevOps 流程
1. 后期筹备
- 开明阿里云容器镜像服务 ACR,创立命名空间及镜像仓库,参考文档。如果您有强平安及高性能散发需要,倡议应用 ACR EE 企业版实例,参考文档。
- 开明阿里云容器服务 ACK,在 ACK 上创立一个集群,参考文档。如果您有强平安及高性能需要,倡议应用 ACK PRO,参考文档。
- 开明 GitHub 并创立仓库,代码仓库中有业务代码也蕴含利用部署的模板 Yaml,可参考代码示例。
2. 实际过程
1)创立 Workflow
在 GitHub 代码仓库中,点击 Actions 的 Tab 页面,会有基于以后 GitHub 我的项目内容举荐的 Workflow,抉择部署至阿里云 ACK 的 Workflow 模板。
图 5 – GitHub 仓库内置 Actions
图 6 – 抉择部署至阿里云 ACK 的 Workflow
GitHub Action 默认会在代码仓库 .github/workflows 目录下创立 alibabacloud.yml 文件。在 YAML 文件中定义监听代码公布 Release 事件,一旦事件产生就会主动触发后续集成部署的流程。您也能够搜寻右侧市场中相干的 Action,自定义 Job 中的 Action 步骤。
2)更新 Workflow 中变量信息
在 Workflow 中定义了 env 环境变量,须要依照理论状况更新对应的地区、容器镜像服务、容器服务集群等信息。ACCESS_KEY_ID 和 ACCESS_KEY_SECRET 定义了阿里云账号 AK 信息,须要以密文模式设置在仓库对应的 Secrets 中。
图 7 – 更新 Worflow 中对应的环境变量
图 8 – 更新 Secrets 信息
3)主动部署
配置实现后,默认当有一个 Release 公布后,会主动触发 GitHub Action 执行工作。点击 Actions 按钮,能够看到对应的工作执行历史和详情。整个工作流是程序执行的,一旦其中某个工作执行失败后,整个工作流都将终止执行。可实现容器镜像推送至 ACR 后,发现有高危安全漏洞,立刻勾销后续容器部署至 ACK 流程。当构建、平安扫描及部署流程顺利完成,则在 ACK 上会基于新的容器镜像生成一个 nginx 服务。将平安危险辨认及决策内置全链路中,实际平安高效的 DevSecOps 流程。
图 9 – Workflow 执行历史
4)扩大
您能够在 GitHub Action Marketplace 上寻找须要的 Action 工作模板,来实现自定义的 Workflow 流程。目前,GitHub Action 上曾经有丰盛的 Action 模板,笼罩了多种语言的代码依赖、代码集成、代码品质等多种场景。能够基于模板疾速构建出一个反对多操作系统及多语言框架下的 Workflow 矩阵,并行测试项目的多个版本。
图 10 – GitHub Action Marketplace
指引云原生时代落地 DevOps 的新门路
相较于传统的 Jenkins 工具,GitHub Action 是 SaaS 化托管服务,无需部署及插件运维。只需简略定义或复用官网 Workflow,即可实现便捷的 CI/CD 场景。相较于 Travis CI /Circle CI,GitHub Action 是 GitHub 推出的原生工具,集成体验及灵活性更佳,并且有更丰盛的 Action Marketplace 生态反对,让用户能够更便捷复用及自定义 Workflow。
现在 GitHub Action 也内置反对了主动构建推送阿里云容器镜像服务 ACR,主动部署阿里云容器服务 ACK 的 Workflow,指引云原生时代落地 DevOps 的新门路。心愿能够帮忙更多企业在享受云原生技术红利同时,减速实现企业级的数字化转型和架构降级。
点击参加问卷调查,即有可能取得阿里云容器镜像服务(企业版)ACR EE 优惠券!