在之前docker的介紹是用nginx來處理incoming request,kubernetes把處理request抽象化成一個物件
處理kubernetes外部requests並導到對應的Cluster IP Service需要用到Ingress Service。
同樣在kubernetes也推薦使用nginx,但並不是向前面指定nginx image,然後用Deployment跑起來,
因為在kubernetes要修改nginx image下nginx.conf,並不是向在docker裡面那麼直觀,
所以也就有community寫好的yaml檔(https://github.com/kubernetes/ingress-nginx/)
教學參考官網https://kubernetes.github.io/ingress-nginx Deployment部分
必要的Generic Deployment
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml
結果:
在local測試只要套用Generic設定檔
部署到Google Cloud、AWS、Azure的話要另外套用對應的cloud provider,啟用Loading Balancing feature
再來是要建立類似routing設定檔,要告訴kubernetes,request url跟cluster service的對應關係,例如:
建立ingress-deployment.yaml
apiVersion: extensions/v1beta1 # 新"名詞"要再研究
kind: Ingress
metadata:
name: ingress-service
annotations: # 新"名詞"要再研究
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths: # 以下就是不同path對應的clusterip-service
- path: /
backend:
serviceName: frontend-service
servicePort: 4200
- path: /api
backend:
serviceName: nestjsapi-service
servicePort: 5000
最後要minikube enable ingress
minikube enable ingress