作者 | 存诚 阿里云弹性计算团队
本文整顿自 《Serverless 技术公开课》,“Serverless”公众号后盾回复“入门”,即可获取系列文章 PPT。
导读: 本节课程为您介绍如何基于阿里云 Serverless Kubernetes(简称 ASK)服务,来疾速构建 GitLab 继续集成环境。
ASK 介绍
首先,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。
这么做的劣势有以下几点:
- 服务高可用(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 集群
- 在【容器服务控制台】创立规范 Serverless K8s 集群
- 集群创立实现后,根本信息中有 API server 公网链接地址
- 连贯信息中有 ASK 集群拜访凭证
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
7. 进行一个简略的 CI 工作
git repo 中的 .gitlab-ci.yml 相似 Jenkinsfile,定义了构建工作的工作流。咱们批改 demo 我的项目中的 src/main/webapp/index.jsp 文件,而后 git commit -m “change index info” 提交。gitlab 中的流水线工作即被触发,整个流程波及到编译、打包、部署。
老本
应用 ASK 与一台预付费 ECS 的老本比照:
从上述成本计算能够看出,当您每天的 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 趋势,更关注你落地实际中的遇到的困惑和问题。