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.yamlapiVersion: 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