Truy cập giao diện HashiCorp Vault trong Kubernetes với LoadBalancer
Sau khi triển khai thành công Vault trong Kubernetes với High Availability (HA) và lưu trữ Raft, việc truy cập an toàn vào giao diện Vault UI là bước quan trọng tiếp theo để quản lý và sử dụng.
Bài viết này sẽ hướng dẫn bạn cách công khai giao diện Vault UI ra bên ngoài bằng cách sử dụng dịch vụ LoadBalancer trong Kubernetes.
Tại sao nên sử dụng dịch vụ LoadBalancer?
- Giao diện Vault UI chạy trên cổng 8200 của dịch vụ Vault.
- Theo mặc định, biểu đồ Helm của Vault tạo ra một dịch vụ
ClusterIP
, chỉ có thể truy cập bên trong cụm Kubernetes. - Dịch vụ
LoadBalancer
cung cấp một địa chỉ IP bên ngoài được quản lý bởi nhà cung cấp đám mây, cho phép truy cập từ bên ngoài vào giao diện Vault UI. - Điều này đơn giản hóa việc truy cập qua trình duyệt và tích hợp với hạ tầng của bạn.
Bước 1: Tạo tệp cấu hình dịch vụ LoadBalancer
Tạo một tệp có tên vault-loadbalancer.yaml
với nội dung sau:
yaml
apiVersion: v1
kind: Service
metadata:
name: vault-loadbalancer
namespace: vault
spec:
type: LoadBalancer
ports:
- name: http
port: 8200
targetPort: 8200
- name: cluster
port: 8201
targetPort: 8201
selector:
app.kubernetes.io/name: vault
Bước 2: Áp dụng dịch vụ LoadBalancer
Áp dụng tệp cấu hình:
bash
kubectl apply -f vault-loadbalancer.yaml -n vault
Bước 3: Lấy địa chỉ IP bên ngoài
Kiểm tra dịch vụ và chờ đợi địa chỉ IP bên ngoài được cấp:
bash
kubectl get svc vault-loadbalancer -n vault
Kết quả sẽ trông giống như sau:
plaintext
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
vault-loadbalancer LoadBalancer 10.x.x.x <external-ip> 8200:xxxxx/TCP 1m
Khi <external-ip>
được cập nhật, bạn có thể tiếp tục.
Bước 4: Truy cập giao diện Vault UI
Mở trình duyệt của bạn và điều hướng đến:
plaintext
http://<external-ip>:8200/ui
Bạn sẽ thấy trang đăng nhập giao diện Vault UI.
Bước 5: Đăng nhập bằng Vault Token
- Sử dụng token root hoặc bất kỳ token Vault hợp lệ nào được tạo trong quá trình khởi tạo Vault.
- Nhập token vào màn hình đăng nhập để truy cập giao diện UI.
Tùy chọn: Bảo mật giao diện Vault UI
- Kích hoạt TLS trên máy chủ Vault của bạn để mã hóa lưu lượng giao diện.
- Sử dụng Kubernetes Ingress với TLS termination để kiểm soát tốt hơn.
- Giới hạn quyền truy cập bằng cách sử dụng quy tắc tường lửa hoặc VPN.
Giải pháp thay thế cho phát triển
Để truy cập nhanh chóng mà không cần LoadBalancer:
bash
kubectl port-forward svc/vault -n vault 8200:8200
Sau đó mở:
plaintext
http://127.0.0.1:8200/ui
Kết luận
Việc sử dụng dịch vụ LoadBalancer trong Kubernetes để công khai giao diện Vault UI cung cấp quyền truy cập bên ngoài thuận tiện cho người dùng và quản trị viên. Hãy kết hợp điều này với các thực hành bảo mật tốt cho các triển khai sản xuất.
Câu hỏi thường gặp (FAQ)
1. Dịch vụ LoadBalancer có miễn phí không?
Dịch vụ LoadBalancer thường không miễn phí. Bạn cần kiểm tra chính sách giá của nhà cung cấp đám mây của mình.
2. Tôi có thể sử dụng cách nào khác để truy cập Vault không?
Có, bạn có thể sử dụng kubectl port-forward
để truy cập tạm thời mà không cần LoadBalancer.
3. Làm thế nào để bảo mật Vault UI?
Bạn có thể kích hoạt TLS và sử dụng tường lửa để bảo vệ giao diện Vault UI của mình.
Các thực tiễn tốt nhất
- Luôn sử dụng các token mạnh và hạn chế quyền truy cập.
- Theo dõi và ghi nhật ký tất cả các lần truy cập vào giao diện Vault UI.
- Cập nhật thường xuyên các thành phần của Vault và Kubernetes để bảo mật.
Những cạm bẫy thường gặp
- Không cấu hình đúng quyền truy cập có thể dẫn đến rủi ro bảo mật.
- Quên áp dụng các bản vá bảo mật có thể khiến hệ thống dễ bị tấn công.
Mẹo hiệu suất
- Đảm bảo các tài nguyên của Kubernetes được phân bổ hợp lý cho dịch vụ Vault để tối ưu hóa hiệu suất.
- Theo dõi hiệu suất của Vault UI để phát hiện các sự cố kịp thời.