Series ngắn về cách sử dụng ArgoCD:
- Getting Started
- Core concepts
- Private Repo
- ArgoCD Architecture
- Work with Helm
- Work with Kustomize
- Resource hooks
- Secret Management with GitOps
- Application Set
- Multi Cluster
- Enterprise features (SSO)
Để dễ dàng trong việc quản lý và triển khai, thường thì chúng ta không viết tệp tin tài nguyên Kubernetes trực tiếp mà đóng gói thành gói (package) và sử dụng Helm để quản lý. Ví dụ ta cần triển khai Redis ở chế độ master-slave bằng cách viết tệp tin YAML thuần cho từng tài nguyên:
Thay vì phải sao chép toàn bộ tài nguyên trong tệp tin ra một tệp tin khác và sửa đổi các thông số mỗi lần triển khai, chúng ta có thể áp dụng các phương pháp quản lý cấu hình hiệu quả hơn, đó là dùng Helm.
Helm
Chúng ta có thể đóng gói toàn bộ tài nguyên vào một gói (package) và sử dụng Helm để quản lý. Đối với các công nghệ phổ biến như Redis, Postgres, ClickHouse, ... cộng đồng hỗ trợ rất nhiều, và chúng ta có thể sử dụng chúng thay vì tự viết, trừ những trường hợp đặc biệt. Dưới đây là ví dụ về cách triển khai Redis bằng Helm:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm install my-redis bitnami/redis \
--set password=secretpassword \
--set replication.enabled=true \
--set replication.slaveCount=1Mỗi khi cần triển khai một cụm mới, chúng ta chỉ cần chạy câu lệnh trên là đủ. Tuy nhiên, việc triển khai Redis bằng cách thủ công thông qua Helm CLI có thể gây khó khăn trong việc quản lý các thay đổi. ArgoCD hỗ trợ triển khai Helm thông qua việc sử dụng Application.
ArgoCD with Helm
Để triển khai Redis bằng Helm và ArgoCD, ta khai báo tệp tin redis-helm.yaml như sau:
Chỗ cần thay đổi so với Application cho tệp tin tài nguyên thuần là mục source:
- repoURL: đường dẫn của kho Helm Chart
- chart: chọn chart để triển khai
- targetRevision: phiên bản
- helm:
- parameters: chỉ định các thông số ta cần truyền vào
Chạy câu lệnh apply:
kubectl apply -f redis-helm.yamlTruy cập UI ta sẽ thấy Application cho Redis đang được tạo:
Đợi Redis tạo thành công:
GitOps
Ở trên là cách chúng ta sử dụng Application để triển khai Redis với Helm. Tuy nhiên, để quản lý toàn bộ thay đổi thông qua Git và tuân thủ đúng chuẩn GitOps, chúng ta cần thực hiện các bước tương tự như khi triển khai ứng dụng Book Info. Cụ thể, chúng ta sẽ tạo một Git Repository với hai tệp tin như bên dưới và sau đó tạo một Argo Application cho Repository đó.
├── Chart.yaml
└── values.yamlNội dung Chart.yaml:
apiVersion: v2
name: redis
description: A Helm chart for redis
type: application
version: 17.11.3
dependencies:
- name: redis
version: 17.11.3
repository: https://charts.bitnami.com/bitnamiNội dung values.yaml:
redis:
password: your-redis-password
replication:
enabled: true
slaveCount: 2Tham khảo https://github.com/hoalongnatsu/argocd-series/tree/main/05-gitops/gitops. Tạo tệp tin app.yaml để khai báo Argo Application:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: redis
namespace: argocd
spec:
project: default
source:
repoURL: 'https://github.com/hoalongnatsu/argocd-series'
targetRevision: HEAD
path: '05-gitops/gitops'
destination:
server: 'https://kubernetes.default.svc'
namespace: default
syncPolicy:
automated:
prune: true
selfHeal: trueChạy lệnh apply:
kubectl apply -f app.yamlChờ cho Redis tạo thành công:
Bất kỳ thay đổi nào đối với Redis đều cần phải sửa tệp tin values.yaml và thực hiện merge vào Git. Việc sử dụng Helm giúp chúng ta dễ dàng triển khai ứng dụng, kết hợp với ArgoCD hỗ trợ quản lý các thay đổi của Helm Chart thông qua Git ⇒ việc quản lý và triển khai ứng dụng sẽ trở nên chuyên nghiệp hơn.
Bài tiếp theo ta sẽ tìm hiểu cách sử dụng ArgoCD với Kustomize.
First AI Journey for DevOps:
- PromptOps: From YAML to AI
- The DevOps AI Advantage
- The AIOps Book
Vikki Digital Bank
Loạt bài viết ngắn chia sẻ về kiến trúc hạ tầng của hệ thống ngân hàng trên Cloud (AWS). Đây chỉ là những kiến thức mình học được thông qua sản phẩm NGÂN HÀNG SỐ VIKKI của bên mình, nên kiến trúc có thể phù hợp và không phù hợp với doanh nghiệp của các bạn.
- AWS Account Management
- Provisioning Infrastructure for Multi AWS Accounts
- Networking for Multi AWS Accounts
- Kubernetes for Multi AWS Accounts: Kubernetes Infrastructure for Scale
- Kubernetes for Multi AWS Accounts: Kubernetes Cross Cluster Communication
- Chaos Engineering
- On-call
- Core Banking on Cloud
- Security Consider
- Log Analytics with Generative AI (PoC)