背景:
对于k8s对外暴露 服务的方式有 nodeport ,loadbalance ,ingress
本文使用 nginx-ingress体验对外暴露服务
实验
1.部署nginx-controller
使用helm chart
1.helm repo add bitnami https://charts.bitnami.com/bitnami
2.helm search nginx-ingress-controller
[root@master01 ingress]# helm search nginx-ingress-controller
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami/nginx-ingress-controller 5.2.0 0.26.1 Chart for the nginx Ingress controller
library/nginx-ingress-controller 4.0.1 0.24.1 Chart for the nginx Ingress controller
local/nginx-ingress-controller 5.2.0 0.26.1 Chart for the nginx Ingress controller
stable/nginx-lego 0.3.1 Chart for nginx-ingress-controller and kube-lego
3. helm install bitnami/nginx-ingress-controller
部署好ingress-controller之后查看 对外提供入口服务地址
[root@master01 ingress]# kubectl get svc -n ingress
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-controller-nginx-ingress-controller LoadBalancer 10.104.232.71 192.168.200.221 80:32530/TCP,443:30828/TCP 94m
ingress-controller-nginx-ingress-controller-default-backend ClusterIP 10.102.170.57 <none> 80/TCP 94m
编写 ingress资源文件
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: cfss-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: ingress.test.com
http:
paths:
- backend:
serviceName: svc1
servicePort: 8080
path: /svc1
- backend:
serviceName: svc2
servicePort: 8080
path: /svc2
注意:path的实际路径是要有对应的实际服务路径的,不然就要启用URL rewrite功能
之后部署ingress ,本地添加host文件,既可以使用ingress.test.com/svc1,ingress.test.com/svc2 访问服务