关于本文
本文目标是为K8S环境的Gitlab Runner准备好分布式缓存,并在pipeline脚本中使用该缓存,因此,在阅读本文前建议您对GitLab CI有一定了解,最好是阅读过甚至编写过pipeline脚本;
关于GitLab Runner
如下图所示,开发者将代码提交到GitLab后,可以触发CI脚本在GitLab Runner上执行,通过编写CI脚本我们可以完成很多使用的功能:编译、构建、生成docker镜像、推送到私有仓库等:
Gitlab Runner的分布式缓存
-
官方文档地址,有关缓存的详情可以参考此文:https://docs.gitlab.com/runner/configuration/autoscale.html#distributed-runners-caching
-
如下是官方的分布式缓存示例(config.toml 文件):
[[runners]]
limit = 10
executor = “docker+machine”
[runners.cache]
Type = “s3”
Path = “path/to/prefix”
Shared = false
[runners.cache.s3]
ServerAddress = “s3.example.com”
AccessKey = “access-key”
SecretKey = “secret-key”
BucketName = “runner”
Insecure = false
- 接下来通过实战完成分布式缓存配置;
环境和版本信息
本次实战涉及到多个服务,下面给出它们的版本信息供您参考:
-
GitLab:Community Edition 13.0.6
-
GilLab Runner:13.1.0
-
kubernetes:1.15.3
-
Harbor:1.1.3
-
Minio:2020-06-18T02:23:35Z
-
Helm:2.16.1
部署分布式缓存
- minio是兼用S3的分布式缓存,也是官方推荐使用的,如下图:
-
minio作为一个独立的服务部署,我将用docker部署在服务器:192.168.50.43
-
在服务器上准备两个目录,分别存储minio的配置和文件,执行以下命令:
mkdir -p /var/services/homes/zq2599/minio/gitlab_runner \
&& chmod -R 777 /var/services/homes/zq2599/minio/gitlab_runner \
&& mkdir -p /var/services/homes/zq2599/minio/config \
&& chmod -R 777 /var/services/homes/zq2599/minio/config
- 执行docker命令创建minio服务,指定服务端口是9000,并且指定了access key(最短三位)和secret key(最短八位):
sudo docker run -p 9000:9000 --name minio \
-d --restart=always \
-e “MINIO_ACCESS_KEY=access” \
-e “MINIO_SECRET_KEY=secret123456” \
-v /var/services/homes/zq2599/minio/gitlab_runner:/gitlab_runner \
-v /var/services/homes/zq2599/minio/config:/root/.minio \
minio/minio server /gitlab_runner
- 浏览器访问,输入access key和secret key后登录成功:
- 如下图,点击红框中的图标,创建一个bucket,名为runner:
- 至此,minio已备好,接下来在GitLab Runner上配置;
GitLab Runner上配置缓存
-
我这里是用helm部署的GitLab Runner,因此修改的是helm的value配置,如果您没有用helm,可以参考接下来的操作直接去配置config.toml文件;
-
helm下载了GitLab Runner的包后,解开可见配置信息如下:
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
那么如何才能正确的掌握Redis呢?
为了让大家能够在Redis上能够加深,所以这次给大家准备了一些Redis的学习资料,还有一些大厂的面试题,包括以下这些面试题
-
并发编程面试题汇总
-
JVM面试题汇总
-
Netty常被问到的那些面试题汇总
-
Tomcat面试题整理汇总
-
Mysql面试题汇总
-
Spring源码深度解析
-
Mybatis常见面试题汇总
-
Nginx那些面试题汇总
-
Zookeeper面试题汇总
-
RabbitMQ常见面试题汇总
JVM常频面试:
Mysql面试题汇总(一)
Mysql面试题汇总(二)
Redis常见面试题汇总(300+题)
…(img-bQ2RSsQ0-1710399478384)]
Mysql面试题汇总(一)
[外链图片转存中…(img-0g6Q3QQY-1710399478385)]
Mysql面试题汇总(二)
[外链图片转存中…(img-sGlz5BDA-1710399478385)]
Redis常见面试题汇总(300+题)
[外链图片转存中…(img-EeIZ9Oku-1710399478386)]