在有些对安全要求更高的场景下,需要保证端到端的请求都是https, 正常情况下, 请求到达kong ingress后都会将https转换成http后再proxy到upstream, 所以如果需要将https直接proxy到upstream,需要做些额外的操作,好在kong ingress原生就支持.
如果直接使用kong ingress 访问后端协议为https的service会提示以下错误:
1 | This combination of host and port requires TLS. |
原因: 除了kongingress中需要proxy.protocol指定为https外,在k8s的service中也需要绑定kongingress.
1 | annotations: |
比如身份验证服务,本身只支持https协议,如果使用kong进行转发的话,需要以下3个操作
定认一个kongingress, 重点是proxy.protocol:https
1 | apiVersion: configuration.konghq.com/v1 |
再定义一个ingress
1 | apiVersion: extensions/v1beta1 |
在k8s的service添加annotations
1 | apiVersion: v1 |
再次访问后即可正常
kong ingress也支持在proxy https到upstream时使用指定的证书信息, 如果是自签证书的话,浏览器还是会提示站点不安全, 要么手动导入到浏览器中或者使用第三方平台(如阿里云)上提供的权威证书签发功能