Ingress, HAProxy Ingress (Bài trước)
(Bài tiếp) Rancher 2

NGINX Ingress Controller

ingress nginx 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

2.app-test-ingress.yaml
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).

3.app-test-ingress-ssl.yaml
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

Đăng ký nhận bài viết mới
Ingress, HAProxy Ingress (Bài trước)
(Bài tiếp) Rancher 2