k8s中有多种ingress controller,在这儿介绍ingress-nginx controller的安装和使用
系统:mac pro
k8s:kind(kubernetes in docker),kind安装过程见https://kind.sigs.k8s.io/docs/user/quick-start/
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
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配置中,也会报 ingress does not contain a valid Ingress Class 错误
# defaultBackend:
# service:
# name: nginx-service
# port:
# number: 80
rules:
- http:
paths:
- path: /test
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80
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