通过Kubernetes Ingress访问Elasticsearch返回502 Bad Gateway问题求助
问题根因
你部署的OpenDistro Elasticsearch客户端9200端口默认开启了TLS加密,仅接受HTTPS协议请求。而你当前配置的Nginx Ingress默认使用HTTP协议向后端Service转发请求,后端ES收到非SSL请求后抛出io.netty.handler.ssl.NotSslRecordException: not an SSL/TLS record错误,Nginx无法收到正常响应因此返回502错误。
修复方案
在Ingress的metadata.annotations中新增两条配置,指定Nginx Ingress使用HTTPS协议与后端服务通信,并跳过自签证书校验:
apiVersion: extensions/v1beta1 kind: Ingress metadata: annotations: kubernetes.io/ingress.class: nginx # 新增以下两行配置 nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" nginx.ingress.kubernetes.io/proxy-ssl-verify: "off" labels: app: elasticsearch name: ingress-elasticsearch namespace: logging spec: # 其余原有配置保持不变即可
修改配置后等待10秒左右重新发起请求即可正常访问。如果需要严格校验后端ES的证书,可以额外添加nginx.ingress.kubernetes.io/proxy-ssl-secret注解,指定存储ES CA证书的Secret资源即可。
内容的提问来源于stack exchange,提问作者C-nan
相关产品推荐
相关产品推荐

