经过一系列的线上踩坑,背锅等各种由于域名导致的线上事故之后,ingress nginx实在是不好用。
企业还是必须要经过一个更好用的api网关来统一管理域名
建议使用kong来架设多一层路由,解决ingress域名乱的问题:
https://github.com/Kong/kubernetes-ingress-controller
ingress nginx优劣势:
优势:简单,通过helm charts可以统一发布
缺点:每次更改,尤其是批量更改多个服务,就会发现有多蛋疼,面对各种svc,不同的path(项目路径),根本无法实现批量更改。
当企业ci/cd流程使用helmcharts来完成,必然暴露出各种无法管理的问题,企业域名必须要统一管理
ingress charts简单语法:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{xxx}}
labels:
app: {{xxx}}
chart: {{xxx}}
release: {{ xxx }}
heritage: {{ xxx }}
spec:
rules:
- host: {{xxx}}
http:
paths:
- path: /{{xxx}}
backend:
serviceName: {{xxx}}-svc
servicePort: 8080
path: 代表项目访问路径,如:/testproject/*
host: 代表域名,如:www.baidu.com
backend: 代表该ingress绑定的mvc
一个ingress可以有多个host标签,在hosts标签下
kubectl操作ingress简单指令:
以下指令都可以在后面新增空间名来指定空间:
-n [namespace]
查看ingress:
kubectl get ingress
查看ingress的yaml:
kubectl get ingress -o yaml
查看某个ingress的yaml:
kubectl get ingress -o wide
编辑某个ingress的yaml:
kubectl edit ingress [ingressName] -o yaml
查看某个ingress的描述:
kubectl describe ingress [ingressName]