Kubernetes: Kubeconfig file¶
Bạn có cảm thấy phiền toái khi phải nhập các tham số dòng lệnh dài như ca.crt
, user.crt
, và user.key
mỗi lần muốn kết nối với cụm Kubernetes qua kubectl
hoặc curl
không? Đừng lo lắng, kubeconfig chính là giải pháp dành cho bạn! Với kubeconfig, bạn chỉ cần thực thi các lệnh như bình thường, và mọi thông tin cần thiết sẽ được tự động lấy từ tệp cấu hình. Điều này không chỉ giúp bạn tiết kiệm thời gian mà còn giảm thiểu nguy cơ sai sót khi nhập các tham số phức tạp. Hãy nói lời tạm biệt với việc nhập liệu rườm rà và để kubeconfig xử lý tất cả thay bạn!
Kubeconfig là gì?¶

Tên gọi “kubeconfig” thực chất là một thuật ngữ chung dùng để chỉ các tệp cấu hình được sử dụng để truy cập vào các cụm Kubernetes. Vì vậy, bạn không nhất thiết phải đặt tên tệp là kubeconfig.
Bạn có thể đặt bất kỳ tên nào cho tệp cấu hình của mình, miễn là chỉ định đúng đường dẫn tệp bằng cách sử dụng biến môi trường KUBECONFIG
hoặc thông qua tham số tương ứng khi chạy các lệnh như kubectl
. Điều này mang lại sự linh hoạt cao, đặc biệt khi bạn cần quản lý nhiều tệp cấu hình cho các môi trường hoặc cụm khác nhau.
File kubeconfig là một cấu hình quan trọng trong Kubernetes, đóng vai trò như một “chìa khóa” để kết nối từ máy của bạn đến các cluster Kubernetes. Nó chứa các thông tin cần thiết để xác thực danh tính người dùng, cấu hình kết nối đến các API server của cluster, và quản lý nhiều cấu hình kết nối khác nhau.
Cấu trúc của file kubeconfig¶
Một file kubeconfig thường bao gồm các phần sau:
clusters: Chứa thông tin về các cluster mà bạn muốn kết nối. Bao gồm địa chỉ API server, chứng chỉ CA, và các thông số khác.
users: Chứa thông tin về các user được xác thực để truy cập vào các cluster. Thông thường bao gồm các phương thức xác thực như token, chứng chỉ, hoặc mật khẩu.
contexts: Là một cấu hình tổng hợp, bao gồm một cluster cụ thể, một user cụ thể, và một namespace mặc định. Việc sử dụng context giúp bạn dễ dàng chuyển đổi giữa các cluster và user khác nhau.

Ví dụ về một file kubeconfig¶
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: /path/to/production/ca.crt
server: https://api.example.k8s.sunteco.cloud
name: sks-k8s-defau
contexts:
- context:
cluster: sks-k8s-defau
user: sks-k8s-defau-admin
name: sks-k8s-defau
current-context: sks-k8s-defau
kind: Config
preferences: {}
users:
- name: sks-k8s-defau-admin
user:
token: example-token
Cách Hoạt Động của Kubeconfig¶
Khi bạn chạy một lệnh kubectl
, công cụ này sẽ:
Tìm
kubeconfig
theo thứ tự ưu tiên:File được chỉ định bằng biến môi trường
KUBECONFIG
.Tệp mặc định tại
$HOME/.kube/config
.
Đọc và phân tích tệp
kubeconfig
.Dựa vào
current-context
, xác định cluster, user, và namespace cần sử dụng.Kết nối với API server của cluster bằng thông tin trong
kubeconfig
.
Ví dụ: Để sử dụng một tệp kubeconfig nằm tại đường dẫn /path/to/kubeconfig
, bạn có thể chạy lệnh như sau:
kubectl --kubeconfig=path/to/kubeconfig get pods

Lưu ý khi làm việc với kubeconfig¶
Bảo mật: File kubeconfig chứa thông tin nhạy cảm như token hoặc mật khẩu. Hãy bảo mật file này cẩn thận, tránh để lộ ra bên ngoài.
Cấu hình phức tạp: Đối với các môi trường phức tạp, file kubeconfig có thể trở nên rất lớn và khó quản lý. Bạn có thể sử dụng các công cụ quản lý cấu hình để đơn giản hóa việc quản lý file này.
Nhiều file kubeconfig: Bạn có thể sử dụng nhiều file kubeconfig để quản lý các cấu hình kết nối khác nhau. Để chỉ định file kubeconfig khi thực thi lệnh kubectl, bạn sử dụng flag
--kubeconfig
.
Kubeconfig là công cụ tuyệt vời giúp bạn tránh được việc gõ các tham số dài dòng và phức tạp mỗi lần truy cập Kubernetes cluster. Thay vì nhớ từng đường dẫn chứng chỉ, URL API server, hay token xác thực, bạn chỉ cần một tệp kubeconfig duy nhất để lưu mọi thông tin cần thiết.
Nhờ kubeconfig, bạn:
Tiết kiệm thời gian: Không cần phải nhập lặp đi lặp lại các tham số như
--certificate-authority
,--client-certificate
, hay--server
.Tránh lỗi: Các lỗi sai do gõ nhầm được giảm thiểu đáng kể, đặc biệt khi thao tác trên nhiều cụm hoặc nhiều tài khoản người dùng.
Quản lý dễ dàng: Với kubeconfig, bạn có thể định cấu hình nhiều cluster, người dùng và ngữ cảnh trong một file duy nhất, sau đó chuyển đổi giữa chúng một cách linh hoạt bằng lệnh
kubectl config use-context
.Tăng năng suất: Các công cụ như
kubectl
hoặccurl
sẽ tự động lấy thông tin từ kubeconfig, giúp bạn tập trung vào công việc chính mà không phải loay hoay thiết lập thông tin xác thực mỗi lần.
Hiểu rõ kubeconfig
giúp bạn quản lý hiệu quả các Kubernetes cluster và đảm bảo sự an toàn, linh hoạt trong việc vận hành chúng.