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)
Argo CD là gì?
Argo CD là một công cụ mã nguồn mở được thiết kế để hỗ trợ quy trình GitOps trong việc triển khai ứng dụng trên Kubernetes. Argo CD được áp dụng vào trong bước CD (Continuous Delivery) của luồng CI/CD. Đây là bước ta thực thi triển khai ứng dụng lên trên môi trường máy chủ.
Argo CD sử dụng các kho Git làm nguồn thông tin chính để xác định trạng thái ứng dụng cần có, do đó nó được gọi là một công cụ GitOps. Trong series này ta sử dụng Argo CD để triển khai ứng dụng Microservice Book Info dưới đây.
Bài đầu tiên ta tìm hiểu cách cài đặt Argo CD và dùng cách đơn giản nhất để triển khai ứng dụng Book Info.
Cài đặt Argo CD
Tạo namespace cho argocd và cài đặt argocd:
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
Kiểm tra cài đặt thành công:
kubectl get pods -n argocd
NAME READY STATUS RESTARTS AGE
argocd-application-controller-0 1/1 Running 0 3m39s
argocd-applicationset-controller-744b76d7fd-xgk2d 1/1 Running 0 3m39s
argocd-dex-server-5bf5dbc64d-w8vdx 1/1 Running 0 3m39s
argocd-notifications-controller-84f5bf6896-5mdbg 1/1 Running 0 3m39s
argocd-redis-74b8999f94-zmm5b 1/1 Running 0 3m39s
argocd-repo-server-57f4899557-vxcrf 1/1 Running 0 3m39s
argocd-server-7bc7b97977-nclk6 1/1 Running 0 3m39s
Cài Argo CD CLI để tương tác với Argo CD, với Mac, Linux hoặc WSL ta chạy câu lệnh sau:
brew install argocd
Với Windows tham khảo dường dẫn này CLI installation documentation. Truy cập UI của Argo CD:
kubectl port-forward svc/argocd-server -n argocd 8080:443
Vì ta chạy localhost nên website báo unsafe, ta bấm proceed to localhost (unsafe):
UI đăng nhập:
Tài khoản mặc định của Argo CD là admin, để lấy password chạy câu lệnh sau:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
UI sau khi đăng nhập vào Argo CD:
Triển khai ứng dụng Book Info
Book Info bao gồm các service sau:
- Products Service
- Details Service
- Reviews Service
- Ratings Service
Để triển khai ứng dụng trên Argo CD ta cần tạo một Application (giải thích chi tiết ở bài sau). Nhấn vào nút + New App ở trên UI.
Tên ứng dụng ta điền bookinfo, project chọn default, sync policy để Automatic. Các thuộc tính SYNC OPTIONS tạm thời ta để mặc định.
Mục Repository URL là trường ta kết nối tới Git, nơi chứa tệp tin Kubernetes Resource ta cần triển khai. Các bạn dùng repo https://github.com/hoalongnatsu/istio-microservice-book-info của mình. Đây là Public Repo và ai cũng truy cập được, bài sau mình sẽ hướng dẫn cách kết nối tới Private Repo. Phần Path ta điền dấu .
là thư mục root:
Mục Destination điền vào https://kubernetes.default.svc
và chọn namespace triển khai, của mình là default.
Bấm nút Create.
Đợi Argo CD triển khai ứng dụng.
Đợi status chuyển sang synced thì ứng dụng bookinfo được triển khai lên môi trường kubernetes thành công. Bấm vào App.
Các Service ta định nghĩa bằng tệp tin YAML và lưu trên Git đã được Argo CD triển khai lên Kubernetes. Để kiểm tra ta mở trang Products lên:
kubectl port-forward svc/products 9080:9080
Trong bài này, chúng ta đã triển khai thành công ứng dụng Microservice Book Info bằng cách đơn giản. Bài tiếp theo, chúng ta sẽ đi sâu hơn vào các khái niệm trong Argo CD và áp dụng chúng để triển khai ứng dụng một cách chuyên nghiệp và hiệu quả hơn.
Điểm hẹn ngân hàng số Vikki by HDBank
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