1. Giới thiệu
Kubernetes là nền tảng phổ biến để triển khai và quản lý ứng dụng container. Khi ứng dụng phát triển lớn, việc triển khai thủ công bằng YAML trở nên phức tạp. Để tối ưu quy trình, chúng ta có thể sử dụng Helm và GitOps để tự động hóa và quản lý deployment một cách hiệu quả.
Bài viết này sẽ hướng dẫn bạn cách:
- Tạo và triển khai Helm Chart.
- Sử dụng ArgoCD để quản lý GitOps.
- Kết hợp CI/CD để triển khai tự động.
2. Cài đặt Helm và Tạo Helm Chart
2.1. Cài đặt Helm
Trên hệ thống Linux hoặc MacOS, bạn có thể cài đặt Helm bằng lệnh:
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
Kiểm tra phiên bản Helm:
helm version
Tham khảo tài liệu chính thức: Helm Docs
2.2. Tạo Helm Chart
Khởi tạo một Helm Chart mới:
helm create myapp
Thư mục myapp
sẽ chứa các file cấu hình cần thiết:
myapp/
├── charts/
├── templates/
│ ├── deployment.yaml
│ ├── service.yaml
│ ├── ingress.yaml
│ ├── _helpers.tpl
├── values.yaml
Chỉnh sửa values.yaml
để định nghĩa thông số:
replicaCount: 3
image:
repository: myrepo/myapp
tag: latest
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 80
Triển khai Helm Chart lên Kubernetes:
helm install myapp ./myapp --namespace mynamespace
Tài liệu chính thức: Kubernetes Documentation
3. Quản lý triển khai với GitOps bằng ArgoCD
3.1. Cài đặt ArgoCD
ArgoCD giúp tự động triển khai ứng dụng từ Git repository. Cài đặt ArgoCD trên Kubernetes:
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
Kiểm tra trạng thái các pod:
kubectl get pods -n argocd
Tài liệu chính thức: ArgoCD Docs
3.2. Cấu hình ArgoCD để quản lý Helm Chart
Thêm Helm Chart vào ArgoCD bằng cách tạo một ứng dụng:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: myapp
namespace: argocd
spec:
project: default
source:
repoURL: "https://github.com/myrepo/k8s-manifests"
targetRevision: main
path: myapp
helm:
valueFiles:
- values.yaml
destination:
server: https://kubernetes.default.svc
namespace: mynamespace
syncPolicy:
automated:
prune: true
selfHeal: true
Apply cấu hình:
kubectl apply -f myapp-argo.yaml -n argocd
Truy cập giao diện ArgoCD:
kubectl port-forward svc/argocd-server -n argocd 8080:443
Sau đó mở trình duyệt tại https://localhost:8080
.
4. Kết hợp CI/CD để triển khai tự động
4.1. Sử dụng GitHub Actions để cập nhật Helm Chart
Thêm workflow sau vào .github/workflows/deploy.yaml
:
name: Deploy to Kubernetes
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Helm
run: curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
- name: Deploy Helm Chart
run: |
helm upgrade --install myapp ./myapp --namespace mynamespace
Mỗi lần đẩy mã lên GitHub, workflow này sẽ tự động triển khai ứng dụng lên Kubernetes.
5. Kết luận
Kết hợp Helm và GitOps giúp tối ưu hóa quy trình triển khai ứng dụng trên Kubernetes:
- Helm giúp quản lý ứng dụng theo mô-đun.
- ArgoCD tự động đồng bộ hóa với Git repository.
- CI/CD đảm bảo triển khai liền mạch.
Tham khảo tài liệu chính thức: