Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Giới thiệu Terraform – Dùng IaC để triển khai NGINX trên Kubernetes

    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:
    • 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ớ
    1. terraform init – khởi tạo môi trường làm việc, tải provider.
    2. terraform plan – xem trước những gì sẽ được tạo hoặc thay đổi.
    3. terraform apply – triển khai thật, xác nhận với “yes”.
    4. 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
    Attached Files
    Đặng Quang Minh, CCIE#11897 (Enterprise Infrastructure, Wireless, Automation, AI), CCSI#31417

    Email : dangquangminh@vnpro.org
    https://www.facebook.com/groups/vietprofessional/
Working...
X