DevOps課程-AWS-EKS 8

完整的EKS與dockerhub的CICD Pipeline設置

ZONGRU Li
5 min readOct 12, 2022

這邊先弄個方便一點的UbuntuJenkins機台:

#簡單整理建置指令:
sudo apt update
sudo apt install docker.io -y
#擴增使用者ubuntu使用docker權限:
sudo usermod -G docker -a ubuntu
#要重登後,確認當下使用者的權限群組(看有沒有docker):
groups
#或直接下指令:
docker ps
#我試試弄一個空目錄:
cd /var
sudo mkdir jk
sudo chmod -R 777 /var/jk
#建一個Jenkins容器:
sudo docker run -p 8080:8080 -p 50000:50000 -d \
-v /var/jk:/var/jenkins_home docker.io/jenkins/jenkins:lts
#後來改用下面指令:
sudo docker run -p 8080:8080 -p 50000:50000 -d \
-v /var/jk:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(which docker):/usr/bin/docker \
docker.io/jenkins/jenkins:lts

後來容器起不來:

補上:

後面就是快速能夠使用到以下Github RepoJenkinsfile:

Github上複製一下Branch:

這個REPO

後來測試運行發生:

#簡單解決方式是:
sudo chmod 666 /var/run/docker.sock

後來爬文爬到應該是Ubuntu版本問題,就不用22.04

改其他版本20.04版的Ubuntu:

依樣調整docker.sock的權限:

然後弄了一陣子才搞定:

接著就是配合第六篇與第七篇筆記做相關EKS與Jenkins串接

EKS

Jenkinskubectl,aws-iam-authenticator工具

設置kubeconfig

設置以下到Jenkins憑證:

  1. jenkins_aws_access_key_id
  2. jenkins_aws_secret_access_key

機台本身也設置一下:

確認Jenkins基本串接都OK後

寫deployment與service的yaml檔:

如上我們這邊簡單用tag的部分當作image的名稱來使用

並且用變數方式注入

這邊有幾項前置工作

1.安裝引用一個工具叫"envsubst":

需要在Jenkins容器內安裝使用

Ubuntu中,這個工具是包裹在"gettext-base"這個功能內

#安裝gettext-base來使用內含的envsubst,root身分進到Jenkins容器內:
apt-get update
apt-get install gettext-base -y

直接呼叫會卡著,ctrl+c離開:

然後編輯完整的Jenkinsfile-EKS:

2.建立pull Secret物件叫my-registry-key:

#簡單建立pull Secret的指令是:
kubectl create secret docker-registry my-registry-key \
--docker-server=docker.io \
--docker-username={我dockehub的帳號} \
--docker-password={我dockehub的的密碼}

3.最後調整Jenkinsfile-EKS:

確認Jenkins Job執行:

都是pipeline做出來的物件!

太細節的描述沒有寫很清楚,但是該寫的應該都有寫到!

參考課程reference

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet