All pages
Powered by GitBook
1 of 1

Loading...

5. Triển khai ứng dụng demo với persistence volume và public app qua ingress controller

Tổng quan

Hướng dẫn từng bước về cách triển khai ứng dụng demo trên HI GIO Kubernetes.

  • Cài đặt nginx ingress controller vào cluster Kubernetes của bạn. Việc cài đặt nginx ingress controller sẽ tự động tạo 2 Virtual services (80, 443) trong HI GIO LB.

  • Triển khai ứng dụng demo với persistent volume vào Kubernetes cluster và public app qua ingress nginx.

Quy trình

  • Helm (v3 trở lên)

  • Đảm bảo có ít nhất 1 IP public khả dụng

  • Có một Storage Class mặc định

  • Có quyền truy cập vào cluster Kubernetes của bạn

1

Bước 1: Cài đặt nginx ingress controller vào cluster Kubernetes của bạn

  • Xác minh trạng thái của pod là Running và service ingress-nginx-controller đã thành công lấy được EXTERNAL IP

2

Bước 2: Triển khai ứng dụng demo với persistent volume vào Kubernetes cluster và public ứng dụng qua nginx ingress

  • Cấu trúc thư mục ứng dụng demo

demoapp 
├── 01-demoapp-namespace.yaml
├── 02-demoapp-pvc.yaml
├── 03-demoapp-deployment.yaml
├── 04-demoapp-service.yaml
└── 05-demoapp-ingress.yaml
  • Tạo file 01-demoapp-namespace.yaml để tạo namespace cho demoapp

apiVersion: v1
kind: Namespace
metadata:
  name: demoapp
  • Tạo file 02-demoapp-pvc.yaml để tạo Persistent Volume Claim

  • Tạo file 03-demoapp-deployment.yaml để tạo deployment cho demoapp

  • Tạo file 04-demoapp-service.yaml để tạo service cho demoapp

  • Tạo file 05-demoapp-ingress.yaml để tạo ingress cho demoapp

  • Áp dụng tất cả các manifests

  • Tạo bản ghi DNS cho demoapp

  • Nếu tất cả các cấu hình là chính xác, bạn có thể truy cập ứng dụng của mình qua tên miền

http://<ingress-host>

#Add repo ingress-nginx
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx 
helm repo update ingress-nginx
#Install ingress nginx
helm install ingress-nginx ingress-nginx/ingress-nginx \
		--namespace ingress-nginx \
		--set controller.service.appProtocol=false \
		--create-namespace
kubectl get all -n ingress-nginx

CNI driver trên Kubernetes tự động tạo Virtual services trên HI GIO LB và 2 DNAT rules (80, 443) trên vCD.

Vui lòng thay đổi firewall của VPC để cho phép truy cập vào các dịch vụ ảo của ingress. Điều này cung cấp quyền truy cập vào ứng dụng của bạn được publish qua nginx ingress.

Tham khảo: Sử dụng Edge Gateway Firewall

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: demoapp-pvc
  namespace: demoapp
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: default-storage-class-1 #adjust to use your storage class
apiVersion: apps/v1
kind: Deployment
metadata:
  name: demoapp
  namespace: demoapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: demoapp
  template:
    metadata:
      labels:
        app: demoapp
    spec:
      containers:
      - name: demoapp
        image: paulbouwer/hello-kubernetes:1.8
        ports:
        - containerPort: 8080
        volumeMounts:
        - mountPath: /data
          name: demoapp-storage
      volumes:
      - name: demoapp-storage
        persistentVolumeClaim:
          claimName: demoapp-pvc
apiVersion: v1
kind: Service
metadata:
  name: demoapp
  namespace: demoapp
spec:
  type: ClusterIP
  ports:
  - port: 80
    targetPort: 8080
  selector:
    app: demoapp
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demoapp-ingress
  namespace: demoapp
spec:
  ingressClassName: nginx
  rules:
  - host: demoapp.cloud.net.vn #adjust to use your domain
    http:
      paths:
      - backend:
          service:
            name: demoapp
            port:
              number: 80
        path: /
        pathType: Prefix
cd demoapp
kubectl apply -f .
Name: <ingress-host>
Address: 42.113.xx.xx  (EXTERNAL-IP của ingress nginx)