Giới Thiệu
Trong các bài viết trước, chúng ta đã khám phá về Github Actions, một công cụ tuyệt vời trong việc tự động hóa các quy trình phát triển phần mềm. Trong bài viết này, chúng ta sẽ tập trung vào việc triển khai các self-hosted runners trên máy tính cá nhân, giúp tối ưu hóa chi phí và tăng cường kiểm soát cho các quy trình CI/CD của bạn.
Lợi Ích của Self-hosted Runners
Self-hosted runners cho phép bạn quản lý và chạy các runner cho Github Actions ngay trên hệ thống của mình. Điều này giúp giảm thiểu chi phí khi bạn cần sử dụng các runner lớn mà không được miễn phí. Bằng cách này, bạn có thể tận dụng tối đa nguồn lực của mình mà không phải trả thêm phí cho Github.
Các Công Cụ Cần Thiết
Để triển khai thành công một cụm Github Actions self-hosted runner, bạn cần bốn công cụ chính:
- Docker: Nền tảng ảo hóa giúp đóng gói và chạy các ứng dụng trong môi trường cô lập, giúp bạn dễ dàng quản lý và triển khai các runner.
- Kind (Kubernetes in Docker): Cho phép chạy Kubernetes cục bộ bằng cách sử dụng các container Docker.
- Helm: Công cụ quản lý gói cho Kubernetes, giúp dễ dàng triển khai và quản lý các ứng dụng Kubernetes.
- Actions Runner Controller (ARC): Công cụ quản lý tự động các runner cho Github Actions trên Kubernetes, giúp tự động mở rộng và tối ưu tài nguyên.
Chuẩn Bị Môi Trường K8s
Trước tiên, bạn cần chuẩn bị một cụm Kubernetes bằng Kind với cấu hình sau:
yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
Chạy lệnh sau để tạo cụm:
bash
kind create cluster --config ~/workspace/k8s-demo/kind-config.yaml
Kiểm tra cấu hình với lệnh:
bash
kubectl get node
Triển Khai Actions Runner Controller
Sau khi có cụm Kubernetes, bạn tiến hành triển khai Actions Runner Controller (ARC) để quản lý các runner tự host. Sử dụng Helm để cài đặt với lệnh sau:
bash
helm upgrade --install -n arc-systems --create-namespace arc oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set-controller -f gha-arc.values.yaml
Kiểm tra xem ARC đã được triển khai thành công hay chưa bằng lệnh:
bash
kubectl get pod -n arc-systems
Triển Khai Self-hosted Runner qua Actions Runner Scale Set
Actions Runner Scale Set giúp quản lý và tự động mở rộng jumlah runner. Tạo file cấu hình Helm cho Scale Set và chạy lệnh sau để triển khai:
bash
helm upgrade --install -n arc-runners --create-namespace arc-runners oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set --version=0.9.3 -f arc-scaleset.values.yaml
Sau khi triển khai, bạn có thể kiểm tra trạng thái của các pod:
bash
kubectl get pod -n arc-systems
kubectl get pod -n arc-runners
Kiểm Tra Thành Quả Trên Github
Cuối cùng, truy cập vào cấu hình trên Github tại đường link https://github.com/<org-name>/gha-test/settings/actions/runners
để kiểm tra các self-hosted runners của bạn. Tiến hành thử nghiệm một workflow cơ bản để xác thực rằng self-hosted runner hoạt động chính xác.
yaml
name: CI
on:
push:
paths: .github/workflows/blank.yml
pull_request:
workflow_dispatch:
jobs:
self_hosted:
runs-on: arc-runners
steps:
- uses: actions/checkout@v3
- name: Hello from Self-hosted Runner
run: echo "Hello from Self-hosted Runner"
Kết Luận
Bạn đã hoàn thành việc triển khai self-hosted runner cho Github Actions trên máy tính cá nhân. Việc sử dụng self-hosted runners mang lại sự linh hoạt và giảm chi phí tối đa cho quy trình CI/CD của bạn. Hãy tiếp tục theo dõi, tối ưu cấu hình của bạn để đạt hiệu quả tốt nhất trong các dự án phần mềm của mình.
source: viblo