Terraform state là gì
Terraform là một công cụ để build, cập nhật, và quản lý hạ tầng của bạn bằng cách sử dụng code. Giống như Github đã trích dẫn: Show
Vì vậy, phần lợi hại nhất của Terraform là bạn có thể import hạ tầng vốn có của bạn vào trong Terraform configuration state, nhờ đó tất cả các thay đổi trong tương lai có thể theo dõi được. Thứ có thể theo dõi được ở đây chính là toàn bộ thông tin về môi trường procduction của bạn. Trong bài viết hôm nay, mình sẽ đề cập đến vấn đề tại sao phải sử dụng Terraform và làm thế nào để sử dụng nó. Chuẩn bị môi trường #Terraform là cloud-agnostic nên bạn có thể chạy với bất kì Kubernetes Cluster, nào trên bất kì Cloud nào sử dụng bằng cách sử dụng các Providers mà được cung cấp sẵn. Một Provider là phần lõi của nền tảng mà Terraform hỗ trợ, có trách nhiệm tương tác với API và cung cấp tài nguyên. Trong bài viết này, mình sử dụng Terraform v0.13.4 trên tel4vn Server 20.04. Để có thể theo dõi bài viết, bạn đọc hãy chuẩn bị môi trường như sau:
Sơ lược về các câu lệnh trong Terraform #Để có thể build được với Terraform, bạn cần phải tạo module. Đây sẽ là thư mục gồm các file config để cung cấp thông tin cho việc thực thi. File config của Terraform có đuôi .tf nên trước hết bạn cần tạo file main.tf:
Dưới đây là một số câu lệnh Terraform thường sử dụng mà bạn đọc cần biết:
Khởi tạo Minikube Cluster sử dụng Minikube #Trước khi bắt đầu với Terraform, bạn cần phải tạo một Minikube Cluster.
Sau khi chạy câu lệnh trên, kiểm tra lại với kubectl
Cluster đã lên, vậy tiếp theo, bạn cần thêm cài đặt vào file main.tf . Trước hết, bạn cần một provider . Trong bài viết này, provider của bạn là kubernetes.
Theo cú pháp trên, bạn đã khai báo với Terraform rằng Cluster mà bạn đang chạy là Minikube Cluster. Việc tiếp theo là phải chỉ định các resource block. Đó là các đoạn chỉ định một hoặc nhiều đối tượng trong hạ tầng của bạn. cụ thể: virtual networks, computer instances, or DNS Records, … Thực hiện thêm một Kubernetes namespace vào trong cluster:
Tiếp theo, thực hiện lệnh terraform init để kiểm tra phiên bản và khởi tạo Terraform trong thư mục hiện tại:
Tiếp thục terraform plan để kiểm tra những thay đổi có thể xảy ra:
Sau khi xem xét những thay đổi, thực hiện apply các thay đổi đó:
Cuối cùng, xác nhận lại các thay đổi đã được áp dụng hay chưa sử dụng kubectl get ns
Sử dụng Helm chart với Terraform #Từ phần trên, bạn đã biết các viết file config cho Terraform và chạy nó. Tiếp theo sẽ là chạy sử dụng qua Helm chart, dùng helm create
Như vậy, bạn cần chỉ định một provider để có thể làm việc được với Helm chart và chỉ định tên Kubernetes Cluster để Helm biết nơi nó sẽ cài đặt các chart. Thực hiện thêm một block mới trong main.tf như sau:
Sau đó cần phải thêm một Helm resource để chart này có thể được cài đặt và theo dõi bởi Terraform của bạn bằng cách sử dụng tài nguyên mà provider Helm cung cấp đó là helm _release. mình đặt tên resource này là local. Bạn đọc có thể đặt tên bất kì.
Sau khi cập nhật thêm config trong main.tf, bạn chạy lại phần khởi tạo để cập nhập trạng thái thay đổi, bao gồm cả việc tải mới provider.
Thống kê sự thay đổi sẽ được thực thi:
Sau khi xem xét thay đổi, cập nhật các thay đổi ngay lập tức bằng cách sử dụng –auto-approve
Kiểm tra lại chart đã được thực sự triển khai bằng cách sử dụng kubectl
Bạn có thể thấy, chart đã thực sự được Terraform deploy và trong thư mục cũng đồng thời có file backup state được tạo ra.
Như bạn thấy, Terraform cung cấp tính năng sao lưu cho trạng thái của hạ tầng. Một bản sao lưu trạng thái hạ tầng gần nhất sẽ được tạo ra mỗi khi một trạng thái mới được khởi tạo. Đồng thời cho phép người dùng có thể quản lý các phiên bản trạng thái. Rollback phiên bản trạng thái trước đó #Như đã nói trước đó, khi bạn cập nhật các cài đặt mới sử dụng Terraform, file backup state sẽ được tạo và cập nhật liên tục mình phiên bản gần nhất. Vì một lý do nào đó, bạn phải quay lại phiên bản trạng thái hạ tầng trước đó. cụ thể: phiên bản mới có xung đột dẫn đến một ứng dụng nào đó không hoạt động đúng. Trước hết, hãy chạy câu lệnh terraform refresh để xem sự khác nhau giữa trạng thái hiện tại và cluster
Sau đó, để rollback lại được phiên bản trước, có 2 cách:
Trong bài viết này, mình sẽ thực hiện comment những thay đổi, cụ thể là block đã deploy helm chart:
Sau khi commnent, chạy lại terraform apply để rollback:
Xoá trạng thái triển khai bởi Terraform #Để xoá trạng thái và tất cả những đối tượng, tài nguyên đã được khởi tạo và theo dõi bởi Terraform, ta sử dụng câu lệnh terraform destroy
Bạn có thể kiểm tra lại rằng các đối tượng đã thực sự được xoá đi bằng cách sử dụng kubectl
Lời kết #Vừa rồi mình đã chia sẻ cho mọi người về Terraform và 2 ví dụ sử dụng với Minikube Cluster và Helm. Bất kì câu hỏi nào trong quá trình theo dõi bài đọc, bạn có thể comment bên dưới để mình trợ giúp. Cảm ơn bạn đã theo dõi. Nguồn bài viết: https://opensource.com |