GitOps: một từ thông dụng khác hay một bước đột phá trong tự động hóa?

GitOps: một từ thông dụng khác hay một bước đột phá trong tự động hóa?

Hầu hết chúng ta, khi nhận thấy một thuật ngữ mới khác trong thế giới blog hoặc hội nghị CNTT, sớm hay muộn đều đặt ra một câu hỏi tương tự: “Đây là gì? Chỉ là một từ thông dụng khác, một “từ thông dụng” hay thứ gì đó thực sự đáng được quan tâm, nghiên cứu và hứa hẹn về những chân trời mới? Điều tương tự cũng xảy ra với tôi với thuật ngữ GitOps cách đây một thời gian. Được trang bị nhiều bài viết hiện có cũng như kiến ​​thức của đồng nghiệp trong công ty GitLab, Tôi đã cố gắng tìm hiểu xem đây là loại quái thú gì và công dụng của nó trong thực tế sẽ như thế nào.

Nhân tiện, về tính mới của thuật ngữ này GitOps Cuộc khảo sát gần đây của chúng tôi cũng cho biết: hơn một nửa số người được khảo sát vẫn chưa bắt đầu làm việc với các nguyên tắc của nó.

Vì vậy, vấn đề quản lý cơ sở hạ tầng không phải là mới. Nhiều nhà cung cấp đám mây đã có sẵn cho công chúng trong hàng chục năm và có vẻ như đáng lẽ phải làm cho công việc của các nhóm chịu trách nhiệm về cơ sở hạ tầng trở nên đơn giản và dễ hiểu. Tuy nhiên, khi so sánh với quy trình phát triển ứng dụng (nơi tự động hóa ngày càng đạt đến những cấp độ mới), các dự án cơ sở hạ tầng vẫn thường liên quan đến nhiều tác vụ thủ công và đòi hỏi kiến ​​thức và chuyên môn chuyên ngành, đặc biệt là với các yêu cầu ngày nay về khả năng chịu lỗi, tính linh hoạt, khả năng mở rộng và độ đàn hồi.

Các dịch vụ đám mây đã đáp ứng rất thành công các yêu cầu này và chính chúng đã tạo động lực đáng kể cho sự phát triển của phương pháp này IaC. Điều này có thể hiểu được. Rốt cuộc, họ đã có thể định cấu hình một trung tâm dữ liệu hoàn toàn ảo: không có máy chủ vật lý, giá đỡ hoặc thành phần mạng; toàn bộ cơ sở hạ tầng có thể được mô tả bằng cách sử dụng tập lệnh và tệp cấu hình.

Vậy chính xác thì sự khác biệt là gì? GitOps từ IaC? Chính với câu hỏi này mà tôi đã bắt đầu cuộc điều tra của mình. Sau khi trao đổi với đồng nghiệp, tôi có thể đưa ra so sánh sau:

GitOps

IaC

Tất cả mã được lưu trữ trong kho git

Phiên bản mã là tùy chọn

Mô tả mã khai báo/Idempotency

Cả mô tả mang tính khai báo và mệnh lệnh đều được chấp nhận

Các thay đổi có hiệu lực bằng cách sử dụng cơ chế Yêu cầu Hợp nhất / Yêu cầu Kéo

Thỏa thuận, phê duyệt và hợp tác là tùy chọn

Quá trình triển khai bản cập nhật được tự động hóa

Quá trình triển khai cập nhật không được chuẩn hóa (tự động, thủ công, sao chép tệp, sử dụng dòng lệnh, v.v.)

Nói cách khác GitOps được sinh ra chính xác thông qua việc áp dụng các nguyên tắc IaC. Thứ nhất, cơ sở hạ tầng và cấu hình giờ đây có thể được lưu trữ giống như các ứng dụng. Mã này dễ lưu trữ, dễ chia sẻ, so sánh và sử dụng các khả năng lập phiên bản. Phiên bản, chi nhánh, lịch sử. Và tất cả điều này ở một nơi mà toàn bộ nhóm có thể truy cập công khai. Vì vậy, việc sử dụng các hệ thống kiểm soát phiên bản đã trở thành một sự phát triển hoàn toàn tự nhiên. Đặc biệt, git là phổ biến nhất.

Mặt khác, có thể tự động hóa các quy trình quản lý cơ sở hạ tầng. Bây giờ điều này có thể được thực hiện nhanh hơn, đáng tin cậy hơn và rẻ hơn. Hơn nữa, các nguyên tắc của CI/CD đã được các nhà phát triển phần mềm biết đến và phổ biến. Chỉ cần chuyển giao và áp dụng những kiến ​​thức và kỹ năng đã biết vào một lĩnh vực mới. Tuy nhiên, những thực tiễn này đã vượt ra ngoài định nghĩa tiêu chuẩn về Cơ sở hạ tầng dưới dạng mã, do đó có khái niệm GitOps.

GitOps: một từ thông dụng khác hay một bước đột phá trong tự động hóa?

Tò mò GitOps, tất nhiên, cũng không phải là sản phẩm, plugin hay nền tảng được liên kết với bất kỳ nhà cung cấp nào. Nó giống một mô hình và một bộ nguyên tắc hơn, tương tự như một thuật ngữ khác mà chúng ta quen thuộc: DevOps.

Công ty GitLab chúng tôi đã phát triển hai định nghĩa về thuật ngữ mới này: lý thuyết và thực tiễn. Hãy bắt đầu với lý thuyết:

GitOps là một phương pháp sử dụng các nguyên tắc DevOps tốt nhất được sử dụng để phát triển ứng dụng, chẳng hạn như kiểm soát phiên bản, cộng tác, điều phối, CI/CD và áp dụng chúng cho những thách thức trong việc tự động hóa quản lý cơ sở hạ tầng.

Tất cả các quy trình GitOps Tôi làm việc bằng cách sử dụng các công cụ hiện có. Tất cả mã cơ sở hạ tầng đều được lưu trữ trong kho git vốn đã quen thuộc, các thay đổi đều trải qua quy trình phê duyệt giống như bất kỳ mã chương trình nào khác và quy trình triển khai được tự động hóa, cho phép chúng tôi giảm thiểu lỗi của con người, tăng độ tin cậy và khả năng tái tạo.

Từ quan điểm thực tế, chúng tôi mô tả GitOps như sau:

GitOps: một từ thông dụng khác hay một bước đột phá trong tự động hóa?

Chúng ta đã thảo luận về cơ sở hạ tầng dưới dạng mã là một trong những thành phần chính của công thức này. Hãy giới thiệu những người tham gia còn lại.

Yêu cầu Hợp nhất (tên thay thế Yêu cầu Kéo). Về mặt quy trình, MR là yêu cầu áp dụng các thay đổi mã và sau đó hợp nhất các nhánh. Nhưng xét về mặt công cụ chúng tôi sử dụng, đây là cơ hội để có được bức tranh hoàn chỉnh về tất cả các thay đổi đang được thực hiện: không chỉ khác biệt về mã được thu thập từ một số lần xác nhận nhất định mà còn cả bối cảnh, kết quả kiểm tra và kết quả mong đợi cuối cùng. Nếu chúng ta đang nói về mã cơ sở hạ tầng, thì chúng ta quan tâm đến việc cơ sở hạ tầng sẽ thay đổi chính xác như thế nào, có bao nhiêu tài nguyên mới sẽ được thêm vào hoặc loại bỏ, thay đổi. Tốt nhất là ở một số định dạng thuận tiện và dễ đọc hơn. Đối với các nhà cung cấp đám mây, nên biết tác động tài chính của thay đổi này sẽ là gì.

Nhưng MR cũng là một phương tiện hợp tác, tương tác và giao tiếp. Nơi mà hệ thống kiểm tra và cân bằng phát huy tác dụng. Từ những nhận xét đơn giản đến phê duyệt và phê duyệt chính thức.

Chà, thành phần cuối cùng: CI/CD, như chúng ta đã biết, giúp tự động hóa quá trình thực hiện thay đổi và thử nghiệm cơ sở hạ tầng (từ kiểm tra cú pháp đơn giản đến phân tích mã tĩnh phức tạp hơn). Và cả trong việc phát hiện độ lệch tiếp theo: sự khác biệt giữa trạng thái thực và trạng thái mong muốn của hệ thống. Ví dụ: do thay đổi thủ công trái phép hoặc lỗi hệ thống.

Vâng, thuật ngữ GitOps không giới thiệu cho chúng ta bất cứ điều gì hoàn toàn mới, không phát minh lại bánh xe mà chỉ áp dụng kinh nghiệm đã tích lũy được trong một lĩnh vực mới. Nhưng sức mạnh của anh nằm ở đây.

Và nếu bạn đột nhiên quan tâm đến việc tất cả những điều này trông như thế nào trong thực tế thì tôi mời bạn xem qua lớp chủ, trong đó tôi sẽ hướng dẫn bạn từng bước cách sử dụng GitLab:

  • Thực hiện các nguyên tắc cơ bản của GitOps

  • Tạo và thực hiện các thay đổi đối với cơ sở hạ tầng đám mây (sử dụng ví dụ về Yandex Cloud)

  • Tự động phát hiện sự trôi dạt của hệ thống từ trạng thái mong muốn bằng cách sử dụng tính năng giám sát chủ động

GitOps: một từ thông dụng khác hay một bước đột phá trong tự động hóa?https://bit.ly/34tRpwZ

Nguồn: www.habr.com

Thêm một lời nhận xét