簡介
k8s中有多種ingress controller肛冶,在這兒介紹ingress-nginx controller的安裝和使用
- ingress-nginx controller
- Apache APISIX Ingress 控制器
- HAProxy Ingress Controller
- Istio Ingress Controller
參考資料
安裝環(huán)境
系統(tǒng):mac pro
k8s:kind(kubernetes in docker)街氢,kind安裝過程見https://kind.sigs.k8s.io/docs/user/quick-start/
安裝過程
- 安裝ingress-nginx controller
yaml文件地址:https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.0/deploy/static/provider/cloud/deploy.yaml - 安裝web服務(wù),這兒以一個(gè)nginx集群為例
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: ingress-nginx
name: "nginx"
labels:
app: nginx
spec:
selector:
matchLabels:
app: nginx
replicas: 3
template:
metadata:
labels:
app: nginx
name: "nginx"
spec:
containers:
- image: "nginx"
name: "nginx"
ports:
- containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
namespace: ingress-nginx
name: "nginx-service"
labels:
app: nginx
spec:
selector:
app: nginx
ports:
- port: 80
targetPort: 80
protocol: TCP
- 安裝ingress睦袖,將web service配置珊肃、轉(zhuǎn)發(fā)規(guī)則、域名等信息加載到ingress-nginx controller中的nginx中
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: ingress-nginx
name: my-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx # 這一步需要指定ingressClassName馅笙,不然信息無法同步到nginx配置中近范,也會(huì)報(bào) ingress does not contain a valid Ingress Class 錯(cuò)誤
# defaultBackend:
# service:
# name: nginx-service
# port:
# number: 80
rules:
- http:
paths:
- path: /test
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80
- 暴露ingress-nginx controller到本機(jī)中,然后通過http://localhost:8080/test 即可訪問web服務(wù)(這兒是第二步安裝的nginx集群)
kubectl port-forward --namespace=ingress-nginx service/ingress-nginx-controller 8080:80
如果報(bào) failed calling webhook validate.nginx.ingress.kubernetes.io 錯(cuò)誤延蟹,可以修改ingress-nginx controller 部署文件的webhooks failurePolicy 為Ignore
webhooks:
- name: validate.nginx.ingress.kubernetes.io
matchPolicy: Equivalent
rules:
- apiGroups:
- networking.k8s.io
apiVersions:
- v1
operations:
- CREATE
- UPDATE
resources:
- ingresses
failurePolicy: Ignore
sideEffects: None
admissionReviewVersions:
- v1
clientConfig:
service:
namespace: ingress-nginx
name: ingress-nginx-controller-admission
path: /networking/v1/ingresses