Kubernetes Ingress on GKE

时间:2016-12-08 15:42:06

标签: kubernetes google-kubernetes-engine

我使用KOPS和nginx-ingress在AWS上部署了Kubernetes。

要评估多个云(并削减成本),我想部署在GKE上。一切都有效,除了Ingress的。 (那是AWS上最难的部分)。

以下是我在GKE上使用的Ingress。它在仪表板中生成两个Ingress,每个Ingress都有一个IP地址。

如果我将DNS指向这些地址,则拒绝连接。我用ping检查DNS结果。

所有HTTPS无法连接“无法建立SSL连接。”,除了“502 Bad Gateway”按钮

HTTP无法连接502,除了admin,即503。

在Google Cloud Platform信息中心中,我看到两个负载均衡器。 “all”指向我的SSL证书。 “按钮”没有使用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: /
```

1 个答案:

答案 0 :(得分:4)

Prashanth的评论很有帮助,最终,原生云Ingress(AWS / GCE)还没有在Kubernetes完成,足以满足我的目的。没有必要学习一种比下面的东西更复杂,功能更少的抽象。

我最终使用了这个答案中的nginx-ingress:Kubernetes 1.4 SSL Termination on AWS

在生成的Ingress上是一个IP,您可以指向DNS(而不是"外部端点"在服务上)。祝你好运!