注意:环境信息参考专栏描述
一、收集信息
获取 k8s 兼容的 ingress-nginx 版本:
https://github.com/kubernetes/ingress-nginx
二、部署 ingress-nginx
# 获取 ingress-nginx 兼容版本的 chart 包
wget https://github.com/kubernetes/ingress-nginx/releases/download/helm-chart-4.0.13/ingress-nginx-4.0.13.tgz
# 根据需求修改values.yaml
sed -i '/digest/d' values.yaml
sed -i 's/k8s.gcr.io/registry.cn-hangzhou.aliyuncs.com/' values.yaml
sed -i 's#image: ingress-nginx#image: google_containers#' values.yaml
values.yaml 改动部分
57 dnsPolicy: ClusterFirstWithHostNet
80 hostNetwork: true
182 kind: DaemonSet
280 nodeSelector:
281 kubernetes.io/os: linux
# 此处标签不加引号的话,helm install 会报错。
282 ingress: "true"
491: type: ClusterIP
# 给需要暴露ingress-nginx的节点打标签
kubectl label node k8s-master01 ingress=true
docker pull liangjw/ingress-nginx-controller:v1.1.0
docker tag liangjw/ingress-nginx-controller:v1.1.0 registry.cn-hangzhou.aliyuncs.com/google_containers/controller:v1.1.0
# helm 部署ingress-nginx
helm upgrade --install ingress-nginx --namespace ingress-nginx --create-namespace .
# 确认pod正常启动
kubectl get pod -n ingress-nginx
三、验证测试
# 创建测试deployment
kubectl create deployment nginx --image=nginx
# 创建测试svc
kubectl expose deployment nginx --port=80 --type=NodePort
# 创建 ingress
cat ingress-nginx.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx
spec:
ingressClassName: nginx
rules:
- host: example.tpaas.local
http:
paths:
- backend:
service:
name: nginx
port:
number: 80
path: /
pathType: Prefix
kubectl apply -f ingress-nginx.yaml
# 验证能否通过ingress-nginx获取到页面内容
curl 192.168.206.110(controller所在节点IP) -H host:example.tpaas.local