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
Bước 1: Cài đặt nginx ingress controller vào cluster Kubernetes của bạn
#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

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
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
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
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
Tạo file
03-demoapp-deployment.yaml
để tạo deployment cho demoapp
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
Tạo file
04-demoapp-service.yaml
để tạo service cho demoapp
apiVersion: v1
kind: Service
metadata:
name: demoapp
namespace: demoapp
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8080
selector:
app: demoapp
Tạo file
05-demoapp-ingress.yaml
để tạo ingress cho 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
Áp dụng tất cả các manifests
cd demoapp
kubectl apply -f .

Tạo bản ghi DNS cho demoapp
Name: <ingress-host>
Address: 42.113.xx.xx (EXTERNAL-IP của ingress nginx)

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>

Last updated