Ingress
必须具有 Ingress 控制器 才能满足 Ingress 的要求。 仅创建 Ingress 资源本身没有任何效果。
需要部署 Ingress 控制器,例如 ingress-nginx。 你可以从许多 Ingress 控制器 中进行选择。
理想情况下,所有 Ingress 控制器都应符合参考规范。但实际上,不同的 Ingress 控制器操作略有不同。
部署 Ingress 控制器
mandatory.yaml
1 | apiVersion: v1 |
service-nodeport.yaml
1 | apiVersion: v1 |
创建 ingress-nginx
1 | [root@k8s-master-192 ingress-nginx]# kubectl apply -f ./ |
准备service 和 pod
为了方便后续的实验,创建下图所示的模型
创建 tomcat-nginx.yaml
1 | apiVersion: apps/v1 |
1 | [root@k8s-master-192 ingress-nginx]# kubectl apply -f tomcat-nginx.yaml |
Http代理
创建ingress-http.yaml
1 | apiVersion: extensions/v1beta1 |
使用配置文件
1 | [root@k8s-master-192 ingress-nginx]# kubectl apply -f ingress-http.yaml |
修改本机的hosts文件,添加如下内容
1 | master虚拟机的IP地址 nginx.test.com |
查看ingress为service提供的端口号
1 | [root@k8s-master-192 ingress-nginx]# kubectl get svc -n ingress-nginx|grep ingress-nginx |
在浏览器中测试访问, 是能够访问通
Https代理
创建证书
1 | [root@k8s-master-192 ingress-nginx]# openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/C=CN/ST=BJ/L=BJ/O=nginx/CN=test.com" |
创建密钥
1 | [root@k8s-master-192 ingress-nginx]# kubectl create secret tls tls-secret --key tls.key --cert tls.crt |
创建 ingress-https.yaml
1 | apiVersion: extensions/v1beta1 |
使用配置文件
1 | [root@k8s-master-192 ingress-nginx]# kubectl create -f ingress-https.yaml |
获取端口,左边的是http使用的端口,右边是https使用的端口,因此要使用的端口是30499
1 | [root@k8s-master-192 ingress-nginx]# kubectl get svc -n ingress-nginx|grep ingress-nginx |
使用浏览器访问