从零入门 Serverless | 教你 7 步快速构建 GitLab 持续集成环境

简介: 本节课程为您介绍如何基于阿里云 Serverless Kubernetes(简称 ASK)服务,来快速构建 GitLab 持续集成环境。

头图.jpg

作者 | 存诚 阿里云弹性计算团队

本文整理自《Serverless 技术公开课》,“Serverless”公众号后台回复“入门”,即可获取系列文章 PPT。

导读:本节课程为您介绍如何基于阿里云 Serverless Kubernetes(简称 ASK)服务,来快速构建 GitLab 持续集成环境。

ASK 介绍

1.PNG

首先,ASK 是什么?ASK 是阿里云推出的无服务器版 Kubernetes 容器服务。与传统的 Kubernetes 服务相比,ASK最大的特点就是通过虚拟节点接入 Kubernetes 集群,而 Kubernetes 的 Master 节点也完全由阿里云容器服务托管。因此,在整个 ASK 集群中,用户无需管理和运维真实节点,只用关心 Pod 资源即可,ASK 中的 Pod 则由阿里云弹性容器实例 ECI 承载。

ASK 的优势主要有以下几点:

  • 降低用户使用 Kubernetes 的门槛,无需管理 Node 节点;
  • 无需考虑节点的容量规划;
  • 以 Pod 为单位按需计费;
  • 宕机故障影响面小,Pod 级别。

同时,ASK 主要适用的场景有:

  • 在线业务弹性(视频直播、在线教育);
  • 大数据计算(Spark);
  • 定时任务;
  • CI/CD 持续集成。

GitLab CI on ASK 的优势

说到 CI/CD,大家最熟悉的两个工具,一个是 Jenkins,另一个是 GitLab CI,随着 Devops 角色的流行,越来越多的企业采用 GitLab CI 作为持续集成的工具,下面给大家介绍下 GitLab CI on ASK。gitlab-runner 以 Pod 形式注册到 ASK 集群中,每个 CI/CD stage 也对应一个 Pod。

2.png

这么做的优势有以下几点:

  • 服务高可用(Deployment+PVC);
  • 无需维护 K8s Master、Node 节点,在没有任何构建任务的情况下,只需要运行一个 Pod(gitlab-runner);
  • 触发一个构建任务,启动一个 Pod,按需计费;
  • 宕机故障只会影响以 Pod 为单位。

实践演示

接下来给大家演示如何在阿里云 ASK 集群上部署 gitlab-runner,并且通过 gitlab CICD Pipeline 部署 Java 应用到 ASK 集群中。

其中涉及到的知识点主要有:

  • 通过 configMap 保存 gitlab runner 和 executor 的配置;
  • 通过 secret 保存 ASK 集群的访问凭证和镜像仓库的密钥;
  • 通过 PVC 缓存 runner cache 和 maven 仓库;
  • 通过 imageCache 缓存容器镜像。

本节课程涉及到的所有的配置文件(yaml)都已经上传到 github 供大家下载【下载链接】。

下面开始演示,视频版课程请点击【观看链接】。

1. 准备 ASK 集群

3.png

  • 集群创建完成后,基本信息中有 API server 公网链接地址

4.png

  • 连接信息中有 ASK 集群访问凭证

5.png

2. 准备 PV/PVC

准备两个 nas 盘,一个做 gitlab runner cache,一个做 maven 仓库,请自行替换 nas server 地址和path

kubectl apply -f mvn-pv.yaml
kubectl apply -f mvn-pvc.yaml
kubectl apply -f nas-pv.yaml
kubectl apply -f nas-pvc.yaml

3. 准备 Secret

  • kubeconfig 里的证书公私钥拷贝到 secret 中,secret.yaml
kubectl apply -f secret.yaml
  • docker-registry 的认证信息,ECI 支持免密拉取,但是 push docker image 还是要用到
kubectl create secret docker-registry registry-auth-secret --docker-server=registry.cn-hangzhou.aliyuncs.com --docker-username=${xxx} --docker-password=${xxx}
  • 查看生成的 secret 可以用以下命令
kubectl get secret registry-auth-secret --output=yaml

4. 准备 ConfigMap

把 gitlab runner 的 url、token,ASK 集群的 api server 地址拷贝到 config.yaml

kubectl apply -f config-map.yaml

5. 准备 imageCache(可选,节省镜像拉取时间)

目前 AS K默认安装了 imagecache-crd,可以用以下命令查询,如果没有可以自己安装

# 查看image cache crd 是否安转
kubectl get crd
# 安装image cache crd
kubectl apply -f imagecache-crd.yaml
# 制作imagecache
kubectl apply -f imagecache.yaml

6. 部署 gitlab runner

kubectl apply -f gitlab-runner-deployment.yaml

6.png

7. 进行一个简单的 CI 任务

7.png

git repo 中的 .gitlab-ci.yml 类似 Jenkinsfile,定义了构建任务的工作流。我们修改 demo 项目中的 src/main/webapp/index.jsp 文件,然后 git commit -m "change index info" 提交。 gitlab 中的流水线任务即被触发,整个流程涉及到编译、打包、部署。

8.png

9.png

成本

使用 ASK 与一台预付费 ECS 的成本对比:

10.png

从上述成本计算可以看出,当您每天的 CI/CD 任务少于 126 个时,使用 ASK+ECI 会比购买一台包年包月的 ECS 更加划算。在享受按需付费的同时,也降低了运维成本,更加重要的是,当业务规模扩大、CI/CD 任务数量陡增时,不再需要担心 Node 节点的扩容。ASK+ECI 的方案,可以被认为是 CI/CD 持续集成场景的量身标配。

课程推荐

为了更多开发者能够享受到 Serverless 带来的红利,这一次,我们集结了 10+ 位阿里巴巴 Serverless 领域技术专家,打造出最适合开发者入门的 Serverless 公开课,让你即学即用,轻松拥抱云计算的新范式——Serverless。

点击即可免费观看课程:https://developer.aliyun.com/learning/roadmap/serverless

Serverless 公众号,发布 Serverless 技术最新资讯,汇集 Serverless 技术最全内容,关注 Serverless 趋势,更关注你落地实践中的遇到的困惑和问题。

相关实践学习
【玩转ComfyUI】基于函数计算一键部署AI生图平台ComfyUI
本次实验将带大家通过使用阿里云产品函数计算FC,快速使用ComfyUI实现更高质量的图像生成。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
11月前
|
云安全 人工智能 安全
Dify平台集成阿里云AI安全护栏,构建AI Runtime安全防线
阿里云 AI 安全护栏加入Dify平台,打造可信赖的 AI
4214 166
|
12月前
|
人工智能 Java API
Java与大模型集成实战:构建智能Java应用的新范式
随着大型语言模型(LLM)的API化,将其强大的自然语言处理能力集成到现有Java应用中已成为提升应用智能水平的关键路径。本文旨在为Java开发者提供一份实用的集成指南。我们将深入探讨如何使用Spring Boot 3框架,通过HTTP客户端与OpenAI GPT(或兼容API)进行高效、安全的交互。内容涵盖项目依赖配置、异步非阻塞的API调用、请求与响应的结构化处理、异常管理以及一些面向生产环境的最佳实践,并附带完整的代码示例,助您快速将AI能力融入Java生态。
1657 12
数据采集 Web App开发 人工智能
648 0
|
数据采集 Web App开发 人工智能
基于函数计算FC构建 Browser Tool Sandbox 详解与实操
本文介绍了如何基于阿里云函数计算(FC)构建一个安全、可控的 Browser Tool Sandbox,支持多种浏览器自动化操作方式,包括 Playwright、Puppeteer、Browser Use 和 REST API 等,为 AI Agent 安全高效地操作浏览器提供了完整的技术方案。
1076 13
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
1930 1
|
供应链 监控 搜索推荐
35页PPT|零售行业自助数据分析方法论:指标体系构建平台集成、会员与商品精细化运营实践
在零售行业环境剧变的背景下,传统“人找货”模式正被“货找人”取代。消费者需求日益个性化,购买路径多元化,企业亟需构建统一的指标体系,借助BI平台实现数据驱动的精细化运营。本文从指标体系构建、平台集成到会员与商品运营实践,系统梳理零售经营分析的方法论,助力企业实现敏捷决策与业务闭环。
35页PPT|零售行业自助数据分析方法论:指标体系构建平台集成、会员与商品精细化运营实践
|
SQL 关系型数据库 Apache
从 Flink 到 Doris 的实时数据写入实践 —— 基于 Flink CDC 构建更实时高效的数据集成链路
本文将深入解析 Flink-Doris-Connector 三大典型场景中的设计与实现,并结合 Flink CDC 详细介绍了整库同步的解决方案,助力构建更加高效、稳定的实时数据处理体系。
4107 0
从 Flink 到 Doris 的实时数据写入实践 —— 基于 Flink CDC 构建更实时高效的数据集成链路
|
消息中间件 存储 数据采集
Apache InLong:构建10万亿级数据管道的全场景集成框架
Apache InLong(应龙)是一站式、全场景海量数据集成框架,支持数据接入、同步与订阅,具备自动、安全、可靠和高性能的数据传输能力。源自腾讯大数据团队,现为 Apache 顶级项目,广泛应用于广告、支付、社交等多个领域,助力企业构建高效数据分析与应用体系。
|
分布式计算 Serverless OLAP
实时数仓Hologres V3.1版本发布,Serverless型实例从零开始构建OLAP系统
Hologres推出Serverless型实例,支持按需计费、无需独享资源,适合新业务探索分析。高性能查询内表及MaxCompute/OSS外表,弹性扩展至512CU,性能媲美主流开源产品。新增Dynamic Table升级、直读架构优化及ChatBI解决方案,助力高效数据分析。
实时数仓Hologres V3.1版本发布,Serverless型实例从零开始构建OLAP系统
|
JSON 安全 Serverless
MCP Server 之旅第 2 站: 从 0 到 1 - MCP Server 市场构建与存量 OpenAPI 转 MCP Server
本文聚焦MCP协议在企业应用中的两大核心痛点:如何将社区主流STDIO MCP Server一键转为可插拔Remote MCP Server,以及如何实现存量OpenAPI向MCP Server的智能化转型。文章通过具体示例,展示了基于函数计算和协议转译Adapter的解决方案,支持npm/pip生态,实现零改造一键迁移,大幅降低成本。

相关产品

  • 函数计算