Cấu hình Port Forwarding truy cập ứng dụng trong Kubernetes Cluster – Cuongquach.com | Kubectl port-foward sẽ giúp bạn truy cập và tương tác với những dịch vụ Pod đang được chạy trên Kubernetes Cluster từ localhost của bạn. Phương pháp này thường được sử dụng để debug các vấn đề phát sinh liên quan đến dịch vụ, mà không được phép public dịch vụ đó ra ngoài. Về Port-forwarding là gì bạn có thể tham khảo tại đây : https://en.wikipedia.org/wiki/Port_forwarding
Thao tác cấu hình Port-Forwarding với Kubernetes Cluster
Các mục đích của việc sử dụng Port Fowarding
thường là :
- Bạn có ứng dụng nội bộ, cần bảo mật,.. không cho public ra ngoài. Nên chỉ có thể truy cập từ máy chủ nội bộ qua VPN hay văn phòng.
- Đó có thể là ứng dụng web, cũng có thể là ứng dụng database như redis, postgresql,..
- Bạn có thể mở port forward từ localhost laptop đến dịch vụ nội bộ đó. Từ đấy giúp bạn quản lý từ laptop hoặc đơn giản là dễ dàng debug các vấn đề phát sinh với dịch vụ nội bộ đó thông quan port dịch vụ với port localhost (tunnel port forwarding)
Kubectl là một trong những công cụ chương trình lệnh chính dùng để tương tác quản lý các Kubernetes Cluster. Chương trình giúp bạn triển khai các ứng dụng, quản lý các thành phần hệ thống Kubernetes Cluster,…
Quy trình của hoạt động Port Forward với kubectl
đơn giản như sau :
- Người dùng sử dụng lệnh
kubectl
để khởi tạo Port-fowarding đến port của Pod/Deployment/Service trên Kubernetes Cluster. - Kubernetes API sẽ tiến hành khởi tạo một Tunnel Connection giữa localhost của bạn với resource đang chạy trên Kubernetes Cluster.
- Các đối tượng trong Kubernetes Cluster bạn có thể tương tác qua Port-forwarding
kubectl
: Deployment/Pod/Service/ReplicaSet.
Cấu hình Port Forwarding với kubectl
Cú pháp lệnh port-foward
sẽ giúp khởi tạo một Tunnel từ Pod được chỉ định đến localhost đang chạy lệnh port-forward. Từ đó bạn có thể truy cập ứng dụng dịch vụ thông qua port local đến port Pod.
Cú pháp:
# kubectl port-forward TYPE/NAME [options] LOCAL_PORT:REMOTE_PORT
Giờ chúng ta sẽ tạo một Deployment service để dễ thử nghiệm nhé. Mình sẽ chọn service Grafana, có giao diện để truy cập web dashboard từ localhost laptop thử nhé.
# kubectl create deployment grafana --image=docker.io/grafana/grafana:7.0.0 # cat << EOF > grafana-service.yaml apiVersion: v1 kind: Service metadata: name: grafana-service spec: selector: app: grafana ports: - port: 3000 targetPort: 3000 EOF # kubectl apply -f grafana-service.yaml service/grafana-service created
Sau đó bạn kiểm tra xem Deployment và Pod Grafana đã chạy chưa :
# kubectl get deployments NAME READY UP-TO-DATE AVAILABLE AGE grafana 1/1 1 1 46s # kubectl get pod -A | grep -i "grafana" default grafana-6d559d4bbb-ntnvr 1/1 Running 0 25m
Bình thường để có thể truy cập được Grafana Dashboard, thì dịch vụ này cần được cấu hình để có thể truy cập từ ngoài Kubernetes Cluster. Nhưng mặc định ban đầu bạn chỉ có thể truy cập từ bên trong Kubernetes Cluster vì Grafana đang được cấu hình ClusterIP.
# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE grafana-service ClusterIP 10.101.180.227 <none> 3000/TCP 6s
Vì vậy, điều này giúp thực hành cho nhu cầu sử dụng Port Forwarding dễ hiểu hơn. Bằng cách thực hiện mở local port forwarding đến port web dashboard của dịch vụ Grafana.
Giờ ta đã có thông tin chính xác của Namespace và Pod/Deployment/Service Grafana đang chạy nhé ở các output lệnh trên.
+ Sử dụng port local forwarding cụ thể (:8080)
Chúng ta sẽ mở port-forwarding đến port 3000 của Pod Grafana với local host port là 8080.
# kubectl port-forward -n default pods/grafana-6d559d4bbb-ntnvr 8080:3000 Forwarding from 127.0.0.1:8080 -> 3000 Forwarding from [::1]:8080 -> 3000
hoặc port-forward đến Deployment Grafana.
# kubectl port-forward -n default deployment/grafana 8080:3000
hoặc port-foward đến Service Grafana.
# kubectl port-forward -n default service/grafana-service 8080:3000
Kết quả truy cập port 8080 trên laptop thử.
+ Sử dụng port local forwarding ngẫu nhiên
# kubectl port-forward -n default deployment/grafana :3000 Forwarding from 127.0.0.1:51948 -> 3000 Forwarding from [::1]:51948 -> 3000
Nguồn: https://cuongquach.com/