Triển khai ứng dụng nâng cao trên Kubernetes với Helm và GitOps

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:

Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận