在前兩篇簡單操作了阿里上面的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再去做變化,就可以得到更深的了解