Google云负载平衡器使用Kubernetes Ingress强制使用HTTP而不是HTTPS
我正在尝试部署一个Docker容器,它公开了一个简单的Docker服务器,一个在Google容器引擎(Kubernetes)中的httpbin.org服务的克隆。
这是我正在使用的服务定义:
apiVersion: v1 kind: Service metadata: name: httpbin labels: app: httpbin spec: type: LoadBalancer ports: - port: 80 targetPort: 3000 protocol: TCP name: http selector: app: httpbin
入口被定义为:
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: httpbin-tls annotations: kubernetes.io/ingress.global-static-ip-name: "http-bin-static-ip" spec: tls: - secretName: positive-ssl backend: serviceName: httpbin servicePort: 80
在Services / Ingress仪表板中,我可以看到两个IP,一个直接绑定到服务(暂时)和一个绑定到Ingress的静态IP。 在端口80上直接调用它们就像是一种魅力。
完成之后,我为静态IP创build了一个Alogging,并确保GKE仪表板中的负载平衡器正常:
HTTPS端点应该按照我检查过的很多教程和手册工作,但不是! 每次调用HTTPS都会被redirect(301)到HTTP端口。
curl的输出-v:
* Rebuilt URL to: https://httpbin-1.mydomain.com/ * Trying XXX.XX.XX.XX... * TCP_NODELAY set * Connected to httpbin-1.mydomain.com (XXX.XX.XX.XX) port 443 (#0) * TLS 1.2 connection using TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 * Server certificate: mydomain.com * Server certificate: COMODO ECC Domain Validation Secure Server CA 2 * Server certificate: COMODO ECC Certification Authority > GET / HTTP/1.1 > Host: httpbin-1.mydomain.com > User-Agent: curl/7.51.0 > Accept: */* > < HTTP/1.1 301 Moved Permanently < Date: Fri, 03 Mar 2017 18:01:23 GMT < Transfer-Encoding: chunked < Connection: keep-alive < Cache-Control: max-age=3600 < Expires: Fri, 03 Mar 2017 19:01:23 GMT < Location: http://httpbin-1.mydomain.com/ < * Curl_http_done: called premature == 0 * Connection #0 to host httpbin-1.mydomain.com left intact
我没有创build任何types的自动redirect,严格遵循官方手册(来自Kubernetes和GKE),但是我无法超越这一点。 甚至试图重新创build整个堆栈,一个新的集群,新的负载平衡器,但得到了相同的结果。
我错过了什么? TKS!
AFAIK GLB无法为您做正确的转发。 在入口之后,您将不得不在服务中使用Web服务器来解决该情况。
你目前的行为似乎是由…造成的
annotations: kubernetes.io/ingress.global-static-ip-name: "http-bin-static-ip"
从入口中删除该部分,您应该看到您的https会话在入口处被终止。
- 如何从Docker容器创buildPostgres备份
- 无法使用在Docker中运行的PhpStorm来debuggingPHP应用程序?
- fd://是什么意思在dockerd -H fd://
- 连接两个docker集装箱
- 在stream浪者/虚拟箱上访问其他机器仅在托pipe容器内的networking上
- Django Cookiecutter如何更改生产媒体存储到本地
- ImageMagick Go API HTTP挂在ReadImageBlob上
- Docker只读套接字卷
- 在使用非系统驱动器数据的情况下拖动Microsoft / Nanoserver容器时发生错误“Win32中的OpenForBackup失败”