一. 现存的问题
现在所有的app再上线之前都必须进行加密,这里的加密不是说对应用加密,而是对请求加密,比如https加密请求。如果我们使用的是clusterIp类型, clusterIp是四层协议,那么就不能再svc层加密,这时必须在每一个app上进行加密。 也就是每台服务器都要配置https加密协议
这样的问题是,每次上线一个app,都要对app进行加密。很多重复操作。
那么,我们能不能换一种方案,就实现一次加密呢?比如将ClusterIp替换为nginx,这样就采用七层协议(四层协议只能用来进行数据传输,七层协议才可以用来做加密)。
这样用户在请求到nginx的时候,采用的是https加密协议, 而nginx在请求到pod的时候, 采用的是http协议, 这样我们只需要在nginx进行加密就可以了. 这样的配置更简单, 后端服务的压力也会更小.
我们要是在物理机上像上面那样实现是可以的, 那么, 要是在k8s中, 应该如何实现呢?
第一步:创建一个myapp-deployment, 创建n个pod. 在创建一个clusterIp类型的svc, 关联到myapp. 设置好对内端口. 第二步:创建一个nginx-deployment,创建n个nginx的pod, 在创建一个NodePort类型的svc, 对内关联nginx的pod, 对外暴露