GitOps trong 25 ngày
Ngày 1:
Khám phá GitOps:
Tìm hiểu các thuật ngữ cốt lõi (Continuous, Declarative, Desired State, State Drift, State Reconciliation, GitOps Managed Software System, State Store, Feedback Loop, Rollback).
Nắm vững các nguyên lý GitOps (Declarative, Versioned and Immutable, Pulled Automatically, Continuously Reconciled).
Làm quen với các thực tiễn liên quan (Configuration as Code (CaC), Infrastructure as Code (IaC), DevOps and DevSecOps, CI and CD).
Bài tập:
Tạo một repository Git và cấu hình nó để lưu trữ các manifest Kubernetes đơn giản.
Sử dụng một công cụ so sánh để kiểm tra sự khác biệt giữa hai phiên bản manifest.
Tìm hiểu về các công cụ GitOps phổ biến (Argo CD, Flux) và so sánh ưu nhược điểm của chúng.
Ngày 2:
Tìm hiểu mô hình GitOps:
Nghiên cứu các mô hình Deployment và Release Patterns (Blue-Green, Canary, Rolling Update).
Tìm hiểu về Progressive Delivery Patterns (Feature Flags, A/B Testing).
So sánh Pull vs. Event-driven trong GitOps.
Bài tập:
Thực hiện một deployment đơn giản sử dụng mô hình Blue-Green với Kubernetes.
Tạo một pipeline CI/CD đơn giản để tự động cập nhật ứng dụng khi có thay đổi trong repository Git.
Nghiên cứu về Feature Flags và cách chúng được sử dụng trong Progressive Delivery.
Ngày 3:
Kiến trúc GitOps:
Tìm hiểu về các mô hình kiến trúc in-cluster và external reconciler.
Nghiên cứu về cách quản lý State Store trong GitOps.
Tìm hiểu về các vấn đề thường gặp trong GitOps và cách giải quyết.
Bài tập:
Thiết lập một môi trường GitOps đơn giản sử dụng Argo CD hoặc Flux.
Sử dụng một công cụ GitOps để tự động đồng bộ trạng thái của ứng dụng với các manifest trong repository Git.
Thử nghiệm các tính năng rollback và tự phục hồi của GitOps.
Ngày 4:
Nhập môn Argo Workflows:
Làm quen với các khái niệm cơ bản của Argo Workflows (Workflow, Template, DAG, Artifact).
Tìm hiểu cách tạo và sử dụng Artifacts trong Argo Workflows.
Nghiên cứu về Argo Workflow Templates và cách chúng được sử dụng để định nghĩa các Workflow.
Bài tập:
Tạo một Argo Workflow đơn giản để thực hiện một tác vụ xử lý dữ liệu.
Sử dụng Artifacts để truyền dữ liệu giữa các bước trong Workflow.
Tạo một Argo Workflow Template để tái sử dụng trong các Workflow khác.
Ngày 5:
Argo Workflows nâng cao:
Tìm hiểu về Argo Workflow Spec và các thuộc tính của nó.
Tập trung vào DAG (Directed-Acyclic Graphs) và cách chúng được sử dụng để mô hình hóa các quy trình làm việc phức tạp.
Thực hành chạy các job xử lý dữ liệu với Argo Workflows.
Bài tập:
Tạo một Argo Workflow phức tạp sử dụng DAG để thực hiện nhiều tác vụ xử lý dữ liệu song song.
Sử dụng các điều kiện và vòng lặp trong Argo Workflow để kiểm soát luồng thực thi.
Tích hợp Argo Workflows với các công cụ khác như Apache Airflow hoặc Kubeflow Pipelines.
Ngày 6:
Argo CD cơ bản:
Nắm vững các khái niệm cơ bản của Argo CD (Application, Project, Sync).
Tìm hiểu cách đồng bộ ứng dụng sử dụng Argo CD.
Thực hành sử dụng Argo CD Application để quản lý các ứng dụng Kubernetes.
Bài tập:
Cài đặt và cấu hình Argo CD trong một cluster Kubernetes.
Tạo một Argo CD Application để triển khai một ứng dụng đơn giản.
Sử dụng Argo CD để đồng bộ trạng thái của ứng dụng với các manifest trong repository Git.
Ngày 7:
Argo CD nâng cao:
Cấu hình Argo CD với Helm và Kustomize.
Tìm hiểu về các mô hình Reconciliation thường gặp trong Argo CD (hooks, prune).
Làm quen với Argo Rollouts và các chiến lược rollout phổ biến (Canary, Blue-Green).
Bài tập:
Sử dụng Helm để đóng gói và triển khai một ứng dụng phức tạp với Argo CD.
Sử dụng Kustomize để tùy chỉnh các manifest Kubernetes trước khi triển khai với Argo CD.
Thực hiện một rollout Canary sử dụng Argo Rollouts.
Ngày 8:
Argo Rollouts chuyên sâu:
Tìm hiểu sâu hơn về Argo Rollouts và các tính năng của nó.
Thực hành sử dụng các chiến lược Progressive Delivery khác nhau (Canary, Blue-Green, Rolling Update).
Tìm hiểu về Analysis Template và AnalysisRun trong Argo Rollouts.
Bài tập:
Thực hiện một rollout Blue-Green sử dụng Argo Rollouts.
Sử dụng Analysis Template và AnalysisRun để tự động kiểm tra tính khả dụng và hiệu suất của ứng dụng trong quá trình rollout.
Tích hợp Argo Rollouts với các công cụ giám sát như Prometheus và Grafana.
Ngày 9:
Argo Events:
Tìm hiểu các khái niệm cơ bản của Argo Events (Event, Sensor, Trigger).
Nghiên cứu kiến trúc của Argo Events và cách các thành phần của nó hoạt động cùng nhau.
Thực hành tạo các Event Source và Trigger trong Argo Events.
Bài tập:
Cài đặt và cấu hình Argo Events trong một cluster Kubernetes.
Tạo một Event Source để nhận các sự kiện từ một webhook.
Tạo một Trigger để kích hoạt một Argo Workflow khi một sự kiện được nhận.
Ngày 10:
GitOps ở quy mô lớn:
Tìm hiểu về các thách thức khi áp dụng GitOps trong các tổ chức lớn.
Nghiên cứu các chiến lược và công cụ để quản lý nhiều môi trường và ứng dụng với GitOps.
Tìm hiểu về các mô hình phân quyền và kiểm soát truy cập trong GitOps.
Bài tập:
Thiết kế một kiến trúc GitOps cho một tổ chức lớn với nhiều team và dự án.
Sử dụng các công cụ như GitOps Engine hoặc Crossplane để quản lý nhiều cluster Kubernetes.
Thực hiện kiểm soát truy cập dựa trên vai trò (RBAC) trong GitOps.
Ngày 11:
Bảo mật trong GitOps:
Tìm hiểu về các mối đe dọa bảo mật phổ biến trong GitOps (ví dụ: rò rỉ bí mật, tấn công vào supply chain).
Nghiên cứu các phương pháp hay nhất để bảo mật GitOps (ví dụ: ký manifest, quét lỗ hổng bảo mật, sử dụng image signing).
Thực hành các kỹ thuật bảo mật GitOps trong một môi trường thực tế.
Bài tập:
Sử dụng các công cụ như Sigstore để ký và xác minh các manifest GitOps.
Tích hợp các công cụ quét lỗ hổng bảo mật vào pipeline CI/CD GitOps.
Thực hiện phân tích rủi ro bảo mật cho một hệ thống GitOps.
Ngày 12:
Các trường hợp sử dụng GitOps phức tạp:
Tìm hiểu về các trường hợp sử dụng GitOps nâng cao, chẳng hạn như:
Quản lý cơ sở hạ tầng (ví dụ: mạng, lưu trữ) với GitOps.
Triển khai các ứng dụng Machine Learning với GitOps.
Tự động hóa các quy trình vận hành với GitOps.
Nghiên cứu các công cụ và kỹ thuật để giải quyết các trường hợp sử dụng này.
Bài tập:
Sử dụng GitOps để quản lý cấu hình của một mạng lưới dịch vụ (service mesh) như Istio hoặc Linkerd.
Triển khai một ứng dụng Machine Learning với GitOps, bao gồm cả việc quản lý mô hình và dữ liệu.
Sử dụng GitOps để tự động mở rộng quy mô ứng dụng dựa trên các chỉ số giám sát.
Ngày 13:
Flux:
Tìm hiểu về Flux, một công cụ GitOps thay thế cho Argo CD.
So sánh Flux và Argo CD, đánh giá ưu nhược điểm của từng công cụ.
Thực hành cài đặt và sử dụng Flux để triển khai và quản lý ứng dụng Kubernetes.
Bài tập:
Cài đặt và cấu hình Flux trong một cluster Kubernetes.
Sử dụng Flux để triển khai một ứng dụng đơn giản.
So sánh trải nghiệm sử dụng Flux và Argo CD.
Ngày 14:
Jenkins X:
Tìm hiểu về Jenkins X, một nền tảng tự động hóa CI/CD dựa trên GitOps.
Nghiên cứu các tính năng của Jenkins X, chẳng hạn như:
Tạo pipeline CI/CD tự động.
Quản lý môi trường (environments) và quảng bá (promotions).
Tích hợp với các công cụ GitOps khác.
Thực hành sử dụng Jenkins X để xây dựng một pipeline CI/CD hoàn chỉnh.
Bài tập:
Cài đặt và cấu hình Jenkins X trong một cluster Kubernetes.
Sử dụng Jenkins X để tạo một pipeline CI/CD cho một ứng dụng đơn giản.
Tìm hiểu về các khái niệm môi trường và quảng bá trong Jenkins X.
Ngày 15:
GitOps và Kubernetes Operators:
Tìm hiểu về Kubernetes Operators và cách chúng mở rộng chức năng của Kubernetes.
Nghiên cứu cách sử dụng GitOps để quản lý vòng đời của Operators.
Thực hành triển khai và quản lý một Operator đơn giản sử dụng GitOps.
Bài tập:
Tìm hiểu về một Kubernetes Operator phổ biến (ví dụ: Prometheus Operator, cert-manager).
Sử dụng GitOps để triển khai và cấu hình Operator đó trong cluster Kubernetes.
Tìm hiểu về Operator Lifecycle Manager (OLM) và cách nó giúp quản lý Operators.
Ngày 16:
GitOps và Observability:
Tìm hiểu về tầm quan trọng của observability trong GitOps.
Nghiên cứu cách tích hợp các công cụ observability (ví dụ: Prometheus, Grafana, Loki) với GitOps.
Thực hành thiết lập một dashboard giám sát để theo dõi trạng thái của các ứng dụng và cơ sở hạ tầng được quản lý bởi GitOps.
Bài tập:
Cài đặt và cấu hình Prometheus và Grafana trong cluster Kubernetes.
Thu thập các chỉ số (metrics) từ các ứng dụng và cơ sở hạ tầng được quản lý bởi GitOps.
Tạo các dashboard Grafana để trực quan hóa các chỉ số và cảnh báo về các vấn đề.
Ngày 17:
GitOps và Policy as Code:
Tìm hiểu về Policy as Code và cách nó giúp tự động hóa việc thực thi các chính sách trong GitOps.
Nghiên cứu các công cụ Policy as Code phổ biến (ví dụ: Open Policy Agent, Kyverno, Gatekeeper).
Thực hành sử dụng một công cụ Policy as Code để kiểm tra và thực thi các chính sách trên các manifest GitOps.
Bài tập:
Cài đặt và cấu hình một công cụ Policy as Code trong cluster Kubernetes.
Viết các chính sách để kiểm tra các yêu cầu bảo mật và tuân thủ trên các manifest GitOps.
Tích hợp công cụ Policy as Code vào pipeline CI/CD GitOps.
Ngày 18:
GitOps và Multi-Cluster Management:
Tìm hiểu về các thách thức khi quản lý nhiều cluster Kubernetes.
Nghiên cứu các công cụ và kỹ thuật để triển khai và quản lý ứng dụng trên nhiều cluster sử dụng GitOps.
Thực hành sử dụng một công cụ như Argo CD hoặc Flux để đồng bộ các ứng dụng trên nhiều cluster.
Bài tập:
Thiết lập một môi trường đa cluster Kubernetes.
Sử dụng Argo CD hoặc Flux để triển khai một ứng dụng trên nhiều cluster.
Tìm hiểu về các tính năng multi-cluster của Argo CD và Flux.
Ngày 19-21:
Dự án thực tế 1: Xây dựng một hệ thống GitOps hoàn chỉnh cho một ứng dụng microservices:
Sử dụng Argo CD, Argo Rollouts, và Argo Events để triển khai và quản lý một ứng dụng microservices phức tạp.
Áp dụng các kỹ thuật Progressive Delivery (Canary, Blue-Green) để giảm thiểu rủi ro khi triển khai.
Tích hợp các công cụ observability để giám sát và xử lý sự cố.
Thực hiện kiểm soát truy cập dựa trên vai trò (RBAC) để đảm bảo an ninh.
Ngày 22-24:
Dự án thực tế 2: Tự động hóa quản lý cơ sở hạ tầng với GitOps:
Sử dụng GitOps để quản lý cấu hình của các thành phần cơ sở hạ tầng như mạng (ví dụ: Calico, Cilium), lưu trữ (ví dụ: Rook, Longhorn) và ingress (ví dụ: Nginx, Traefik).
Thực hiện các quy trình tự động để cung cấp và quản lý tài nguyên cơ sở hạ tầng.
Tích hợp các công cụ Policy as Code để đảm bảo tuân thủ các tiêu chuẩn và chính sách.
Ngày 25:
Tổng kết và đánh giá:
Xem xét lại các kiến thức và kỹ năng đã học trong suốt khóa học.
Đánh giá sự tiến bộ của bản thân và xác định các lĩnh vực cần cải thiện thêm.
Lên kế hoạch tiếp tục học tập và phát triển trong lĩnh vực GitOps.