GKE 上的 Kubernetes Ingress
Kubernetes Ingress on GKE
我使用 KOPS 和 nginx-ingress 在 AWS 上部署了 Kubernetes。
为了评估多个云(并降低成本),我想在 GKE 上部署。一切正常,除了该死的 Ingress。 (这是 AWS 上最难的部分)。
下面是我在 GKE 上使用的 Ingress。它在仪表板中创建两个入口,每个入口都有一个 IP 地址。
如果我将我的 DNS 指向这些地址,连接将被拒绝。我正在使用 ping 检查 DNS 结果。
所有 HTTPS 都无法与 "Unable to establish SSL connection." 连接,除了按钮“502 Bad Gateway”
HTTP 无法与 502 连接,admin 是 503。
在 Google 云平台仪表板中,我看到两个负载平衡器。 "all" 指向我的 SSL 证书。 "button" 没有使用 HTTPS,但那是另一个问题。
显然我遗漏了什么。我错过了什么?
我正在使用 kubectl v1.4.6 以及昨天在 GKE 上安装的任何版本。
```
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
# this is for nginx ingress controler on AWS
# kubernetes.io/ingress.class: "nginx"
name: all-ingress
spec:
tls:
- hosts:
- admin-stage.example.com
- dashboard-stage.example.com
- expert-stage.example.com
- signal-stage.example.com
- stage.example.com
secretName: tls-secret
rules:
- host: admin-stage.example.com
http:
paths:
- backend:
serviceName: admin-service
servicePort: http-port
path: /
- host: dashboard-stage.example.com
http:
paths:
- backend:
serviceName: dashboard-service
servicePort: http-port
path: /
- host: expert-stage.example.com
http:
paths:
- backend:
serviceName: expert-service
servicePort: http-port
path: /
- host: signal-stage.example.com
http:
paths:
- backend:
serviceName: signal-service
servicePort: http-port
path: /
- host: stage.example.com
http:
paths:
- backend:
serviceName: www-service
servicePort: http-port
path: /
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
# this is for nginx ingress controler on AWS
# kubernetes.io/ingress.class: "nginx"
ingress.kubernetes.io/ssl-redirect: "false"
name: button-ingress
spec:
tls:
- hosts:
- button-stage.example.com
secretName: tls-secret
rules:
- host: button-stage.example.com
http:
paths:
- backend:
serviceName: button-service
servicePort: http-port
path: /
```
Prashanth 的评论很有帮助,最后,原生云 Ingress (AWS/GCE) 在 Kubernetes 中还没有完成,不足以用于我的目的。学习比下面的东西更复杂、功能更少的抽象是没有意义的。
我最终使用了这个答案中的 nginx-ingress:
在生成的 Ingress 上是一个 IP,您可以指向 DNS(而不是服务上的 "External Endpoints")。祝你好运!
我使用 KOPS 和 nginx-ingress 在 AWS 上部署了 Kubernetes。
为了评估多个云(并降低成本),我想在 GKE 上部署。一切正常,除了该死的 Ingress。 (这是 AWS 上最难的部分)。
下面是我在 GKE 上使用的 Ingress。它在仪表板中创建两个入口,每个入口都有一个 IP 地址。
如果我将我的 DNS 指向这些地址,连接将被拒绝。我正在使用 ping 检查 DNS 结果。
所有 HTTPS 都无法与 "Unable to establish SSL connection." 连接,除了按钮“502 Bad Gateway”
HTTP 无法与 502 连接,admin 是 503。
在 Google 云平台仪表板中,我看到两个负载平衡器。 "all" 指向我的 SSL 证书。 "button" 没有使用 HTTPS,但那是另一个问题。
显然我遗漏了什么。我错过了什么?
我正在使用 kubectl v1.4.6 以及昨天在 GKE 上安装的任何版本。
```
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
# this is for nginx ingress controler on AWS
# kubernetes.io/ingress.class: "nginx"
name: all-ingress
spec:
tls:
- hosts:
- admin-stage.example.com
- dashboard-stage.example.com
- expert-stage.example.com
- signal-stage.example.com
- stage.example.com
secretName: tls-secret
rules:
- host: admin-stage.example.com
http:
paths:
- backend:
serviceName: admin-service
servicePort: http-port
path: /
- host: dashboard-stage.example.com
http:
paths:
- backend:
serviceName: dashboard-service
servicePort: http-port
path: /
- host: expert-stage.example.com
http:
paths:
- backend:
serviceName: expert-service
servicePort: http-port
path: /
- host: signal-stage.example.com
http:
paths:
- backend:
serviceName: signal-service
servicePort: http-port
path: /
- host: stage.example.com
http:
paths:
- backend:
serviceName: www-service
servicePort: http-port
path: /
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
# this is for nginx ingress controler on AWS
# kubernetes.io/ingress.class: "nginx"
ingress.kubernetes.io/ssl-redirect: "false"
name: button-ingress
spec:
tls:
- hosts:
- button-stage.example.com
secretName: tls-secret
rules:
- host: button-stage.example.com
http:
paths:
- backend:
serviceName: button-service
servicePort: http-port
path: /
```
Prashanth 的评论很有帮助,最后,原生云 Ingress (AWS/GCE) 在 Kubernetes 中还没有完成,不足以用于我的目的。学习比下面的东西更复杂、功能更少的抽象是没有意义的。
我最终使用了这个答案中的 nginx-ingress:
在生成的 Ingress 上是一个 IP,您可以指向 DNS(而不是服务上的 "External Endpoints")。祝你好运!