七层代理
如果跟客户端想进行https的访问,我们完全不需要在每一台apache配置https,只要在nginx开启https认证即可,nginx反向代理走http协议
和对外部https加密
k8s中默认没有改方式。
如果采用svc 必须在每个apache配置https加密证书。才能在默认的svc里进行https会话连接。
k8s在1.11版本后推出了ingress的api接口。
当然也可以使用haproxy等,这里使用nginx反向代理
nginx如何跟后端svc连接?
依然是nodeport部署方案。
以内部服务暴露给外部用户。访问Nginx
再链接至不用的svc。
nginx的配置文件会自动添加。
api server需要跟store进行api监听状态。以协程pod的方式向API server发起链接的方案进行监听。发生新的更新会写入到循环队列中。nginx coontroller会监听updatechannel的资源实践。发生一个循环会更新一个事件,把它写入到更新队列中。等待被协程更改配置文件。定期执行需要叠加的任务。如果有不需要进行更新的任务,两个协程可以直接发送沟通。判断是否需要重载。不需要重载的就等待不需要重载的数据即可。最后以nginx模块去运行。
构建ingress nginx
查看需要下载的镜像
所以如果想要访问http就访问31345端口,访问https访问31802
ingress也需要service的nodeport去暴露,跟development一样。
一、ingress HTTP代理
创建了一个nginx服务
现在想要通过nginx的ingeress方案把它保留出去,实现根据域名访问。
新建一个文件
访问的路径就是host域名下面的根目录。
这里的ingress链接的就是上面svc的名称nginx-svc
可以通过域名访问了
因为没有域名解析 所以更改/etc/hosts文件
访问的端口是ingress的端口
二、ingress实现虚拟主机的方案
两个deployment www1. www2
创建svc与deployment对应的pod关联
创建ingress的配置方式,与两个svc关联
虚拟主机的方案都放下面
创建第二个
注意标签就不能一致了
写ingress规则
cat /etc/nginx.conf
可以看到两个域名反向代理的规则
规则会转换成nginx的配置文件 注入进配置文件
这就是ingress的规则
三、通过ingress https代理访问
首先创建一个证书。
req证书请求
x509格式
时间365天
用一个newkey新建
key的输出结果是tls.key
out 输出到证书 格式是tls.crt
subject就是标识
创建了一个secret格式是tls格式。指定key和证书。
可以认为是tls-cecret的secret保存了刚才创建的证书和私钥
创建一个www3
通过secret封装进去
开始ingrss的创建
创建新的deployment
四、nginx 进行基础认证
因为ingress采用的是nginx方案,所以nginx支持的ingress也支持
需要阿帕奇模块
创建密钥文件
创建名称为auth 用户名称为foo
创建一个密码文件
会话的说明。realm
访问这个域名会进行一个认证方案,并且访问的是svc1版本
所以其他的只需要添加annotations字段也可认证。
因为这里是http协议,所以采用的还是31345端口哈
用户名:foo
密码就是刚才设置的
这个就是给nginx加一个基础的认证
五、nginx进行重写
需要在annotations里面添加这些
使用第一个:
现在设置如果想要访问re.itguigu.com就跳转到www3.atiguigu.com中去
www3是https的
此处的svc可以随意链接
访问re自动跳转了