NGINX Ingress Controller
NGINX Kubernetes Ingress Controller là một ingress hỗ trợ khả năng căn bằng tải, SSL, URI rewrite ...
Ingress Controller được cung cấp bởi Nginx là một proxy nổi tiếng, mã nguồn của Nginx Ingress Controller trên github tại: nginxinc/kubernetes-ingress
Hướng dẫn cài đặt cơ bản trên Document của nó tại: installation-with-manifests
Cài đặt NGINX Ingress Controller
Từ tài liệu hướng dẫn, sẽ triển khai Nginx Ingress Controller bằng cách triển khai các manifest (yaml) từ mã nguồn tại nginxinc/kubernetes-ingress, truwowjct tiên tải về bộ mã nguồn này bằng Git (xem sử dụng git):
git clone git@github.com:nginxinc/kubernetes-ingress.git # vào thư mục tải về cd kubernetes-ingress
Các menifest (yaml) cần triển khai ở trong thư mục deployments, hãy vào thư mục này
cd deployments
Sau đó triển khai bằng các lệnh sau:
kubectl apply -f common/ns-and-sa.yaml kubectl apply -f common/default-server-secret.yaml kubectl apply -f common/nginx-config.yaml kubectl apply -f rbac/rbac.yaml kubectl apply -f daemon-set/nginx-ingress.yaml
Kiểm tra daemonset và các pod của Nginx Ingress Controller
kubectl get ds -n nginx-ingress kubectl get po -n nginx-ingress
Ví dụ tạo Ingress
Triển khai lại các vị dụ có trong phần Ví dụIngress Haproxy, nhưng chỉnh sửa lại một chút để dùng Nginx Ingress Controller
1.app-test.yaml
apiVersion: v1
kind: Service
metadata:
name: http-test-svc
namespace: nginx-ingress
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: http-test-app
sessionAffinity: None
type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
run: http-test-svc
name: http-test-svc
namespace: nginx-ingress
spec:
replicas: 2
selector:
matchLabels:
run: http-test-app
template:
metadata:
labels:
run: http-test-app
spec:
containers:
- image: httpd
imagePullPolicy: IfNotPresent
name: http
ports:
- containerPort: 80
protocol: TCP
resources: {}
Tạo Ingress, chuyển hướng truy vấn vào ứng dụng trên khi truy cập bằng tên miền xuanthulab.test với giao
thức http
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: app
namespace: nginx-ingress
spec:
rules:
# Tên miền truy cập
- host: xuanthulab.test
http:
paths:
- path: /
backend:
# dịch vụ phục vụ tương ứng với tên miền và path
serviceName: http-test-svc
servicePort: 80
Hãy truy cập và kiểm tra từ trình duyệt đến địa chỉ http://xuanthulab.test
Triển khai SSL truy cập bằng https, ở đây sử dụng chính các xác thực lưu trong Secret có tên default-server-secret,
đi kèm Nginx Ingress Controller (hoặc tự tạo theo ví dụ trước).
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: app
namespace: nginx-ingress
spec:
tls:
- hosts:
- xuanthulab.test
secretName: default-server-secret
# - hosts:
# - otherdomain.coms
# secretName: otherssl-ssl
rules:
- host: xuanthulab.test
http:
paths:
- path: /
backend:
serviceName: http-test-svc
servicePort: 80
