Terraform là một công cụ để xây dựng, cập nhật và quản lý hạ tầng của bạn bằng cách sử dụng mã. Giống như Github đã trích dẫn
Terraform cho phép bạn tạo, thay đổi và cải thiện cơ sở hạ tầng một cách an toàn và có thể dự đoán được. Đây là một công cụ mã nguồn mở mã hóa các API thành các tệp cấu hình khai báo có thể được chia sẻ giữa các thành viên trong nhóm, được coi là mã, được chỉnh sửa, xem xét và tạo phiên bản
Dịch. Terraform cho phép bạn tạo, thay đổi và nâng cấp cơ sở hạ tầng một cách dễ dàng để có thể xem trước các thay đổi. Nó là một công cụ mã nguồn mở cho phép chuyển đổi các API dưới dạng tệp cấu hình có thể chia sẻ, được biểu diễn dưới dạng mã để xem, chỉnh sửa và sự khác biệt giữa các phiên bản cấu hình
Vì vậy, phần có hại nhất của Terraform là bạn có thể nhập hạ tầng vốn có của mình vào trạng thái cấu hình Terraform, nhờ đó tất cả các thay đổi trong tương lai đều 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 sản xuất 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ó
Standard is the field
Terraform là bất khả tri trên đám mây nên bạn có thể chạy với Kubernetes Cluster bất kỳ, bất kỳ đám mây bất kỳ nào sử dụng bằng cách sử dụng các Nhà cung cấp được cung cấp sẵn. Một Nhà cung cấp là phần cốt 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
- Tải xuống và cài đặt Minikube v1. 14. 0 theo hướng dẫn tài liệu sau. Tài liệu minikube
- Tải xuống và cài đặt Helm v3. 4. 0-rc. 1 the following direction. Tài liệu lái xe
- Tải xuống và cài đặt kubectl để thao tác với Kubernetes Cluster. tài liệu kubectl
- Tải xuống và cài đặt Terraform v0. 13. 4 tại đây. Giải nén rồi di chuyển vào /usr/local/bin/terraform
Sơ lược về các câu lệnh trong Terraform
Để có thể xây dựng được với Terraform, bạn phải tạo mô-đun. Đây sẽ là thư mục bao gồm các tệp cấu hình để 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 tệp chính. tf
tel4vn@devops:~/terraform_example$ touch 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
terraform init
Khởi tạo một thư mục làm việc với Terraform. Câu lệnh này phải được chạy trong cùng thư mục với các tệp. tf nếu không thì sẽ không có gì diễn ra khi thực thi
terraform validate
Kiểm tra cú pháp đã cài đặt trong tệp. tf
terraform plan
Đọc tệp cấu hình và hiển thị những thay đổi nếu thực thi
terraform apply
áp dụng và thực thi các cài đặt trong tệp cấu hình
terraform refresh
Cập nhật trạng thái hiện tại của các tài nguyên
terraform destroy
Xoá các hạ tầng được quản lý bởi Terraform mà lưu trong file terraform. tfstate. Câu lệnh này sẽ xóa vĩnh viễn bất kỳ đối tượng, tài nguyên nào được tạo và chỉ định trong tệp terraform. tfstate
Khởi tạo Minikube Cluster bằng cách sử dụng Minikube
Trước khi bắt đầu với Terraform, bạn phải tạo một Minikube Cluster
tel4vn@devops: minikube start
Sau khi chạy câu lệnh trên, kiểm tra lại với kubectl
________số 8Cluster has up, vậy tiếp theo, bạn cần thêm cài đặt vào tệp main. tf. Trước hết, bạn cần một nhà cung cấp. Trong bài viết này, nhà cung cấp của bạn là kubernetes
provider "kubernetes" { config_context_cluster = "minikube" }
Theo cú pháp trên, bạn đã báo cáo với Terraform rằng Cluster mà bạn đang chạy là Minikube Cluster
Next next is must only the 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ể. mạng ảo, phiên bản máy tính hoặc Bản ghi DNS, …
Thực hiện thêm một không gian tên Kubernetes vào trong cụm
terraform init0
Tiếp theo, thực hiện lệnh terraform init để kiểm tra phiên bản và khởi động Terraform trong thư mục hiện tại
terraform init1
Tiếp tục thực hiện Terraform plan để kiểm tra những thay đổi có thể xảy ra
terraform init2
Sau khi xem xét những thay đổi đó, hãy thực hiện áp dụng những thay đổi đó
terraform init3
Cuối cùng, xác nhận lại các thay đổi đã áp dụng hoặc chưa sử dụng kubectl get ns
terraform init4
Use Helm chart with Terraform
Từ phần trên, bạn đã biết cách viết file config cho Terraform và chạy nó. Tiếp theo sẽ được chạy bằng biểu đồ Helm, sử dụng helm create để tạo biểu đồ
terraform init5
Vì vậy, bạn cần chỉ định một nhà cung cấp để có thể làm việc với biểu đồ Helm và chỉ định tên Kubernetes Cluster để Helm biết nơi nó sẽ cài đặt các biểu đồ. Thực hiện thêm một khối mới trong chính. tf as after
terraform init6
Sau đó, cần phải thêm tài nguyên Helm để biểu đồ 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à nhà cung cấp Helm cung cấp đó là helm _release. mình đặt tên tài nguyên này là cục bộ. You read can set any any name
terraform init7
Sau khi cập nhật thêm cấu hình trong chính. tf, bạn chạy lại phần khởi động để cập nhật trạng thái đã thay đổi, bao gồm cả nhà cung cấp dịch vụ tải mới
terraform init8
Sự thay đổi thống kê sẽ được thực hiện
terraform init9
Sau khi xem xét thay đổi, hãy cập nhật các thay đổi ngay lập tức bằng cách sử dụng –tự động phê duyệt
terraform validate0
Kiểm tra lại biểu đồ đã được thực hiện khai thác bằng cách sử dụng kubectl
terraform validate1
Bạn có thể thấy, biểu đồ đã thực sự được triển khai Terraform và trong thư mục cũng đồng thời có trạng thái sao lưu tệp được tạo ra
terraform validate2
Như bạn đã thấy, Terraform cung cấp tính năng sao lưu cho trạng thái của các tầng 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 động. Đồ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
Phục hồi 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, trạng thái sao lưu tệp sẽ được tạo ra và cập nhật liên tục mình phiên bản mới 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 bất kỳ ứng dụng nào không hoạt động đúng
Trước hết, hãy chạy lệnh terraform refresh để xem sự khác nhau giữa trạng thái hiện tại và cụm
terraform validate3
Sau đó, để khôi phục lại phiên bản cũ, có 2 cách
- Ghi bảo vệ trạng thái tệp hiện tại bằng trạng thái sao lưu tệp
- Nhận xét những khối gây ra sự thay đổi giữa trạng thái hiện tại với trạng thái trước trong tệp. tf
Trong bài viết này, mình sẽ thực hiện bình luận những thay đổi, cụ thể là block đã triển khai helm chart
terraform validate4
Sau khi bắt đầu, hãy chạy lại terraform apply để khôi phục
terraform validate5
Xoá trạng thái phát triển được khai thác bởi Terraform
Để xóa trạng thái và tất cả các đối tượng, tài nguyên đã được khởi động và theo dõi bởi Terraform, ta sử dụng câu lệnh terraform destroy
terraform validate6
Bạn có thể kiểm tra lại xem các đối tượng đã thực sự bị xóa đi bằng cách sử dụng kubectl
terraform validate7
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ể bình luận bên dưới để mình hỗ trợ. Cảm ơn bạn đã theo dõi