Cấu hình Helm Repository cho YugabyteDB
Thêm repository chính thức của YugabyteDB vào quản lý gói Helm để truy cập vào các biểu đồ (chart) cập nhật nhất.
Bước này giúp Helm biết nơi tải xuống định nghĩa của cụm database, bao gồm các template YAML và file mặc định values.yaml.
helm repo add yugabyte https://yugabyte.github.io/yugabyte-helm/
Kết quả mong đợi: Thông báo "INFO: 'yugabyte' has been added to your repositories".
Cập nhật chỉ mục (index) của repository để tải về danh sách các phiên bản chart mới nhất có sẵn.
Thao tác này đảm bảo khi bạn cài đặt, hệ thống sẽ dùng phiên bản chart mới nhất chứ không phải bản cũ đã cache.
helm repo update
Kết quả mong đợi: Thông báo "Hang on to the helm chart... Updated 1 repo(s)".
Tùy chỉnh file values.yaml
Sao chép file cấu hình mặc định của YugabyteDB từ chart vào file local để chỉnh sửa các tham số cụ thể cho môi trường của bạn.
Việc này giúp bạn kiểm soát số lượng node, yếu tố nhân bản (replication factor) và loại ổ đĩa mà không cần truyền tham số phức tạp qua lệnh install.
helm pull yugabyte/yugabyte-operator --untar
Kết quả mong đợi: Thư mục yugabyte-operator được tạo ra tại thư mục hiện tại.
Di chuyển vào thư mục chart và tạo file values.yaml tùy chỉnh dựa trên cấu hình mặc định.
Chúng ta sẽ tạo một cụm 3 node với 3 replication factor để đảm bảo tính sẵn sàng cao (High Availability) trên Kubernetes.
cd yugabyte-operator
cp values.yaml values-custom.yaml
Kết quả mong đợi: File values-custom.yaml được tạo với nội dung giống values.yaml gốc.
Sửa file values-custom.yaml để định nghĩa số lượng node, loại storage và cấu hình mạng.
File này sẽ ghi rõ đường dẫn đầy đủ /tmp/values-custom.yaml (giả định bạn đang làm việc tại thư mục tạm hoặc thư mục dự án) với nội dung hoàn chỉnh như dưới đây.
cat > /tmp/values-custom.yaml
Kết quả mong đợi: File /tmp/values-custom.yaml được tạo thành công với nội dung cấu hình mong muốn.
Triển khai cụm YugabyteDB bằng Helm
Thực thi lệnh Helm install để tạo tài nguyên Kubernetes dựa trên file values.yaml đã cấu hình.
Lệnh này sẽ khởi tạo Namespace, Deployments, Services, PersistentVolumeClaims và StatefulSets cần thiết cho YugabyteDB.
helm install yugadb yugabyte/yugabyte-operator -n yugabyte --create-namespace -f /tmp/values-custom.yaml --wait --timeout 300s
Kết quả mong đợi: Thông báo "NAME: yugadb" và "STATUS: deployed" sau khi các pod đã sẵn sàng (Ready).
Tham số --wait và --timeout đảm bảo lệnh install chỉ trả về khi tất cả các pod đã khởi động xong hoặc lỗi sau 5 phút.
Điều này giúp bạn biết ngay lập tức việc triển khai thành công hay thất bại mà không cần check thủ công.
Kiểm tra trạng thái Pod và Service
Kiểm tra trạng thái của tất cả các Pod trong namespace yugabyte để xác nhận chúng đã ở trạng thái Running.
YugabyteDB chia thành hai loại pod chính: Master (quản lý metadata) và TServer (lưu trữ dữ liệu thực tế).
kubectl get pods -n yugabyte -l app=yugabyte
Kết quả mong đợi: Danh sách 6 pod (3 master, 3 tserver) với trạng thái READY là 3/3 hoặc tương đương và STATUS là Running.
Liệt kê các Service để xác minh các endpoint mạng đã được tạo để ứng dụng kết nối vào cụm.
Cần chú ý đến service yugadb-yugabyte-master và yugadb-yugabyte-tserver để lấy địa chỉ IP/Hostname.
kubectl get svc -n yugabyte
Kết quả mong đợi: Xuất hiện các service với TYPE ClusterIP và các cổng (port) 7000 (Master), 9042 (YCQL), 5433 (YSQL).
Xác minh thành phần Master và TServer
Chặn log của pod Master để kiểm tra quá trình khởi tạo và xem nó đã bầu chọn leader chưa.
Master node cần thiết lập giao thức Raft để đồng bộ trạng thái cụm, log sẽ hiển thị thông tin về leader election.
kubectl logs -n yugabyte -l app=yugabyte-master --tail=50
Kết quả mong đợi: Xuất hiện dòng "Leader elected" hoặc "Raft consensus established" trong log.
Chặn log của pod TServer để xác nhận nó đã kết nối thành công với Master và bắt đầu lưu trữ dữ liệu.
TServer sẽ hiển thị thông tin về việc đã join vào cluster và bắt đầu phục vụ các request từ YSQL/YCQL.
kubectl logs -n yugabyte -l app=yugabyte-tserver --tail=50
Kết quả mong đợi: Xuất hiện dòng "Connected to master" và "TServer is ready to serve requests".
Thực thi lệnh describe trên một pod Master cụ thể để kiểm tra chi tiết sự kiện (Events) nếu có lỗi.
Bước này giúp xác định nguyên nhân nếu pod bị Pending hoặc CrashLoopBackOff do thiếu tài nguyên hoặc lỗi storage.
kubectl describe pod -n yugabyte yugadb-yugabyte-master-0
Kết quả mong đợi: Phần Events hiển thị "Scheduled" và "Pulled" thành công, không có lỗi "FailedMount" hay "OutOfMemory".
Điều hướng series:
Mục lục: Series: Xây dựng hệ thống Database phân tán với YugabyteDB và Kubernetes
« Phần 1: Chuẩn bị môi trường và kiến thức nền tảng
Phần 3: Cấu hình bảo mật và xác thực truy cập »