Sử dụng VKS với Terraform
Terraform là gì?
Terraform là một cơ sở hạ tầng nguồn mở dưới dạng công cụ mã cho phép người dùng quản lý cơ sở hạ tầng của họ một cách dễ dàng và hiệu quả trên các nền tảng đám mây khác nhau, chẳng hạn như VNG Cloud, AWS, Google Cloud và Azure. Máy chủ Terraform đề cập đến phiên bản của công cụ Terraform đang chạy trên một máy chủ hoặc máy cụ thể. Đây là nơi mã cơ sở hạ tầng được viết và thực thi, cho phép người dùng tạo, sửa đổi và hủy tài nguyên trên nền tảng đám mây.
Bản thân Terraform không có giao diện người dùng đồ họa, thay vào đó người dùng tương tác với nó bằng giao diện dòng lệnh. Terraform yêu cầu tài khoản và khóa của nhà cung cấp đám mây được định cấu hình cùng với tệp cấu hình Terraform để thực thi cơ sở hạ tầng dưới dạng mã. Ngoài ra, Terraform có thể hoạt động trong môi trường nhóm nơi nhiều người dùng có thể cộng tác trên cùng một cơ sở mã cơ sở hạ tầng, khiến nó trở thành một công cụ mạnh mẽ và linh hoạt để quản lý cơ sở hạ tầng đám mây.
Các bước thực hiện
Để khởi tạo một Cluster Kubernetes bằng Terraform, bạn cần thực hiện các bước sau:
Truy cập IAM Portal tại đây, thực hiện tạo Service Account với quyền hạn VKS Full Access. Cụ thể, tại trang IAM, bạn có thể:
Chọn "Create a Service Account", điền tên cho Service Account và nhấn Next Step để gắn quyền cho Service Account.
Tìm và chọn Policy: VKSFullAccess sau đó nhấn "Create a Service Account" để tạo Service Account, Policy: VKSFullAccess do VNG Cloud tạo ra, bạn không thể xóa các policy này.
Sau khi tạo thành công bạn cần phải lưu lại Client_ID và Secret_Key của Service Account để thực hiện bước tiếp theo.
Truy cập VKS Portal tại đây, thực hiện Activate dịch vụ VKS ở tab Overview. Hãy chờ đợi tới khi chúng tôi khởi tạo thành công tài khoản VKS của bạn.
Cài đặt Terraform:
Tải xuống và cài đặt Terraform cho hệ điều hành của bạn từ https://developer.hashicorp.com/terraform/install.
Khởi tạo cấu hình Terraform:
Tạo tệp
variable.tf
và khai báo thông tin Service Account trong file này.Tạo tệp
main.tf
và định nghĩa các tài nguyên Kubernetes Cluster mà bạn muốn tạo.
Ví dụ:
Tệp
variable.tf:
bạn cần thay thế Client ID và Client Secret đã khởi tạo ở bước 1 ở file này.
Trên file main.tf, bạn cần có thể thêm resource để tạo Cluster/ Node Group:
Tạo Cluster my-vks-cluster và Node Group my-nodegroup độc lập:
Tạo Cluster với Default Node Group
Chú ý:
Chúng tôi khuyên bạn nên tạo và quản lý các Cluster, Node Group dưới dạng resource riêng biệt, như trong ví dụ bên dưới. Điều này cho phép bạn thêm hoặc xóa các Node Group mà không cần tạo lại toàn bộ Cluster. Nếu bạn khai báo trực tiếp Node Group Default trong tài nguyên vngcloud_vks_cluster, bạn không thể xóa chúng mà không tạo lại chính Cluster đó.
Trong file main.tf, để khởi tạo một cluster với một node group thành công, bạn bắt buộc cần nhập thông tin của 4 field sau:
Các ví dụ tham khảo
Example Usage 1 - Create a Cluster with Network type CALICO OVERLAY and a Node Group with AutoScale Mode
Example Usage 2 - Create a Cluster with Network type CILIUM OVERLAY and a Node Group with AutoScale Mode
Example Usage 3 - Create a Cluster with Network type CILIUM VPC Native Routing and a Node Group with AutoScale Mode
Khởi chạy Terraform command
Sau khi hoàn tất các thông tin trên, thực hiện chạy lệnh bên dưới:
Sau đó, bạn để xem những thay đổi sẽ được áp dụng trên những resource mà terraform đang quản lý bạn có thể chạy:
Cuối cùng bạn chọn chạy dòng lệnh:
Chọn YES để thực hiện việc khởi tạo Cluster, Node Group thông qua Terraform
Kiểm tra Cluster vừa tạo trên giao diện VNG Cloud Portal
Sau khi khởi tạo thành công Terraform, bạn có thể lên VKS Portal để xem thông tin Cluster vừa tạo.
Tham khảo thêm về cách sử dụng Terraform để làm việc với VKS tại đây.
**Một vài lưu ý khi sử dụng VKS với Terraform:**
Khi bạn đã tạo cluster và node group trên VKS qua Terraform, nếu bạn thay đổi một trong bốn field sau: flavor_id, disk_size, disk_type, enable_private_nodes, hệ thống sẽ xóa node group cũ và tạo node group mới với cấu hình tương ứng. Việc xóa sẽ được thực hiện trước khi tạo node group mới.
Để chỉ định hệ thống tạo node group mới rồi mới thực hiện xóa node group cũ, bạn có thể thêm tham số
lifecycle { create_before_destroy = true }
vào file main.tf của bạn. Cụ thể:
Last updated