Hướng dẫn chi tiết thiết lập cụm Kubernetes nội bộ với KFTray, Kind và Terraform
Giới thiệu
Bài viết này sẽ hướng dẫn bạn cách thiết lập một cụm Kubernetes nội bộ (local Kubernetes cluster) một cách hiệu quả và an toàn bằng cách sử dụng Kind, Terraform và KFTray. Với phương pháp này, chúng ta sẽ giữ các dịch vụ bên trong cụm mà không cần expose ra bên ngoài, giúp giảm thiểu rủi ro bảo mật và độ phức tạp trong cấu hình.
Tại sao nên giữ các dịch vụ bên trong cụm?
Việc expose service ra bên ngoài có thể làm tăng rủi ro bảo mật và độ phức tạp trong quản lý. Đối với phát triển cục bộ hoặc trong môi trường an toàn, việc giữ tất cả các dịch vụ bên trong cụm thường mang lại lợi ích tốt hơn. Chúng ta có thể sử dụng lệnh kubectl port-forward
và tự động hóa quy trình này bằng KFTray để truy cập các dịch vụ mà không cần phải expose chúng ra internet.
Chuẩn bị công cụ
Trước khi bắt đầu, hãy đảm bảo rằng bạn đã cài đặt những công cụ cần thiết dưới đây:
- Docker: Công cụ ảo hóa cần thiết cho Kind.
- Terraform (v1.9.5 trở lên): Công cụ quản lý hạ tầng dưới dạng mã.
- KFTray: Bạn có thể chọn giữa phiên bản GUI (Giao diện người dùng đồ họa) hoặc TUI (Giao diện người dùng đầu cuối).
Sao chép kho lưu trữ mã nguồn
Trước hết, bạn cần sao chép kho lưu trữ chứa mã Terraform bằng lệnh sau:
bash
git clone https://github.com/hcavarsan/kftray-k8s-tf-example
cd kftray-k8s-tf-example/terraform
Hiểu về mã Terraform
Mã Terraform trong kho lưu trữ này sẽ tự động hóa các tác vụ như sau:
- Tạo thú cụm Kubernetes sử dụng Kind.
- Triển khai các Helm chart cho Argo CD, Prometheus, Alertmanager, Grafana, và Jaeger.
- Thiết lập cấu hình dịch vụ cho KFTray để tự động import các thiết lập port-forward.
Cấu trúc dự án
Dưới đây là tổ chức của dự án:
kftray-k8s-tf-example
├── terraform
│ ├── helm.tf
│ ├── outputs.tf
│ ├── locals.tf
│ ├── providers.tf
│ ├── variables.tf
│ ├── templates
│ │ ├── argocd-values.yaml.tpl
│ │ ├── grafana-values.yaml.tpl
│ │ ├── jaeger-values.yaml.tpl
│ │ └── prometheus-values.yaml.tpl
│ └── kind.tf
├── Makefile
└── README.md
providers.tf
Tệp này xác định các nhà cung cấp Terraform mà chúng ta sẽ sử dụng:
hcl
tfmark {
required_version = ">= 1.0.0"
required_providers {
kind = { source = "tehcyx/kind" version = "0.4.0" }
helm = { source = "hashicorp/helm" version = ">= 2.0.0" }
kubernetes = { source = "hashicorp/kubernetes" version = ">= 2.0.0" }
template = { source = "hashicorp/template" version = ">= 2.0.0" }
}
}
Trong đó:
- kind: Quản lý các cụm Kind.
- kubernetes: Tương tác với cụm Kubernetes.
- helm: Triển khai các Helm chart.
variables.tf
Tệp này xác định các biến sử dụng trong cấu hình Terraform:
hcl
variable "cluster_name" {
description = "Tên của cụm Kind"
type = string
default = "kftray-cluster"
}
Áp dụng cấu hình Terraform
Để áp dụng cấu hình Terraform và thiết lập cụm, bạn chỉ cần chạy lệnh sau:
bash
make apply
Lệnh này sẽ:
- Khởi tạo Terraform.
- Tạo cụm Kind.
- Triển khai các Helm chart.
Cài đặt KFTray
Truy cập trang GitHub của KFTray và làm theo hướng dẫn cài đặt cho hệ điều hành của bạn tại đây.
Nhập cấu hình Port-Forward vào KFTray
Sử dụng KFTray GUI
- Mở KFTray và nhấp vào biểu tượng khay để mở cửa sổ chính.
- Nhấp vào biểu tượng menu ở góc dưới bên trái.
- Chọn "Auto Import".
- Nhấp vào "Set kubeconfig" và chọn tệp kubeconfig được tạo bởi Terraform.
- Chọn context
kftray-cluster
từ menu dropdown. - Nhấp vào "Import" để tải cài đặt port-forward.
Sử dụng Kftui (Giao diện đầu cuối)
- Đặt biến môi trường KUBECONFIG:
bash
export KUBECONFIG="~/.kube/kind-config-kftray-cluster"
- Bắt đầu Kftui:
bash
kftui
- Nhấn Tab để truy cập menu và chọn "Auto Import".
- Nhấn Ctrl+A để chọn tất cả cấu hình.
- Nhấn F để bắt đầu tất cả port forward.
Truy cập các dịch vụ của bạn
Với việc thiết lập port forwarding, bạn có thể truy cập các dịch vụ từ máy tính nội bộ như sau:
- Argo CD:
http://localhost:16080
- Prometheus:
http://localhost:19090
- Alertmanager:
http://localhost:19093
- Grafana:
http://localhost:13080
- Jaeger:
http://localhost:15090
Tùy chỉnh cài đặt KFTray
1. Điều chỉnh cài đặt Port Forwarding
Bạn có thể tùy chỉnh cách KFTray chuyển tiếp cổng bằng cách chỉnh sửa tệp locals.tf
.
2. Dọn dẹp tài nguyên
Nếu bạn muốn hủy cụm và xóa tất cả tài nguyên, hãy chạy:
bash
make destroy
Điều này sẽ giúp xóa bỏ cụm và tài nguyên được tạo bởi Terraform.
Kết luận
Thông qua việc giữ tất cả các dịch vụ trong cụm và sử dụng KFTray để chuyển tiếp cổng, chúng ta đã tạo ra một môi trường phát triển an toàn và đơn giản hơn. Quy trình này cực kỳ hữu ích cho việc phát triển cục bộ và bảo mật các dịch vụ của bạn mà không cần phải expose ra bên ngoài.
source: viblo