DevOps課程-AWS-EKS 8
這邊先弄個方便一點的Ubuntu的Jenkins機台:
#簡單整理建置指令:
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 Repo的Jenkinsfile:
Github上複製一下Branch:
後來測試運行發生:
#簡單解決方式是:
sudo chmod 666 /var/run/docker.sock
後來爬文爬到應該是Ubuntu版本問題,就不用22.04
改其他版本20.04版的Ubuntu:
依樣調整docker.sock的權限:
然後弄了一陣子才搞定:
接著就是配合第六篇與第七篇筆記做相關EKS與Jenkins串接
架EKS
Jenkins裝kubectl,aws-iam-authenticator工具
設置kubeconfig檔
設置以下到Jenkins憑證:
- jenkins_aws_access_key_id
- 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的的密碼}