Phần 6 — Kubernetes executor: scale runner trên K8s
Ý kiến
0
Chưa có ý kiến nào. Hãy là người đầu tiên chia sẻ!
Chưa có ý kiến nào. Hãy là người đầu tiên chia sẻ!
Pipeline production Next.js → Docker → K8s với cache image, manual approval. Tổng kết best practices và kỹ thuật debug (CI Lint, visualizer, CI_DEBUG_TRACE).
Khai báo environment để GitLab theo dõi deployments, có lịch sử và nút rollback. Review Apps — tính năng signature: mỗi MR tự deploy lên môi trường tạm.
Tái sử dụng pipeline giữa nhiều dự án với include (local, project, template, remote), kế thừa job với extends (hidden job), và YAML anchors.
Series GitLab CI/CD Toàn Tập — 9 phần:
Phần 1 — Tổng quan: GitLab CI/CD, kiến trúc và các khái niệm
Phần 2 — .gitlab-ci.yml đầu tiên và Variables (predefined, UI, masked)
Phần 5 — GitLab Runner self-hosted: cài đặt và executors (Shell/Docker)
Phần 6 — Kubernetes executor: scale runner trên K8s ← bạn đang đọc
Phần 9 — Pipeline thực tế Next.js → Docker → K8s + best practices + debug
Khi pipeline nhiều và bursty (CI nặng buổi tối, sáng nhẹ), Docker executor trên một máy không đủ. Kubernetes executor giải quyết bằng cách spin một pod cho mỗi job — chạy xong huỷ luôn, scale tự động theo node có sẵn trong cluster. Khi có 100 MR cùng mở, K8s cluster tự sinh 100 pod chạy song song. Đây là kiến trúc CI/CD hiệu quả nhất hiện nay cho team trung-lớn.
Khi pipeline nhiều và bursty (CI nặng buổi tối, sáng nhẹ), Kubernetes executor cực kỳ hiệu quả: mỗi job sinh ra một pod, chạy xong huỷ luôn.
Cách dễ nhất là dùng GitLab Runner Helm chart:
# values.yaml
gitlabUrl: https://gitlab.com
runnerToken: glrt-xxx
runners:
config: |
[[runners]]
[runners.kubernetes]
namespace = "gitlab-runner"
image = "alpine:3.20"
cpu_request = "500m"
memory_request = "512Mi"
cpu_limit = "2"
memory_limit = "4Gi"
helper_cpu_request = "100m"
helper_memory_request = "128Mi"
privileged = false
service_account = "gitlab-runner"
[runners.kubernetes.pod_labels]
"app.kubernetes.io/managed-by" = "gitlab-runner"
helm repo add gitlab https://charts.gitlab.io
helm install gitlab-runner gitlab/gitlab-runner \
-n gitlab-runner --create-namespace \
-f values.yaml
Job chạy xong, pod biến mất, không tốn resource. Khi có 100 MR cùng mở, Kubernetes tự spin 100 pod chạy song song (giới hạn theo node có sẵn). Đây là kiến trúc CI/CD hiệu quả nhất hiện nay.
Trong phần này bạn đã nắm:
Mỗi job = một pod ephemeral; chạy xong pod biến mất, không tốn resource.
Triển khai dễ qua GitLab Runner Helm chart với values.yaml chứa runner config inline.
Khai báo cpu_request/memory_request và cpu_limit/memory_limit trong config — quan trọng cho scheduler.
Khi có burst (vd 100 MR cùng mở), K8s tự spin 100 pod song song — giới hạn theo node available.
Trong Phần 7, ta làm pipeline modular với include (nhập file), extends (kế thừa job), và YAML anchors — chìa khoá để pipeline org-wide không bị copy-paste.