Giới thiệu Terraform – Dùng IaC để triển khai NGINX trên Kubernetes
Bạn là DevOps, Automation Engineer hay đang vọc cloud? Nếu vậy, bạn nhất định phải biết đến Terraform – một trong những công cụ Infrastructure as Code (IaC) mạnh mẽ nhất hiện nay!
Trong bài này, mình sẽ chia sẻ cách sử dụng Terraform để triển khai NGINX service lên Kubernetes Cluster, theo chuẩn IaC: code – plan – apply – destroy. Cực kỳ gọn gàng, tự động hóa cao, không cần login SSH hay gõ lệnh kubectl thủ công.
💡 Terraform là gì?
Terraform là công cụ mã nguồn mở do HashiCorp phát triển từ 2014. Nó dùng một ngôn ngữ riêng gọi là HCL (HashiCorp Configuration Language), rất dễ đọc, dễ học.
Terraform làm việc với nhiều hệ thống khác nhau thông qua provider – từ AWS, Azure, GCP đến Kubernetes, Cisco ACI, Palo Alto... Bạn có thể quản lý toàn bộ hạ tầng bằng một bộ mã nguồn duy nhất.
🧱 Cấu trúc file Terraform cơ bản
Khi viết một project Terraform, bạn thường chia cấu hình thành 3 file chính:
⚙️ Terraform CLI – 4 bước thần chú DevOps cần nhớ
🚀 Dự án triển khai NGINX bằng Terraform
Truy cập vào GitHub mẫu từ Cisco Learning:
git clone https://github.com/CiscoLearning/dep...kubernetes.git cd deploy-terraform-kubernetes
Trong thư mục này có:
🛠️ Lấy thông tin cluster
Chạy lệnh sau để lấy thông tin Kubernetes hiện tại:
kubectl config view --minify --flatten --context=kind-my-kubernetes-cluster
Bạn sẽ thấy các dòng như server, client-certificate-data, client-key-data, certificate-authority-data. Hãy copy từng phần vào terraform.tfvars để điền cho các biến:
Sau khi cập nhật xong, bạn đã sẵn sàng để triển khai!
🚦 Triển khai NGINX
Thực hiện 3 bước cơ bản:
terraform init
terraform plan
terraform apply
Khi được hỏi “Do you want to perform these actions?”, hãy gõ yes.
🎉 Boom! NGINX đã chạy trên Kubernetes của bạn hoàn toàn bằng mã Terraform!
🔁 Dọn dẹp nếu cần
Khi không cần nữa, hãy chủ động dọn dẹp để tránh tốn tài nguyên:
terraform destroy
📣 Tips và chia sẻ thêm
Bạn đã thử deploy gì bằng Terraform chưa? Có dùng với Kubernetes hoặc thiết bị mạng chưa? Chia sẻ kinh nghiệm bên dưới nhé để cùng học hỏi!
Nếu bạn thấy bài viết hữu ích, đừng quên like và share về tường để sau này có cái đọc lại nhé 😉
#Terraform #IaC devops kubernetes #CiscoDevNet vnpro #NetDevOps #HCL #InfrastructureAsCode automation #K8s #NGINX #CloudNative
Bạn là DevOps, Automation Engineer hay đang vọc cloud? Nếu vậy, bạn nhất định phải biết đến Terraform – một trong những công cụ Infrastructure as Code (IaC) mạnh mẽ nhất hiện nay!
Trong bài này, mình sẽ chia sẻ cách sử dụng Terraform để triển khai NGINX service lên Kubernetes Cluster, theo chuẩn IaC: code – plan – apply – destroy. Cực kỳ gọn gàng, tự động hóa cao, không cần login SSH hay gõ lệnh kubectl thủ công.
💡 Terraform là gì?
Terraform là công cụ mã nguồn mở do HashiCorp phát triển từ 2014. Nó dùng một ngôn ngữ riêng gọi là HCL (HashiCorp Configuration Language), rất dễ đọc, dễ học.
Terraform làm việc với nhiều hệ thống khác nhau thông qua provider – từ AWS, Azure, GCP đến Kubernetes, Cisco ACI, Palo Alto... Bạn có thể quản lý toàn bộ hạ tầng bằng một bộ mã nguồn duy nhất.
🧱 Cấu trúc file Terraform cơ bản
Khi viết một project Terraform, bạn thường chia cấu hình thành 3 file chính:
- main.tf: mô tả toàn bộ hạ tầng cần tạo.
- variables.tf: định nghĩa các biến để tái sử dụng và linh hoạt hóa cấu hình.
- output.tf: định nghĩa các thông tin cần xuất ra sau khi triển khai (như IP, hostname...).
⚙️ Terraform CLI – 4 bước thần chú DevOps cần nhớ
- terraform init – khởi tạo môi trường làm việc, tải provider.
- terraform plan – xem trước những gì sẽ được tạo hoặc thay đổi.
- terraform apply – triển khai thật, xác nhận với “yes”.
- terraform destroy – hủy bỏ toàn bộ tài nguyên đã tạo.
🚀 Dự án triển khai NGINX bằng Terraform
Truy cập vào GitHub mẫu từ Cisco Learning:
git clone https://github.com/CiscoLearning/dep...kubernetes.git cd deploy-terraform-kubernetes
Trong thư mục này có:
- kubernetes_resources.tf: tạo 2 pod chạy NGINX.
- kubernetes.tf: định nghĩa provider kết nối đến Kubernetes cluster.
- terraform.tfvars: nơi bạn điền thông tin cụ thể của cluster (host, cert, key…).
🛠️ Lấy thông tin cluster
Chạy lệnh sau để lấy thông tin Kubernetes hiện tại:
kubectl config view --minify --flatten --context=kind-my-kubernetes-cluster
Bạn sẽ thấy các dòng như server, client-certificate-data, client-key-data, certificate-authority-data. Hãy copy từng phần vào terraform.tfvars để điền cho các biến:
- host chính là giá trị của server.
- client_certificate chính là client-certificate-data.
- client_key chính là client-key-data.
- cluster_ca_certificate là certificate-authority-data.
Sau khi cập nhật xong, bạn đã sẵn sàng để triển khai!
🚦 Triển khai NGINX
Thực hiện 3 bước cơ bản:
terraform init
terraform plan
terraform apply
Khi được hỏi “Do you want to perform these actions?”, hãy gõ yes.
🎉 Boom! NGINX đã chạy trên Kubernetes của bạn hoàn toàn bằng mã Terraform!
🔁 Dọn dẹp nếu cần
Khi không cần nữa, hãy chủ động dọn dẹp để tránh tốn tài nguyên:
terraform destroy
📣 Tips và chia sẻ thêm
- File terraform.tfstate chứa trạng thái thực tế của hạ tầng – rất quan trọng! Nếu làm việc nhóm hay production, nên dùng remote backend (như S3, GCS...).
- Có thể dùng thêm terraform validate, terraform fmt để kiểm tra lỗi cú pháp và format file đẹp hơn.
- Terraform không chỉ deploy hạ tầng, mà còn dùng được cho network automation với các thiết bị thật như Cisco Nexus, IOS XE, Meraki...
Bạn đã thử deploy gì bằng Terraform chưa? Có dùng với Kubernetes hoặc thiết bị mạng chưa? Chia sẻ kinh nghiệm bên dưới nhé để cùng học hỏi!
Nếu bạn thấy bài viết hữu ích, đừng quên like và share về tường để sau này có cái đọc lại nhé 😉
#Terraform #IaC devops kubernetes #CiscoDevNet vnpro #NetDevOps #HCL #InfrastructureAsCode automation #K8s #NGINX #CloudNative