在前兩篇簡單操作了阿里上面的ACK服務,今天要分享的是使用ingress,怎麼用一個IP去分享多個服務出去,讓使用更加方便
Ingress
使用Service和Ingress都將Kubernetes集群內的多個服務公開給外部客戶端。其關鍵在於IP地址,如果使用 Service,每個Kubernetes服務都需要一個獨立的IP地址,但在使用Ingress時,只要用一個公共IP地址就能將Kubernetes集群內的多個服務公開給外部客戶端

一樣要先創建集群,參考(DAY25)的操作範例,唯一不一樣的地方要在第一頁額外去勾選EIP連接點
vim nginx.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.12.2
vim tomcat.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: tomcat
spec:
  replicas: 2
  selector:
    matchLabels:
      app: tomcat
  template:
    metadata:
      labels:
        app: tomcat
    spec:
      containers:
      - name: tomcat
        image: tomcat:8.5
kubectl create -f nginx.yaml
kubectl create -f tomcat.yaml

4. 創建nginx的yaml
vim nginx-serivce.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  ports:
  - port: 81
    targetPort: 80
  selector:
    app: nginx
vim tomcat-serivce.yaml
apiVersion: v1
kind: Service
metadata:
  name: tomcat-service
spec:
  ports:
  - port: 82
    targetPort: 8080
  selector:
    app: tomcat
kubectl create -f nginx-serivce.yaml
kubectl create -f tomcat-serivce.yaml

7. 檢查一下pod是否正常
kubectl get pods

8. 再來我們要建立Ingress,根據域名來訪問這些服務
vim ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
spec:
  rules:
  - host: nginx.a.com
    http:
      paths:
      - path: /
        backend:
          serviceName: nginx-service
          servicePort: 81
  - host: tomcat.b.com
    http:
      paths:
      - path: /
        backend:
          serviceName: tomcat-service
          servicePort: 82
kubectl create -f ingress.yaml

kubectl get ingress

vim /etc/hosts

curl nginx.a.com
curl tomcat.b.com


這樣就完成了透過同一IP去輸出兩個網站,後面如果要刪除資源,可以依照(DAY26)後面的分享去刪除,可以依照這簡單lab再去做變化,就可以得到更深的了解