Cài đặt Jenkins master - slave dùng Kubernetes

Vừa rồi mình mất khá mất thời gian để khôi phục lại các bài viết cũ bên wordpress để chuyển qua đây. Mất thời gia chỉnh sửa khá nhiều nhất là các công thức viết bằng Latex, các bài viết có thể cũ quá nhưng hy vọng vẫn có ích với nhiều người khác 😄, bắt đầu câu chuyện của hôm nay:

Hiện tại mình đang làm giải Digital Transformation (Chuyển đổi số, số hóa) cho một đơn vị, một trong các nhiệm vụ đặt ra là xây dựng quy trình phát triển phần mềm cho công ty. Vào thời điểm hiện tại mô hình Scrum - Agile (Quy trình phát triển phần mềm Scrum theo phương pháp Agile) có thể nói đang là xu hướng được rất nhiều công ty phần mềm áp dụng. Không nằm ngoài xu thế đó, team mình cũng bắt đầu áp dụng triển khai, một trong những quy trình đầu tiên đó là Automation Deploy/Testing source code.

Sau khi tham khảo nhiều mô hình, mình quyết định áp dụng Jenkins CI/CD và triển khai trên máy chủ của công ty lúc này chỉ đơn giản 1 con desktop cấu hình mạnh. Dưới đây là các bước chi tiết.

Cài đặt Microk8s

sudo snap install microk8s --classic
sudo usermod -a -G microk8s $USER
sudo chown -f -R $USER ~/.kube

Build docker image

Jenkins master

Tạo file Dockerfile:

FROM jenkins/jenkins:alpine

# Distributed Builds plugins
RUN /usr/local/bin/install-plugins.sh ssh-slaves

#Install GIT
RUN /usr/local/bin/install-plugins.sh git

#Install Pipeline
RUN /usr/local/bin/install-plugins.sh workflow-aggregator

# Artifacts
RUN /usr/local/bin/install-plugins.sh htmlpublisher

# UI
RUN /usr/local/bin/install-plugins.sh greenballs
RUN /usr/local/bin/install-plugins.sh simple-theme-plugin

# Scaling
RUN /usr/local/bin/install-plugins.sh kubernetes

VOLUME /var/jenkins_home

USER jenkins

Chạy lệnh sau để build và load docker image (local) vào microk8s:

docker build -t nvtienanh/jenkins-master:lastest -f .
docker save nvtienanh/jenkins-master:lastest > jenkins-master-local.tar
microk8s ctr image import jenkins-master-local.tar

Jenkins slaves

Deploy

Config

Linux agent

MacOs agent

Kết luận


Đăng bởi@nvtienanh
Không gì là không thể.

GitHubTwitterFacebookLinkedIn