Techtalk cuối tuần – GitOps

Chào các bạn , hôm nay là một ngày cuối tuần khá là nhàn rỗi đối với mình .Vì thế hôm nay mình xin phép lên đây chia sẻ , trao đổi một chút về một khái niệm mới cũng không hẵn mới , nhưng cũ thì cũng chẳng phải là cũ đó là GitOps .
1) Vậy GitOps là gì ? 
Chúng ta có thể tách nghĩa của nó ra trong từ “GitOps” . Git là một source control để lưu tất cả các manifest , config , source code của các bạn . Ops là Operation là hệ điều hành ,  hiểu rộng hơn có thể là một Infrastructure . Vậy GitOps bạn có thể hiểu nôm na chúng ta thay vì phải thao tác trực tiếp trên Operation/Infrastructure thì chúng ta có thể thao tác tất cả ở trên Git .

2) Tại sao phải sử dụng GitOps ?
Quay về cách đây 5 năm hoặc thậm chí là 10 năm khi ta muốn thao tác cài đặt hàng loạt các package cho các servers thì chúng ta có thể ssh vào từng con server để cài đặt , hoặc các master thời đó có thể viết Shell Script hoặc xịn hơn là Ansible để thao tác . Nhưng một vấn đề gặp phải là các action này không lưu lại history , rollback rất khó khăn hoặc rất chậm , không an toàn khi thao tác với hệ thống và còn rất nhiều vấn đề khác mình sẽ trình bày ở bên dưới .
– Sử dụng GitOps sẽ giúp cho bạn có thể lưu được tất cả các action của thành viên trong team dựa vào cơ chế merge request của Git . Khi ai đó cần action một cái gì đó tới hệ thống thì sẽ phải pull repository về sau đó phải commit và merge request để các leader review sau khi approve thì action kia mới có effect .
– Sử dụng GitOps sẽ giúp cho bạn rollback một cách dễ dàng hơn bằng việc quản lí source tại Git .
– Sử dụng GitOps cũng là một cách để các bạn docs lại kiến thức của mình và có thể đọc code để xem lại bất cứ lúc nào .
– Sử dụng GitOps có thể giúp bạn đỡ phải login vào server để thao tác tránh rủi ro không đáng có .
– Apply GitOps sẽ giúp bạn và team của bạn tiết kiệm được rất nhiều thời gian bằng việc automation tất cả mọi thứ .
– Hơn nữa GitOps giúp team bạn gắn kết hơn làm việc hợp tác với nhau hơn bằng việc lưu tất cả các action ở Git.
3) GitOps hoạt động ra sao ?
Giả sử ở đây mình có một manifest helm bên dưới , bình thường mình sẽ phải chạy command line để apply một secret và configmap của mình tới cluster Kubernetes
helm upgrade secret-test ./secret \
–install \
–namespace=”test-namespace”
và lần khác cần chỉnh sửa gì mình lại phải vào folder này để chỉnh sửa các values rồi lại chạy command dài loằn ngoằn một lần nữa . Việc này khá là tốn thời gian cho bạn .

Vậy khi apply GitOps thì flow làm việc của mình sẽ như nào ?
Mình chỉ cần edit file mình cần edit và commit nó lên Git , còn lại Git sẽ tự làm tất cả việc còn lại . Bên dưới mình có vẽ một mô hình cơ bản về GitOps .

Developer edit config lên Git sau đó sẽ có CI sẽ run command dài loằn ngoằn để deploy tới K8s Cluster . Thật đơn giản phải không ? Nhưng sao phía CI/CD lại biết mình chạy command nào mà nó run được hay vậy ?  Vì các config sẽ được lưu ở 1 file có tên là .gitlab-ci.yml file này sẽ thực hiện tất cả các thao tác mà mình đã define từ trước . Nhưng bài viết này mình chỉ tập trung về GitOps nên có lẽ mình sẽ chia sẻ chi tiết hơn về Gitlab-CI .
Thực sự GitOps là khái niệm tuyệt vời để cho các team DevOps/System có sizing lớn làm việc cùng với nhau một cách hiệu quả nhất mà không bị conflict giữa các thành viên với nhau . Hi vọng qua bài viết này bạn có thêm một chút khái niệm về GitOps cũng như các GitOps hoạt động ra sao . Cảm ơn các bạn đã đọc bài , nếu thấy hữu ích hay cho mình 1 like để ủng hộ mình nhé . Have a nice weekend . 

Chào các bạn , hôm nay là một ngày cuối tuần khá là nhàn rỗi đối với mình .Vì thế hôm nay mình xin phép lên đây chia sẻ , trao đổi một chút về một khái niệm mới cũng không hẵn mới , nhưng cũ thì cũng chẳng phải là cũ đó là GitOps…

Leave a Reply

Your email address will not be published. Required fields are marked *