- vừa được xem lúc

Triển khai Jenkins trên Kubernetes với Helm: Hướng dẫn chi tiết

0 0 1

Người đăng: Kubernetes

Theo Viblo Asia

Bài viết này hướng dẫn bạn cách tạo và triển khai biểu đồ Helm tùy chỉnh để triển khai Jenkins trên Kubernetes. Helm là trình quản lý gói cho Kubernetes, giúp tự động hóa việc triển khai ứng dụng bằng cách đóng gói chúng thành biểu đồ. Helm đơn giản hóa việc triển khai ứng dụng bằng cách quản lý tài nguyên Kubernetes như một đơn vị duy nhất.

Việc triển khai bao gồm tạo biểu đồ Helm, xác định các cấu hình cần thiết, triển khai Jenkins và truy cập bảng điều khiển Jenkins thông qua trình duyệt web.

Tại sao nên sử dụng Helm?

Helm hợp lý hóa việc triển khai ứng dụng Kubernetes bằng cách:

  • Đóng gói tài nguyên Kubernetes: Biểu đồ Helm chứa tất cả các bản kê khai cần thiết để triển khai một ứng dụng, cho phép quản lý và cập nhật dễ dàng hơn.
  • Kiểm soát phiên bản: Helm duy trì các phiên bản phát hành, giúp dễ dàng nâng cấp hoặc khôi phục ứng dụng.
  • Tùy chỉnh: Biểu đồ Helm cho phép tham số hóa, vì vậy bạn có thể sử dụng cùng một biểu đồ để triển khai các phiên bản khác nhau của cùng một ứng dụng bằng cách điều chỉnh các giá trị cấu hình.
  • Khả năng lặp lại: Helm giúp dễ dàng triển khai các ứng dụng một cách nhất quán trên nhiều môi trường.

Các bước triển khai Jenkins trên Kubernetes chi tiết

Bước 1: Tạo biểu đồ Helm

Để bắt đầu, chúng ta sẽ tạo một biểu đồ Helm có tên là myhelmchart để triển khai Jenkins.

helm create myhelmchart

Lệnh này tạo ra một cấu trúc thư mục với các tệp và mẫu cơ bản cần thiết cho việc triển khai Kubernetes. Hãy chia nhỏ cấu trúc của biểu đồ được tạo:

  • Chart.yaml: Xác định siêu dữ liệu của biểu đồ Helm, chẳng hạn như tên biểu đồ, phiên bản và appVersion (phiên bản của ứng dụng được triển khai).
  • values.yaml: Giá trị mặc định mà biểu đồ sử dụng, chẳng hạn như tên hình ảnh, cổng và loại dịch vụ. Các giá trị này có thể được ghi đè trong quá trình cài đặt.
  • templates/: Chứa các bản kê khai Kubernetes (tệp YAML) cho triển khai, dịch vụ và các tài nguyên Kubernetes khác.
  • NOTES.txt: Cung cấp hướng dẫn sau khi biểu đồ được cài đặt.

Bước 2: Cập nhật Chart.yaml

Tiếp theo, cập nhật Chart.yaml để chỉ định phiên bản Jenkins mà chúng tôi muốn triển khai:

cd myhelmchart
vim Chart.yaml

Sửa đổi trường appVersion để phản ánh phiên bản Jenkins:

appVersion: "2.249.2"

Bước 3: Dọn dẹp các tệp không cần thiết

Chúng tôi sẽ xóa các tệp và thư mục không cần thiết để đơn giản hóa biểu đồ Helm của chúng tôi:

rm -rf templates/*.yaml templates/tests

Bước 4: Tạo bản kê khai triển khai và dịch vụ

Trong thư mục templates/, hãy tạo hai tệp: một tệp cho việc triển khai Jenkins và một tệp cho dịch vụ.

1. Tạo bản kê khai triển khai Jenkins

cd templates
touch jenkins-deployment.yaml
vim jenkins-deployment.yaml

Thêm đoạn mã sau vào jenkins-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata: name: {{ template "myhelmchart.fullname" . }} labels: app: jenkins
spec: replicas: 1 selector: matchLabels: app: jenkins template: metadata: labels: app: jenkins spec: containers: - name: jenkins image: {{ printf "%s:%s" .Values.image.repository .Values.image.tag | quote }} env: - name: JENKINS_USERNAME value: {{ default "test" .Values.jenkinsUsername | quote }} - name: JENKINS_PASSWORD {{- if .Values.jenkinsPassword }} value: {{.Values.jenkinsPassword }} {{- else }} value: testPassword {{- end }} ports: {{- range .Values.containerPorts }} - name: {{ .name }} containerPort: {{ .port }} {{- end }}

Bản kê khai này xác định Triển khai với các yếu tố chính sau:

  • metadata: Chỉ định tên và nhãn cho triển khai.
  • spec.replicas: Đảm bảo chỉ có một bản sao (phiên bản Jenkins) đang chạy.
  • spec.template: Mô tả mẫu pod với siêu dữ liệu và bộ chứa. Nó đặt các biến môi trường JENKINS_USERNAME và JENKINS_PASSWORD từ tệp values.yaml của biểu đồ, với các giá trị mặc định nếu không được cung cấp.
  • containers: Xác định bộ chứa Jenkins, sử dụng hình ảnh được chỉ định trong values.yaml và hiển thị các cổng từ cùng một tệp.

2. Tạo bản kê khai dịch vụ Jenkins

touch jenkins-service.yaml
vim jenkins-service.yaml

Thêm nội dung sau vào jenkins-service.yaml:

apiVersion: v1
kind: Service
metadata: name: {{ template "myhelmchart.fullname" . }}
spec: type: {{ .Values.service.type }} ports: - name: http port: 8080 targetPort: http nodePort: {{ .Values.service.nodePort }} selector: app: jenkins

Bản kê khai này xác định Dịch vụ để hiển thị pod Jenkins:

  • spec.type: Đặt loại dịch vụ thành NodePort, hiển thị ứng dụng trên một cổng cụ thể của nút (phiên bản EC2).
  • ports: Ánh xạ cổng 8080 của pod Jenkins với NodePort được chỉ định trong values.yaml.
  • selector: Đảm bảo dịch vụ nhắm mục tiêu các pod được gắn nhãn app: jenkins.

Bước 5: Cập nhật NOTES.txt

Tệp NOTES.txt cung cấp thông tin sau khi cài đặt Helm thành công. Hãy cập nhật nó:

echo “This is my first chart” > NOTES.txt

Bước 6: Cập nhật values.yaml

Tệp values.yaml lưu trữ các giá trị mặc định được sử dụng bởi các mẫu. Cập nhật nó với cấu hình sau:

image: repository: bitnami/jenkins tag: latest jenkinsUsername: ""
jenkinsPassword: "" containerPorts: - name: http port: 8080 service: type: NodePort nodePort: 30080

Cấu hình này:

  • image.repository: Sử dụng hình ảnh Bitnami Jenkins chính thức.
  • jenkinsUsername and jenkinsPassword: Có thể chuyển các giá trị mặc định trong quá trình cài đặt.
  • service: Đặt loại dịch vụ thành NodePort, hiển thị Jenkins trên cổng 30080.

Bước 7: Chạy lệnh Helm Template

Trước khi cài đặt biểu đồ, hãy xác minh các mẫu bằng lệnh helm template, lệnh này hiển thị các bản kê khai Kubernetes mà không áp dụng chúng:

helm template myhelmchart . -s templates/jenkins-deployment.yaml

Bước 8: Cài đặt biểu đồ Helm

Bây giờ hãy cài đặt biểu đồ Helm bằng lệnh helm install:

helm install myhelmchart ./myhelmchart

Điều này sẽ triển khai Jenkins cho cụm Kubernetes của bạn.

Bước 9: Lấy IP công cộng của nút và truy cập Jenkins

Để truy cập Jenkins thông qua trình duyệt web, chúng ta cần có IP công cộng của nút (phiên bản EC2) lưu trữ pod Jenkins.

1. Lấy IP công cộng của nút:

kubectl get nodes -o wide

Hãy tìm địa chỉ IP bên ngoài / công cộng của nút mà pod Jenkins đang chạy.

2. Truy cập Jenkins trong trình duyệt:

Mở trình duyệt web của bạn và điều hướng đến:

http://<Public_IP>:30080

Bước 10: Truy cập bảng điều khiển Jenkins

Khi bạn truy cập Jenkins trong trình duyệt, nó sẽ nhắc bạn nhập tên người dùng và mật khẩu. Sử dụng thông tin đăng nhập được đặt trong biểu đồ Helm của bạn:

  • Tên người dùng: Giá trị của jenkinsUsername (hoặc kiểm tra nếu không được đặt).
  • Mật khẩu: Giá trị của jenkinsPassword (hoặc testPassword nếu không được đặt).

Kết luận

Trong bài viết này, chúng ta đã tạo biểu đồ Helm để triển khai Jenkins trên Kubernetes, tùy chỉnh biểu đồ với bản kê khai triển khai và dịch vụ và truy cập Jenkins thông qua trình duyệt. Helm giúp quản lý các ứng dụng Kubernetes hiệu quả hơn bằng cách cung cấp các mẫu dễ sử dụng và quy trình cài đặt đơn giản.

Cảm ơn các bạn đã theo dõi.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Deploying A Containerized Web Application On Kubernetes

1. Overview. Kubernetes is an open source project (available on kubernetes.io) which can run on many different environments, from laptops to high-availability multi-node clusters; from public clouds to on-premise deployments; from virtual machines to bare metal.

0 0 55

- vừa được xem lúc

Kubernetes - Học cách sử dụng Kubernetes Namespace cơ bản

Namespace trong Kubernetes là gì. Tại sao nên sử dụng namespace.

0 0 113

- vừa được xem lúc

[Kubernetes] Kubectl và các command cơ bản

Mở đầu. Kubectl là công cụ quản trị Kubernetes thông qua giao diện dòng lệnh, cho phép bạn thực thi các câu lệnh trong Kubernetes cluster.

0 0 59

- vừa được xem lúc

Triển khai EFK Stack trên Kubernetes

EFK stack on K8S. Giới thiệu. Một hệ thống có thể chạy nhiều dịch vụ hoặc ứng dụng khác nhau, vì vậy việc. theo dõi hệ thống là vô cùng cần thiết.

0 0 72

- vừa được xem lúc

Thực hành Kubernetes (K8S) bằng cách sử dụng lệnh Command

Bài hướng dẫn hôm nay sẽ hướng dẫn sử dụng K8S bằng cách sử dụng câu lệnh thay vì UI trên web. Có 2 lựa chọn để thực hiện:. . Sử dụng Cloud Shell.

0 0 56

- vừa được xem lúc

Kubernetes best practices - Liveness và Readiness Health checks

Mở đầu. Kubernetes cung cấp cho bạn một framework để chạy các hệ phân tán một cách mạnh mẽ.

0 0 49