iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0
DevOps

DevOps需要的技能樹...(應該)都點得到!系列 第 29

Day 29: GitLab CI/CD 與 Kubernetes 的集成實踐

  • 分享至 

  • xImage
  •  

本章節「GitLab CI/CD」概要

Day 24: GitLab CI/CD 基本概念與工作流程
Day 25: GitLab Runners 配置與使用
Day 26: 使用 GitLab CI/CD 進行原始碼掃描及套件掃描
Day 27: 使用 GitLab CI/CD 進行自動化測試
Day 28: 如何在 GitLab CI/CD 中實現持續部署 (CD)
Day 29: GitLab CI/CD 與 Kubernetes 的集成實踐

因為免費方案之硬體需求關係,此章節會以GCP作為雲端平台來操作。

K8S集成

GitLab CI/CD 與 Kubernetes 的集成實踐涉及將 GitLab 用作 CI/CD 平台,並在 Kubernetes 集群中自動部署應用程序。這可以通過配置 GitLab 的 .gitlab-ci.yml 文件,利用 Kubernetes 部署應用容器化。GitLab 提供 Kubernetes 集群集成,可以自動更新應用、管理密鑰、配置服務和監控部署狀態。此集成實現了持續集成和持續部署(CI/CD)的自動化,提升了開發效率和運維靈活性。

認識~/.kube/config

~/.kube/config 文件是 Kubernetes 的配置文件,用於管理和連接 Kubernetes 集群。它包含集群的詳細信息、用戶憑證、命名空間以及集群的上下文設定。通過此文件,kubectl 命令行工具可以與多個集群進行通信,並根據需要切換不同的集群和上下文。這個配置文件支持安全訪問集群和方便的集群管理,是與 Kubernetes 交互的重要組件。

事前準備

需要註冊一台新的runner來連接你已有的k8s集群
剛好來回憶Day25的配置步驟

  • 運行runner容器
#拉取映像檔(做一次就好)
docker pull gitlab/gitlab-runner:ubuntu-v16.2.0
#運行gitlab-runner容器
docker run -itd --net=host --privileged=true --name gitlab-runner --restart always -v /srv/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock  -v /usr/bin/docker:/usr/bin/docker gitlab/gitlab-runner:ubuntu-v16.2.0
  • 獲取runner的token

網頁訪問已經架設好的gitlab
在「群組」的層級底下建立一台gitlab runner
路徑:Build > Runners > New group runner > 標籤命名(待會會用到) > Create

記下這個步驟的指令及token,待會會用到

  • 關聯k8s

回到gitlab runner容器內

docker ps
docker exec -it <container id>

安裝kubectl

curl -LO https://dl.k8s.io/release/v1.26.3/bin/linux/amd64/kubectl
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

驗證是否安裝完成

kubectl version --client --output=yaml

至master主機將config文件的內容複製下來,或scp到runner機器/容器內
路徑:/home/使用者名稱/.kube/config

切換用戶,用來關聯k8s

su gitlab-runner

建立資料夾,並將config文件手動貼入(或剛才說的scp)

mkdir /home/gitlab-runner/.kube
nano /home/gitlab-runner/.kube/config

這個時候就能驗證是否能獲取k8s集群訊息

kubectl get nodes

再來一樣註冊runner機器
只是需要先切換回root使用者

su root

接著註冊

gitlab-runner register

根據提示依據輸入gitlab位址、token、runner命名、類型

不管是本地k8s集群還是aws eks
關聯k8s的要點在於config文件的步驟


上一篇
Day 28: 如何在 GitLab CI/CD 中實現持續部署 (CD)
下一篇
Day 30: 回顧與總結:DevOps 實踐中的挑戰與經驗分享
系列文
DevOps需要的技能樹...(應該)都點得到!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言