Triển khai Jenkins bằng Docker

Bài viết này hướng dẫn cách triển khai và cấu hình Jenkins sử dụng Docker, bao gồm các phương pháp khác nhau như chạy trực tiếp, sử dụng docker-compose và Kubernetes.

1. Triển khai Docker

Tài liệu tham khảo:

2. Triển khai Jenkins Container

2.1 Tạo thư mục

mkdir -p /opt/jenkins_data/config
mkdir -p /opt/jenkins_data/home

2.2 Tạo mạng

Mạng cho local:

docker network create \
  --driver=bridge \
  --subnet=172.13.0.0/16 \
  --ip-range=172.13.0.0/16 \
  --gateway=172.13.0.1 \
  --attachable \
  net_local

Mạng cho Swarm:

docker network create \
  --driver=overlay \
  --subnet=172.14.0.0/16 \
  --ip-range=172.14.0.0/16 \
  --gateway=172.14.0.1 \
  --attachable \
  net_swarm

2.3 Tạo container

Sử dụng image chính thức từ Docker Hub: **jenkins/jenkins**.

2.3.1 Cách dùng lệnh run

docker run -d \
  --name jenkins_instance \
  -v /opt/jenkins_data/home:/var/jenkins_home \
  -p 8080:8080 \
  --network net_local \
  --cpus 2 \
  --memory 2G \
  --restart on-failure \
  jenkins/jenkins:latest

Xóa container nếu cần:

docker stop jenkins_instance
docker rm jenkins_instance

2.3.2 Sử dụng docker-compose

Tạo file docker-compose.yml:

vi /opt/jenkins_data/docker-compose.yml

Nội dung file:

version: '2'
services:
  jenkins_service:
    image: jenkins/jenkins:latest
    volumes:
      - /opt/jenkins_data/home:/var/jenkins_home
    ports:
      - 8080:8080
    networks:
      - net_local

networks:
  net_local:
    external: true

Khởi tạo container:

cd /opt/jenkins_data
docker-compose up -d

Xóa tất cả container trong file compose:

docker-compose down

2.3.3 Sử dụng stack

Tạo file jenkins_stack.yml:

vi /opt/jenkins_data/jenkins_stack.yml

Nội dung file:

version: '3.7'
services:
  jenkins_svc:
    image: jenkins/jenkins:latest
    volumes:
      - /opt/jenkins_data/home:/var/jenkins_home
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
      resources:
        limits:
          cpus: "2"
          memory: 2048M
    ports:
      - 8080:8080
    networks:
      - net_swarm

networks:
  net_swarm:
    external: true

Khởi tạo stack:

docker stack deploy -c jenkins_stack.yml jenkins_stack

2.3.4 Sử dụng Kubernetes

Tạo thư mục lưu trữ script:

mkdir -p /opt/k8s/jenkins

Tạo file deploy_jenkins.yaml:

vi /opt/k8s/jenkins/deploy_jenkins.yaml

Nội dung file:

apiVersion: v1
kind: Service
metadata:
  name: jenkins-svc
  labels:
    app: jenkins-service
spec:
  type: NodePort
  ports:
  - port: 8080
    targetPort: 8080
    protocol: TCP
    nodePort: 8080 # Phải sửa đổi kube-apiserver để mở rộng dải cổng
  selector:
    app: jenkins-deploy

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins-deploy
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins-deploy
  template:
    metadata:
      labels:
        app: jenkins-deploy
    spec:
      securityContext:
        fsGroup: 1000
      volumes:
      - name: jenkins-vol
        hostPath:
          path: /opt/jenkins_data/home
      containers:
      - name: jenkins_container
        image: jenkins/jenkins:latest
        env:
          - name: TZ
            value: "Asia/Ho_Chi_Minh"
        volumeMounts:
        - name: jenkins-vol
          mountPath: /var/jenkins_home
        ports:
          - containerPort: 8080

Triển khai:

kubectl apply -f deploy_jenkins.yaml

3. Khởi tạo Jenkins

3.1 Xác minh

Lấy mật khẩu ban đầu tại đường dẫn trên máy chủ: /opt/jenkins_data/home/secrets/initialAdminPassword.

3.2 Cài đặt plugin

Chọn "Cài đặt các plugin được khuyến nghị" hoặc tùy chỉnh theo nhu cầu.

3.3 Tạo tài khoản admin

Điền thông tin đăng nhập và mật khẩu mới (ví dụ: admin/admin).

3.4 Sửa URL cấu hình

Jenkins URL mặc định là "http://localhost:8080", nhấn "Lưu và hoàn thành".

3.5 Truy cập Jenkins

Mở trình duyệt truy cập http://localhost:8080.

Thẻ: docker Jenkins Kubernetes docker-compose

Đăng vào ngày 19 tháng 8 lúc 14:39