🚀 Chapter 5 — Platform: Phần E — Triển khai Google Online Boutique trên Amazon EKS bằng Argo CD và GitOps
Ở Chapter 5D, chúng ta đã sử dụng Helm để triển khai Google Online Boutique lên Amazon EKS bằng các lệnh:
helm install
helm upgrade
helm rollback
Cách này đã tốt hơn việc sử dụng nhiều Kubernetes manifest riêng lẻ. Tuy nhiên, quá trình deploy vẫn phụ thuộc vào máy cá nhân của developer.
Trong Chapter 5E, chúng ta sẽ tiếp tục sử dụng:
- Google Online Boutique
- Amazon EKS từ Chapter 5B
- Helm chart từ Chapter 5D
- Amazon ECR từ Chapter 4 nếu đã sử dụng
- GitHub
- Argo CD
Mục tiêu là chuyển từ:
Developer
↓
helm upgrade
↓
Amazon EKS
sang:
Developer
↓
GitHub
↓
Argo CD
↓
Helm
↓
Amazon EKS
Git trở thành nơi lưu trữ trạng thái mong muốn của hệ thống. Argo CD sẽ tự động đồng bộ trạng thái đó vào Amazon EKS.
1. Mục tiêu
Sau khi hoàn thành Chapter 5E, chúng ta sẽ có:
- Argo CD được cài đặt trên Amazon EKS.
- Argo CD kết nối được với GitHub.
- Online Boutique được quản lý bằng Helm thông qua Argo CD.
- Thay đổi cấu hình bằng Git thay vì chạy
helm upgradethủ công. - Tự động đồng bộ deployment từ GitHub vào EKS.
- Kiểm tra trạng thái
Synced,OutOfSyncvàHealthy. - Thử nghiệm cơ chế tự sửa drift bằng
selfHeal. - Thử rollback bằng Git revert.
Kiến trúc cuối Chapter:
Developer
│
▼
GitHub Repository
│
▼
Helm Chart / GitOps Configuration
│
▼
Argo CD
│
▼
Amazon EKS
│
▼
Google Online Boutique
2. Điều kiện trước khi bắt đầu
Chapter này nối tiếp Chapter 5D.
Bạn cần có:
- Amazon EKS cluster đang ở trạng thái
ACTIVE. kubectlđã kết nối được với EKS.- Helm đã được cài đặt.
- Google Online Boutique đã được triển khai thành công ở Chapter 5D.
- Có tài khoản GitHub.
- Có Git được cài đặt trên máy local.
Kiểm tra các công cụ:
aws --version
kubectl version --client
helm version
git --version
Kiểm tra EKS:
aws eks describe-cluster \
--name online-boutique-eks \
--region ap-northeast-1 \
--query 'cluster.status' \
--output text
Kết quả mong đợi:
ACTIVE
Kiểm tra node:
kubectl get nodes
Kết quả mong đợi:
NAME STATUS ROLES AGE VERSION
ip-xxx-xxx-xxx-xxx.ap-northeast-1.compute.internal Ready <none> ... ...
Kiểm tra namespace:
kubectl get namespace online-boutique
Kiểm tra các Pod:
kubectl get pods -n online-boutique
Kiểm tra Helm release:
helm list -n online-boutique
Kết quả cần có release tương tự:
NAME NAMESPACE STATUS
online-boutique online-boutique deployed
3. Kiểm tra trạng thái ứng dụng hiện tại
Kiểm tra Deployment:
kubectl get deployments -n online-boutique
Kiểm tra Service:
kubectl get services -n online-boutique
Kiểm tra frontend:
kubectl get service frontend -n online-boutique
Lấy địa chỉ frontend:
export FRONTEND_URL=$(
kubectl get service frontend \
-n online-boutique \
-o jsonpath='{.status.loadBalancer.ingress[0].hostname}'
)
Kiểm tra:
echo "$FRONTEND_URL"
Test:
curl -I "http://$FRONTEND_URL"
Kết quả mong đợi:
HTTP/1.1 200 OK
Mở trình duyệt:
http://<FRONTEND_URL>
Nếu ứng dụng vẫn hoạt động, chúng ta có thể bắt đầu cài đặt Argo CD.
4. Argo CD là gì?
Argo CD là một công cụ GitOps dành cho Kubernetes.
Argo CD theo dõi trạng thái mong muốn trong Git và so sánh với trạng thái thực tế trong Kubernetes.
Git
└── Desired State
│
▼
Argo CD
│
▼
Kubernetes Cluster
Ví dụ:
Trong Git, frontend có:
replicas: 2
Nhưng trong EKS, frontend chỉ có:
replicas: 1
Argo CD sẽ phát hiện sự khác biệt:
Git desired state: 2 replicas
Cluster state: 1 replica
Trạng thái ứng dụng có thể trở thành:
OutOfSync
Nếu bật automated sync và self-healing, Argo CD có thể tự động đưa cluster về trạng thái được khai báo trong Git.
5. Tạo namespace cho Argo CD
Tạo namespace:
kubectl create namespace argocd
Nếu namespace đã tồn tại, có thể bỏ qua lỗi:
kubectl get namespace argocd
Kết quả:
NAME STATUS AGE
argocd Active ...
6. Cài đặt Argo CD trên Amazon EKS
Cài Argo CD bằng manifest chính thức:
kubectl apply \
-n argocd \
-f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
Kiểm tra các Pod:
kubectl get pods -n argocd
Theo dõi quá trình khởi động:
kubectl get pods -n argocd -w
Dừng theo dõi bằng:
Ctrl + C
Các Pod chính cần chuyển sang trạng thái Running:
argocd-application-controller
argocd-repo-server
argocd-server
argocd-redis
argocd-dex-server
Kiểm tra chi tiết:
kubectl get pods -n argocd -o wide
Nếu Pod gặp lỗi:
kubectl describe pod <POD_NAME> -n argocd
Xem logs:
kubectl logs <POD_NAME> -n argocd
7. Kiểm tra các Service của Argo CD
Chạy:
kubectl get services -n argocd
Bạn sẽ thấy Service tương tự:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
argocd-applicationset-controller ClusterIP ...
argocd-dex-server ClusterIP ...
argocd-metrics ClusterIP ...
argocd-notifications-controller-metrics ClusterIP ...
argocd-redis ClusterIP ...
argocd-repo-server ClusterIP ...
argocd-server ClusterIP ...
argocd-server-metrics ClusterIP ...
Mặc định, argocd-server thường sử dụng ClusterIP.
Để truy cập Argo CD từ máy local, chúng ta sẽ sử dụng port forwarding.
8. Truy cập giao diện Argo CD bằng port-forward
Mở một terminal mới và chạy:
kubectl port-forward \
svc/argocd-server \
-n argocd \
8080:443
Kết quả tương tự:
Forwarding from 127.0.0.1:8080 -> 8080
Forwarding from [::1]:8080 -> 8080
Giữ terminal này luôn mở.
Mở trình duyệt:
https://localhost:8080
Trình duyệt có thể hiển thị cảnh báo chứng chỉ do Argo CD sử dụng certificate mặc định. Chọn tiếp tục truy cập trong môi trường lab.
9. Lấy mật khẩu admin ban đầu
Argo CD tạo mật khẩu ban đầu trong Secret:
kubectl -n argocd get secret argocd-initial-admin-secret
Lấy mật khẩu:
kubectl -n argocd get secret \
argocd-initial-admin-secret \
-o jsonpath="{.data.password}" \
| base64 -d
Lưu lại mật khẩu được trả về.
Thông tin đăng nhập:
Username: admin
Password: <PASSWORD_FROM_COMMAND>
Đăng nhập vào:
https://localhost:8080
Sau khi đăng nhập thành công, bạn sẽ thấy giao diện Argo CD.
10. Cài đặt Argo CD CLI
10.1. Trên macOS
Nếu sử dụng Homebrew:
brew install argocd
Kiểm tra:
argocd version --client
10.2. Trên Ubuntu
Tải Argo CD CLI:
curl -sSL \
-o argocd-linux-amd64 \
https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
Cấp quyền thực thi:
chmod +x argocd-linux-amd64
Di chuyển binary:
sudo mv argocd-linux-amd64 /usr/local/bin/argocd
Kiểm tra:
argocd version --client
11. Đăng nhập Argo CD bằng CLI
Vì Argo CD đang được truy cập thông qua port-forward, mở một terminal khác và chạy:
argocd login localhost:8080 \
--username admin \
--password '<ARGOCD_ADMIN_PASSWORD>' \
--insecure
Thay:
<ARGOCD_ADMIN_PASSWORD>
bằng mật khẩu lấy ở bước trước.
Kiểm tra phiên đăng nhập:
argocd account get-user-info
Kết quả cần hiển thị user:
Logged In: true
Username: admin
12. Kiểm tra cluster mà Argo CD đang quản lý
Chạy:
argocd cluster list
Argo CD thường đã có cluster nội bộ:
https://kubernetes.default.svc
Cluster này chính là Kubernetes cluster nơi Argo CD đang chạy.
Kết quả tương tự:
SERVER NAME VERSION STATUS
https://kubernetes.default.svc in-cluster v1.xx Successful
Chúng ta sẽ deploy Online Boutique vào chính cluster này.
13. Tạo GitOps repository
Không nên dùng trực tiếp repository source code của Online Boutique để lưu toàn bộ cấu hình GitOps trong lab đầu tiên.
Tạo một repository mới trên GitHub.
Ví dụ tên repository:
online-boutique-gitops
Repository có thể có cấu trúc:
online-boutique-gitops/
├── README.md
├── charts/
│ └── online-boutique/
└── environments/
└── dev/
└── values.yaml
Trong Chapter 5E, chúng ta sẽ sử dụng Helm chart đã có từ Chapter 5D.
Có hai cách tổ chức:
Phương án A — Lưu Helm chart vào GitOps repository
online-boutique-gitops/
└── helm-chart/
├── Chart.yaml
├── values.yaml
└── templates/
Phương án B — Sử dụng Helm chart từ repository Online Boutique
Google Online Boutique Repository
↓
helm-chart/
↓
Argo CD
↓
Amazon EKS
Để dễ kiểm soát cấu hình và phục vụ mục đích học GitOps, Chapter này sử dụng Phương án A.
14. Clone repository GitOps về máy local
Thay đổi URL repository bên dưới thành repository của bạn:
git clone https://github.com/<YOUR_GITHUB_USERNAME>/online-boutique-gitops.git
Di chuyển vào thư mục:
cd online-boutique-gitops
Tạo thư mục Helm chart:
mkdir -p helm-chart
15. Copy Helm chart từ Chapter 5D
Nếu Helm chart đang nằm trong repository microservices-demo, quay lại thư mục source:
cd ../microservices-demo
Kiểm tra:
ls helm-chart
Copy Helm chart sang GitOps repository:
cp -R helm-chart ../online-boutique-gitops/
Quay lại GitOps repository:
cd ../online-boutique-gitops
Kiểm tra:
find helm-chart -maxdepth 2 -type f
Kết quả tương tự:
helm-chart/Chart.yaml
helm-chart/values.yaml
helm-chart/templates/...
Nếu bạn đã tự xây dựng Helm chart riêng trong Chapter 5D, hãy copy chart của bạn thay vì copy chart mặc định.
16. Kiểm tra Helm chart trong GitOps repository
Chạy:
helm lint ./helm-chart
Kết quả mong đợi:
1 chart(s) linted, 0 chart(s) failed
Render chart:
helm template online-boutique ./helm-chart \
--namespace online-boutique
Nếu chart sử dụng được, tiếp tục kiểm tra bằng lệnh:
helm template online-boutique ./helm-chart \
--namespace online-boutique \
> /tmp/online-boutique-gitops-rendered.yaml
Kiểm tra resource:
grep '^kind:' /tmp/online-boutique-gitops-rendered.yaml
17. Tạo file values cho môi trường dev
Tạo thư mục:
mkdir -p environments/dev
Tạo file:
touch environments/dev/values.yaml
Mở file:
nano environments/dev/values.yaml
Thêm các cấu hình override phù hợp với Helm chart của bạn.
Ví dụ:
frontend:
replicaCount: 2
Lưu ý:
- Chỉ sử dụng field thực sự tồn tại trong
helm-chart/values.yaml. - Không tự tạo
replicaCountnếu chart không hỗ trợ field này. - Kiểm tra bằng:
helm show values ./helm-chart
Sau đó kiểm tra render:
helm template online-boutique ./helm-chart \
--namespace online-boutique \
-f environments/dev/values.yaml
18. Commit và push GitOps repository
Kiểm tra các file:
git status
Thêm file:
git add helm-chart environments
Commit:
git commit -m "add Online Boutique Helm chart for dev"
Push:
git push origin main
Kiểm tra repository trên GitHub.
Cấu trúc cuối cùng:
online-boutique-gitops/
├── helm-chart/
│ ├── Chart.yaml
│ ├── values.yaml
│ └── templates/
│
└── environments/
└── dev/
└── values.yaml
19. Tạo Argo CD Application
Argo CD sử dụng resource Application để mô tả:
- Git repository nào cần theo dõi.
- Branch hoặc revision nào.
- Thư mục Helm chart nào.
- Deploy vào cluster nào.
- Deploy vào namespace nào.
- Có tự động sync hay không.
Tạo file:
mkdir -p argocd
touch argocd/online-boutique-dev.yaml
Mở file:
nano argocd/online-boutique-dev.yaml
Thêm nội dung:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: online-boutique-dev
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/<YOUR_GITHUB_USERNAME>/online-boutique-gitops.git
targetRevision: main
path: helm-chart
helm:
valueFiles:
- ../environments/dev/values.yaml
destination:
server: https://kubernetes.default.svc
namespace: online-boutique
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
Thay:
<YOUR_GITHUB_USERNAME>
bằng GitHub username của bạn.
Ý nghĩa các field chính
repoURL
Repository GitOps mà Argo CD sẽ theo dõi.
targetRevision: main
Branch được sử dụng.
path: helm-chart
Thư mục chứa Helm chart.
valueFiles
File values override dành cho môi trường dev.
destination.server
Cluster đích. Giá trị:
https://kubernetes.default.svc
nghĩa là cluster nơi Argo CD đang chạy.
destination.namespace
Namespace deploy Online Boutique.
automated
Cho phép Argo CD tự động đồng bộ.
prune: true
Cho phép Argo CD xóa resource không còn được khai báo trong Git.
selfHeal: true
Cho phép Argo CD tự sửa những thay đổi thủ công trên cluster.
CreateNamespace=true
Tự tạo namespace nếu namespace chưa tồn tại.
20. Kiểm tra đường dẫn values của Helm
Trước khi apply Application, cần kiểm tra Helm có đọc được file values hay không.
Chạy:
helm template online-boutique ./helm-chart \
--namespace online-boutique \
-f environments/dev/values.yaml
Nếu Helm báo lỗi:
file not found
thì cần kiểm tra lại cấu trúc repository.
Một cách tổ chức đơn giản hơn là đặt file values bên trong chart:
helm-chart/
├── Chart.yaml
├── values.yaml
├── values-dev.yaml
└── templates/
Khi đó Application có thể sử dụng:
source:
repoURL: https://github.com/<YOUR_GITHUB_USERNAME>/online-boutique-gitops.git
targetRevision: main
path: helm-chart
helm:
valueFiles:
- values-dev.yaml
Nếu sử dụng cách này, file values-dev.yaml phải nằm trong thư mục helm-chart.
21. Tạo Application trên EKS
Commit file Application:
git add argocd/online-boutique-dev.yaml
Commit:
git commit -m "add Argo CD application for Online Boutique"
Push:
git push origin main
Sau đó apply Application vào Argo CD:
kubectl apply \
-f argocd/online-boutique-dev.yaml
Kiểm tra Application:
kubectl get applications -n argocd
Kết quả tương tự:
NAME SYNC STATUS HEALTH STATUS
online-boutique-dev OutOfSync Missing
Trạng thái ban đầu có thể là OutOfSync vì Argo CD chưa đồng bộ resource.
22. Kiểm tra Application bằng Argo CD CLI
Chạy:
argocd app list
Kết quả có thể tương tự:
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH
argocd/online-boutique-dev https://kubernetes.default.svc online-boutique default OutOfSync Missing
Xem chi tiết:
argocd app get online-boutique-dev
Thông tin cần kiểm tra:
Project: default
Server: https://kubernetes.default.svc
Namespace: online-boutique
Sync Status: OutOfSync
Health Status: Missing
23. Đồng bộ Application lần đầu
Nếu muốn sync thủ công lần đầu:
argocd app sync online-boutique-dev
Theo dõi quá trình:
argocd app wait online-boutique-dev
Kiểm tra lại:
argocd app get online-boutique-dev
Kết quả mong đợi:
Sync Status: Synced
Health Status: Healthy
Kiểm tra bằng Kubernetes:
kubectl get deployments -n online-boutique
kubectl get pods -n online-boutique
kubectl get services -n online-boutique
24. Kiểm tra giao diện Argo CD
Mở:
https://localhost:8080
Trong giao diện Argo CD, bạn sẽ thấy Application:
online-boutique-dev
Application có thể hiển thị cây resource:
online-boutique-dev
├── Deployment/frontend
├── Deployment/cartservice
├── Deployment/paymentservice
├── Deployment/checkoutservice
├── Service/frontend
├── Service/cartservice
├── Service/paymentservice
└── ...
Các trạng thái quan trọng:
| Trạng thái | Ý nghĩa |
|---|---|
Synced |
Cluster khớp với Git |
OutOfSync |
Cluster khác với Git |
Healthy |
Resource đang hoạt động bình thường |
Progressing |
Resource đang trong quá trình triển khai |
Degraded |
Resource có vấn đề |
Missing |
Resource chưa tồn tại trên cluster |
25. Kiểm tra frontend sau khi Argo CD deploy
Lấy Service frontend:
kubectl get service frontend -n online-boutique
Lấy hostname:
export FRONTEND_URL=$(
kubectl get service frontend \
-n online-boutique \
-o jsonpath='{.status.loadBalancer.ingress[0].hostname}'
)
Kiểm tra:
echo "$FRONTEND_URL"
Test:
curl -I "http://$FRONTEND_URL"
Mở trình duyệt:
http://<FRONTEND_URL>
Kiểm tra các chức năng:
- Hiển thị sản phẩm.
- Thêm sản phẩm vào giỏ hàng.
- Xem giỏ hàng.
- Thực hiện checkout.
- Kiểm tra các microservice giao tiếp với nhau.
26. Thử nghiệm thay đổi cấu hình bằng Git
Bây giờ chúng ta sẽ không chạy:
helm upgrade
thủ công nữa.
Thay vào đó, thay đổi cấu hình trong Git.
Mở file:
nano environments/dev/values.yaml
Ví dụ thay đổi số replica nếu chart hỗ trợ:
frontend:
replicaCount: 2
Lưu file.
Render để kiểm tra:
helm template online-boutique ./helm-chart \
--namespace online-boutique \
-f environments/dev/values.yaml
Commit:
git add environments/dev/values.yaml
git commit -m "scale frontend in dev"
Push:
git push origin main
27. Theo dõi Argo CD tự động sync
Kiểm tra Application:
argocd app get online-boutique-dev
Theo dõi trạng thái:
argocd app wait online-boutique-dev
Kiểm tra Deployment:
kubectl get deployment frontend \
-n online-boutique
Kiểm tra replica:
kubectl get deployment frontend \
-n online-boutique \
-o jsonpath='{.spec.replicas}'
Kết quả mong đợi:
2
Kiểm tra Pod:
kubectl get pods -n online-boutique
Khi đó flow đã trở thành:
Git change
↓
git push
↓
Argo CD detects change
↓
Helm render
↓
Kubernetes apply
↓
EKS updated
28. Thử nghiệm trạng thái OutOfSync
Để kiểm tra GitOps, chúng ta sẽ thay đổi trực tiếp resource trên EKS.
Chạy:
kubectl scale deployment frontend \
-n online-boutique \
--replicas=1
Kiểm tra:
kubectl get deployment frontend \
-n online-boutique
Nếu trong Git vẫn khai báo:
frontend:
replicaCount: 2
thì trạng thái thực tế đã khác trạng thái mong muốn.
Kiểm tra Argo CD:
argocd app get online-boutique-dev
Nếu chart render được field replica, Application có thể chuyển sang:
OutOfSync
29. Kiểm tra self-healing
Vì Application đã cấu hình:
syncPolicy:
automated:
prune: true
selfHeal: true
Argo CD sẽ cố gắng đưa cluster về trạng thái được khai báo trong Git.
Theo dõi Deployment:
kubectl get deployment frontend \
-n online-boutique \
-w
Sau đó kiểm tra replica:
kubectl get deployment frontend \
-n online-boutique \
-o jsonpath='{.spec.replicas}'
Kết quả mong đợi sau khi Argo CD đồng bộ lại:
2
Kiểm tra Application:
argocd app get online-boutique-dev
Kết quả mong đợi:
Sync Status: Synced
Health Status: Healthy
Nếu
selfHealkhông hoạt động, kiểm tra xem resource có thực sự được Helm chart quản lý hay không và kiểm tra logs của Argo CD Application Controller.
30. Kiểm tra lịch sử đồng bộ
Xem lịch sử sync:
argocd app history online-boutique-dev
Kết quả có thể tương tự:
ID DATE REVISION
0 2026-09-14 10:00:00 abc123
1 2026-09-14 10:15:00 def456
Xem thông tin sync trong Kubernetes:
kubectl describe application \
online-boutique-dev \
-n argocd
31. Rollback bằng Git revert
Trong GitOps, rollback nên thực hiện bằng cách thay đổi Git về phiên bản trước đó.
Không nên ưu tiên chạy trực tiếp:
helm rollback
vì thay đổi đó sẽ không được ghi nhận trong Git.
Xem lịch sử commit:
git log --oneline --max-count=5
Ví dụ:
def4567 scale frontend in dev
abc1234 add Argo CD application
Rollback commit gần nhất:
git revert def4567
Push thay đổi:
git push origin main
Argo CD sẽ phát hiện commit mới và đồng bộ cấu hình cũ trở lại EKS.
Kiểm tra:
argocd app get online-boutique-dev
Theo dõi:
argocd app wait online-boutique-dev
Kiểm tra Deployment:
kubectl get deployment frontend \
-n online-boutique
32. Kiểm tra Argo CD logs khi deployment lỗi
32.1. Application Controller
kubectl logs \
-n argocd \
deployment/argocd-application-controller \
--tail=100
32.2. Repo Server
kubectl logs \
-n argocd \
deployment/argocd-repo-server \
--tail=100
32.3. Argo CD Server
kubectl logs \
-n argocd \
deployment/argocd-server \
--tail=100
32.4. Xem chi tiết Application
argocd app get online-boutique-dev
32.5. Xem các resource bị lỗi
kubectl get all -n online-boutique
Nếu Pod lỗi:
kubectl describe pod <POD_NAME> \
-n online-boutique
Xem logs:
kubectl logs <POD_NAME> \
-n online-boutique
33. Các lỗi thường gặp
Lỗi 1: Argo CD không truy cập được GitHub
Kiểm tra URL repository:
repoURL: https://github.com/<YOUR_GITHUB_USERNAME>/online-boutique-gitops.git
Kiểm tra repository có public hay không.
Nếu repository private, cần cấu hình repository credentials trong Argo CD.
Lỗi 2: Helm chart không tìm thấy values file
Kiểm tra cấu trúc:
find . -maxdepth 3 -type f
Kiểm tra valueFiles trong Application.
Đảm bảo file values nằm trong phạm vi mà Helm/Argo CD có thể truy cập.
Lỗi 3: Application ở trạng thái OutOfSync
Chạy:
argocd app diff online-boutique-dev
Sau đó kiểm tra:
argocd app get online-boutique-dev
Nếu muốn sync thủ công:
argocd app sync online-boutique-dev
Lỗi 4: Application ở trạng thái Degraded
Kiểm tra Pod:
kubectl get pods -n online-boutique
Kiểm tra Pod lỗi:
kubectl describe pod <POD_NAME> \
-n online-boutique
Xem logs:
kubectl logs <POD_NAME> \
-n online-boutique
Lỗi 5: Frontend không có External IP
Kiểm tra Service:
kubectl get service frontend \
-n online-boutique
Theo dõi:
kubectl get service frontend \
-n online-boutique \
-w
Kiểm tra AWS Load Balancer Controller nếu Service không tạo được Load Balancer.
34. So sánh trước và sau Chapter 5E
Trước Chapter 5E
Developer
↓
helm upgrade
↓
Amazon EKS
Các vấn đề:
- Phụ thuộc vào máy developer.
- Khó biết ai đã deploy.
- Thay đổi có thể không được commit vào Git.
- Khó kiểm tra sự khác biệt giữa Git và cluster.
- Khó tự động sửa drift.
Sau Chapter 5E
Developer
↓
git push
↓
GitHub
↓
Argo CD
↓
Helm
↓
Amazon EKS
Lợi ích:
- Git lưu trữ desired state.
- Deployment có lịch sử commit.
- Argo CD hiển thị trạng thái sync.
- Có thể phát hiện drift.
- Có thể tự động sửa drift.
- Rollback bằng Git revert.
- Không cần chạy
helm upgradethủ công cho mỗi thay đổi.
35. Kiểm tra cuối Chapter
Chạy lần lượt:
kubectl get pods -n argocd
argocd app list
argocd app get online-boutique-dev
kubectl get deployments -n online-boutique
kubectl get pods -n online-boutique
kubectl get services -n online-boutique
Trạng thái mong đợi:
Argo CD Pods Running
Application Synced
Application Health Healthy
Online Boutique Running
Frontend Accessible
36. Kiến trúc sau Chapter 5E
Developer
│
▼
GitHub
│
┌────────────┴────────────┐
│ │
▼ ▼
Application Code GitOps Repository
│ │
▼ ▼
GitHub Actions Helm Chart
│ │
▼ ▼
ECR Argo CD
│ │
└────────────┬────────────┘
▼
Amazon EKS
│
▼
Google Online Boutique
Kết quả đạt được
Ở cuối Chapter 5E, chúng ta đã chuyển Online Boutique từ mô hình:
Manual Helm Deployment
sang:
GitOps Deployment with Argo CD
Đây là nền tảng để tiếp tục mở rộng ở các phần sau:
- Multi-environment: Dev, Staging, Production.
- App of Apps.
- ApplicationSet.
- GitOps kết hợp Amazon ECR.
- Quản lý nhiều microservice.
- Quản lý nhiều EKS cluster.
- Self-service deployment platform.
All Rights Reserved