https://github.com/zq2599/blog_demoshtml
內容:全部原創文章分類彙總及配套源碼,涉及Java、Docker、Kubernetes、DevOPS等;git
本文目標是爲K8S環境的Gitlab Runner準備好分佈式緩存,並在pipeline腳本中使用該緩存,所以,在閱讀本文前建議您對GitLab CI有必定了解,最好是閱讀過甚至編寫過pipeline腳本;程序員
以下圖所示,開發者將代碼提交到GitLab後,能夠觸發CI腳本在GitLab Runner上執行,經過編寫CI腳本咱們能夠完成不少使用的功能:編譯、構建、生成docker鏡像、推送到私有倉庫等:github
[[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
本次實戰涉及到多個服務,下面給出它們的版本信息供您參考:docker
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
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
3. 打開values.yaml,找到cache的配置,當前cache的配置以下圖,可見值爲空內容的大括號,其他信息所有被註釋了:shell
4. 修改後的cache配置以下圖,紅框1中原先的大括號已去掉,紅框2中的是去掉了註釋符號,內容不變,紅框3中填寫的是minio的訪問地址,紅框4中的是去掉了註釋符號,內容不變:數據庫
5. 上圖紅框4中的s3CacheInsecure參數等於false表示對minio的請求爲http(若是是true就是https),但實際證實,當前版本的chart中該配置是無效的,等到運行時仍是會以https協議訪問,解決此問題的方法是修改templates目錄下的_cache.tpl文件,打開此文件,找到下圖紅框中的內容:瀏覽器
6. 將上圖紅框中的內容替換成下面紅框中的樣子,即刪除原先的if判斷和對應的end這兩行,直接給CACHE_S3_INSECURE賦值:緩存
7. 以上只是cache相關的配置,helm部署GitLab Runner的其餘設置還請自行處理,全部設置完成後回到values.yam所在目錄,執行如下命令便可建立GitLab Runner:服務器
helm install \ --name-template gitlab-runner \ -f values.yaml . \ --namespace gitlab-runner
# 設置執行鏡像 image: busybox:latest # 整個pipeline有兩個stage stages: - build - test # 定義全局緩存,緩存的key來自分支信息,緩存位置是vendor文件夾 cache: key: ${CI_COMMIT_REF_SLUG} paths: - vendor/ before_script: - echo "Before script section" after_script: - echo "After script section" build1: stage: build tags: - k8s script: - echo "將內容寫入緩存" - echo "build" > vendor/hello.txt test1: stage: test script: - echo "從緩存讀取內容" - cat vendor/hello.txt
4. 點開build1的圖標,可見此job的輸出信息:
5. 點開test1的圖標,可見對應的控制檯輸出,上一個job寫入的數據被成功讀取:
微信搜索「程序員欣宸」,我是欣宸,期待與您一同暢遊Java世界...
https://github.com/zq2599/blog_demos