开发者学堂课程【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