快速构建 Gitlab 持续集成环境|学习笔记

本文涉及的产品
函数计算FC,每月15万CU 3个月
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 快速学习 快速构建 Gitlab 持续集成环境

开发者学堂课程【Serverless 容器从入门到精通: Serverless Kubernetes:快速构建 Gitlab 持续集成环境】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/646/detail/10734


快速构建 Gitlab 持续集成环境


目录:

一、 Serverless Kubernetes(ASK)

二、 Gitlab CI on ASK

三、 Gitlab CI on ASK 实践演示

四、 Gitlab Cl on ASK 成本

 

一、 Serverless Kubernetes(ASK)

1. 优势: 适用场景:

1) 降低使用 k8s 门槛,无需管理 Node 节点;

2) 无需考虑节点容量规划;

3) 以 Pod 为单位进行计费,不运行不计费;

4) 宕机故障影响面小。

2. 适用场景

1) 在线业务弹性(视频直播、在线教育);

2) 大数据计算 (spark);

3) 定时任务;

4) CI/CD 持续集成。

 

二、 Gitlab CI on ASK

1. 服务高可用(Deployment+PVC);

2. 无需维护 k8s Master、Node 节点,在没有任何构建任务的情况下,只需要运行一个Pod(gitlab-runner);

3. 触发一个构建任务,启动一个 Pod,按需计费;

4. 宕机故障只会影响以 Pod 为单位。

 

三、 Gitlab CI on ASK 实践演示

1. 在阿里云 ASK 集群上运行 gitlab-runner

2. 通过 gitlab CICD Pipeline 部署 java 应用到 ASK 集群中

3. 知识点:

通过 configMap 保存 gitlab runner 和 executor 的配置

通过 secret 保存 ASK 集群的访问凭证和镜像仓库的密钥

通过 PVC 缓存 runner cache 和 maven 仓库

通过 imageCache 缓存容器镜像

l 配置文件 yaml 地址:

https://github.com/aliyuneci/BestPractice-Serverless-Kubernetes/tree/master/eci-gitlab-runner

1. 准备 ASK 集群

https://cs.console.aliyun.com/?spm=5176.eciconsole.0.0.68254a9cNV12zh#/k8s/cluster/createV2/serverless 容器服务控制台创建标准

serverless k8s 集群

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-ov.yaml

kubectl apply -f nas-pvc.yaml

3. 准备 Secret

1) kubeconfig 里的证书公私钥拷贝到 secret 中,secret.yaml

kubectl apply -f secret.yaml

2) docker-registry 的认证信息,ECI 支持免密拉取,但是 push docker image 还是要用到

kubectl create secret docker-registry registry-auth-secret try.cn-hangzhoualiyuncs.com --docker-username-$(xxx)

3) 查看生成的 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(可选,节省镜像拉取时间)

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

#查看 image cache crd 是否安转

kubect1get crd

安装 inage cache crd

kubectl apply-f imagecache-crd.yaml

#制作 inagecache

kubectlapply -f imagecache.yaml

6. 部署 gitlab runner

kubectl apply -f gitlab-runner-deployment.yaml

7. 导入 git repo,java demo 见 java-demo 目录

 

四、 Gitlab Cl on ASK 成本

1. 一台预付费 ECS 2c4g:201 元/月

2. 一台 ECI 1c2g:0.221 元/小时,用作 gitlab-runner Deployment 的部署,一个月159 元。

3. 201-159=42 元:每次用 1c2g 跑一个 CICD 任务,190h=3800*3min=> 每月3800 个任务(126/天)

l 欢迎使用 ASK+ECI J 阿里云

阿里云 ASK  帮助文档:

https://help.aliyun.com/documentdetail/86366.html?spm=a2c4g.11186623.6.867.880b1c74m6gscH

阿里云 ECI 帮助文档:

https://help.aliyun.com/product/87486.html?spm=a2c4g.750001.list.10.4cc17b13pUUEtE

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
存储 SQL 分布式计算
Hologres 与阿里云生态的集成:构建高效的数据处理解决方案
【9月更文第1天】随着大数据时代的到来,数据处理和分析的需求日益增长。阿里云作为国内领先的云计算平台之一,提供了多种数据存储和处理的服务,其中Hologres作为一款实时数仓产品,以其高性能、高可用性以及对标准SQL的支持而受到广泛关注。本文将探讨Hologres如何与阿里云上的其他服务如MaxCompute、DataHub等进行集成,以构建一个完整的数据处理解决方案。
54 2
|
2月前
|
机器学习/深度学习 测试技术 持续交付
ONNX 与持续集成/持续部署 (CI/CD):构建可信赖的 ML 生命周期管理
【8月更文第27天】随着机器学习 (ML) 模型的广泛应用,确保模型的正确性、稳定性和可追踪性变得尤为重要。持续集成/持续部署 (CI/CD) 是软件开发中的重要实践,旨在通过自动化测试和部署流程来提高软件质量和开发效率。将 ONNX 集成到 CI/CD 流程中可以实现模型版本管理、自动化测试和部署,从而构建一个可信赖的机器学习生命周期管理系统。本文将探讨如何将 ONNX 模型与 CI/CD 流程结合,以实现模型的自动化管理。
42 5
|
2月前
|
Java jenkins Shell
jenkins学习笔记之五:Maven、Ant、Gradl、Node构建工具集成
jenkins学习笔记之五:Maven、Ant、Gradl、Node构建工具集成
|
2月前
|
Shell Docker 容器
GitlabCI学习笔记之一:安装Gitlab和GitLabRunner
GitlabCI学习笔记之一:安装Gitlab和GitLabRunner
|
2月前
|
jenkins 持续交付
jenkins学习笔记之六:共享库方式集成构建工具
jenkins学习笔记之六:共享库方式集成构建工具
|
2月前
|
jenkins 持续交付 API
enkins学习笔记之十一:优化Gitlab提交流水线
enkins学习笔记之十一:优化Gitlab提交流水线
enkins学习笔记之十一:优化Gitlab提交流水线
|
2月前
|
JavaScript 网络协议 API
【Azure API 管理】Azure APIM服务集成在内部虚拟网络后,在内部环境中打开APIM门户使用APIs中的TEST功能失败
【Azure API 管理】Azure APIM服务集成在内部虚拟网络后,在内部环境中打开APIM门户使用APIs中的TEST功能失败
|
2月前
|
消息中间件 运维 Cloud Native
核心系统转型问题之快速集成不同技术体系构建的应用系统如何解决
核心系统转型问题之快速集成不同技术体系构建的应用系统如何解决
|
2月前
|
前端开发 Java UED
JSF遇上Material Design:一场视觉革命,如何让传统Java Web应用焕发新生?
【8月更文挑战第31天】在当前的Web开发领域,用户体验和界面美观性至关重要。Google推出的Material Design凭借其独特的动画、鲜艳的颜色和简洁的布局广受好评。将其应用于JavaServer Faces(JSF)项目,能显著提升应用的现代感和用户交互体验。本文介绍如何通过PrimeFaces等组件库在JSF应用中实现Material Design风格,包括添加依赖、使用组件及响应式布局等步骤,为用户提供美观且功能丰富的界面。
33 0
|
2月前
|
开发者 前端开发 开发框架
JSF与移动应用,开启全新交互体验!让你的Web应用轻松征服移动设备,让用户爱不释手!
【8月更文挑战第31天】在现代Web应用开发中,移动设备的普及使得构建移动友好的应用变得至关重要。尽管JSF(JavaServer Faces)主要用于Web应用开发,但结合Bootstrap等前端框架,也能实现优秀的移动交互体验。本文探讨如何在JSF应用中实现移动友好性,并通过示例代码展示具体实现方法。使用Bootstrap的响应式布局和组件可以确保JSF页面在移动设备上自适应,并提供友好的表单输入和提交体验。尽管JSF存在组件库较小和学习成本较高等局限性,但合理利用其特性仍能显著提升用户体验。通过不断学习和实践,开发者可以更好地掌握JSF应用的移动友好性,为Web应用开发贡献力量。
38 0
下一篇
无影云桌面