Kubernetes 6 ( ingress 服务加密、认证、地址重写 )

一、Ingress服务简介

单独用service暴露服务的方式,在实际生产环境中不太适用。
ClusterIP的方式只能在集群内部访问;NodePort方式,当服务在集群中运行过多时,NodePort的端口管理是灾难;LoadBalance方式受限于云平台,且通常在云平台部署ELB还需要额外的费用。

一种全局的、为了代理不同后端 Service 而设置的负载均衡服务,就是 Kubernetes 里的Ingress 服务。Ingress由两部分组成:Ingress controller和Ingress服务。

Ingress Controller 会根据你定义的 Ingress 对象,提供对应的代理能力。业界常用的各种反向代理项目,比如 Nginx、HAProxy、Envoy、Traefik 等,都已经为Kubernetes 专门维护了对应的 Ingress Controller。

ingress服务的使用必须在策略网络中才能实现,如calico网络
在这里插入图片描述

二、ingress部署

用deployment控制器部署ingress-controller,创建一个LoadBalancer类型的service关联这组pod。LoadBalancer的service绑定了公网地址。真机进行域名解析之后,即可实现集群服务的对外暴露

真机将ingress的安装包发送给server1
请添加图片描述
server2建立存放deploy.yaml资源清单的目录
请添加图片描述
真机将ingress-nginx部署所需资源清单文件deploy.yaml发送给server2
请添加图片描述
在仓库中添加项目ingress-nginx
请添加图片描述
server1导入镜像,并将ingress相关镜像上传至仓库
请添加图片描述
server2修改yaml文件的镜像版本
请添加图片描述
请添加图片描述
执行deploy.yaml清单
请添加图片描述
查看所有namespace,可以看到新创建的ingress-nginx请添加图片描述
查看ingress-nginx的所有信息,可以看到ingress-nginx-controller已经running
请添加图片描述
查看svc暴露端口为31074
请添加图片描述
客户端测试访问server2的31074端口,访问成功
请添加图片描述

三、ingress管理多个service

编写ingress.yaml文件,指定www1.westos.org对应的服务是myapp-svc
请添加图片描述
编辑svc.yaml文件,对应镜像是v1版本;
应用svc.yaml文件,查看服务,看到新创建的myapp-svc服务,集群ip是10.99.67.192
请添加图片描述
删除之前的ns.yaml配置文件以及相关ns,查看网络策略,已经清空;
查看myapp-svc的详细信息,ip为10.96.67.192,测试访问,可以看到访问成功
请添加图片描述
现在应用刚刚编辑的ingress.yaml配置,可以看到ingress-demo被创建
请添加图片描述
查看ingress-demo详细信息,可以看到域名为www1.westos.org,后端服务是myapp-svc,有三个服务后端实现负载均衡
请添加图片描述
修改 ingress-nginx-controller的服务类型为LoadBalancer
请添加图片描述
请添加图片描述
查看服务的类型已经变成了LoadBalancer,外部访问地址为172.25.36.20
请添加图片描述
在真机上加上本地解析;
访问域名,可以实现负载均衡
请添加图片描述
编辑deployment.yaml文件,指定镜像为myapp:v1,标签为nginx,副本为3个;
列出所有pod并查看标签,可以看到有标签为myapp的pod和标签为nginx的pod各有3个
请添加图片描述
编辑svc.yaml,配置nginx服务和myapp服务
请添加图片描述
应用配置,查看服务
请添加图片描述
查看myapp服务和nginx服务的详细信息
请添加图片描述
请添加图片描述
继续编写ingress.yaml文件,赋予域名匹配,用于匹配两个不同的service
请添加图片描述
应用该配置
请添加图片描述
此时有两个ingress信息
请添加图片描述
请添加图片描述
真机配置域名解析;
测试访问域名,可以访问到对应的service,且负载均衡
请添加图片描述
连接到ingress-nginx-controller容器,查看nginx.conf配置文件,可以看到nginx的服务代理
请添加图片描述
controller始终监听k8s的信息变更,把所作的配置动态加入ingress的/etc/nginx下的nginx配置文件
请添加图片描述
请添加图片描述

四、ingress管理多个service

现在想通过443端口HTTPS方式(加密)来访问服务,删除ingress-nginx,留下ingress-myapp用于实验测试
请添加图片描述
请添加图片描述
server2在ingress目录下生成证书和密钥
请添加图片描述
用生成的证书和key创建tls-secrets(secrets对应密钥)
请添加图片描述
编辑ingress文件,将前面的www2.westos.org部分注释掉,修改 www1.westos.org部分,使得用户在访问指定域名时重定向到指定tls端口,利用给定的tls-secrets走加密路径访问
请添加图片描述
执行ingress.yaml文件,并查看信息,可以看到已经配置了TLS加密
请添加图片描述
在真机上访问curl www1.westos.org,发现是308:表示重定向
在这里插入图片描述
curl www1.westos.org -I 查看重定向地址,查看到已经重定向到了httpds://www1.westos.org
在这里插入图片描述
curl命令不支持重定向(需要加-k参数),访问httpds://www1.westos.org
在这里插入图片描述

五、Ingress认证

因为认证需要系统自带的认证功能,因此安装httpd-tools认证生成插件
请添加图片描述创建认证用户和密钥;
导入到新创建的secret中
请添加图片描述
查看所有secrets,可以刚才创建的secret
请添加图片描述
编辑文件ingress.yaml导入证书(在元数据下加入认证设置,设定认证类型以及认证的secrets)
在这里插入图片描述
执行ingress清单,查看证书信息是否已添加
在这里插入图片描述
访问测试,浏览器访问:www1.westos.org,发现需要输入账号和密码才可以登陆
在这里插入图片描述

六、Ingress地址重写

目的:把默认的发布页地址重写为一个特定的网页
修改文件ingress.yaml,将根目录重新定向到/hostname.html
请添加图片描述
进入myapp镜像中的容器
在这里插入图片描述
可以看到,/hostname.html就是/etc/hostname的别名,ingress.yaml文件中写/hostname.html,就等于写/etc/hostname,用来查看主机名
在这里插入图片描述
查看/etc/hostname,内容是myapp-deployment;
应用配置
在这里插入图片描述
客户端测试,访问www1.westos.org自动地址重写为www1.westos.org/hostname.html,改变了默认发布目录
请添加图片描述
当既有TLS安全访问也有地址重写,地址重写先触发
请添加图片描述

采用上述方式写死路径,在以后修改的时候会很不方便,可以使用下面方法动态读取路径
/ $ 2表示抓取第二列输入内容,指向的页面一定是在后端真实存在的;
path: /westos(/|$)(.) ,表示自动抓取westos后的内容。
$2匹配的是(.)
,something关键字触发重定向机制
$2指向页面一定是在后端真实存在的

修改ingress.yaml文件
请添加图片描述
应用ingress
请添加图片描述
客户端访问www1.westos.org显示404,找不到页面;
访问www1.westos.org/westos可以正常访问(此时自动跳转到www1.westos.org,忽略westos)
请添加图片描述
使用浏览器访问
请添加图片描述
www1.westos.org/westos可以访问成功
请添加图片描述
既有TLS也有地址重写的情况下,哪一个会先触发呢;
修改ingress.yaml配置文件,将根目录重定向到westos
请添加图片描述
应用配置后,测试访问,可以看到先进行了重定向,再触发了TLS
请添加图片描述
-k访问443加密端口,显示需要认证;
-u 后跟认证用户和密码即可查看
请添加图片描述
访问成功
请添加图片描述
测试负载均衡
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值