GKE托管证书无法通过HTTPS服务

时间:2019-07-01 20:51:05

标签: kubernetes google-cloud-platform

我正在尝试启动一个Kubernetes集群,该集群可以安全地访问并且似乎无法获得最后一部分。我正在学习本教程:https://cloud.google.com/kubernetes-engine/docs/how-to/managed-certs

这是我用于Ingress,Nodeport和ManagedCertificate的.yaml文件

apiVersion: networking.gke.io/v1beta1
kind: ManagedCertificate
metadata:
  name: client-v1-cert
spec:
  domains:
    - api.mydomain.com
---
apiVersion: v1
kind: Service
metadata:
  name: client-nodeport-service
spec:
  selector:
    app: myApp
  type: NodePort
  ports:
    - protocol: TCP
      port: 80
      targetPort: 3000
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: api-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: api-v1
    networking.gke.io/managed-certificates: client-v1-cert
spec:
  backend:
    serviceName: client-nodeport-service
    servicePort: 80

我在GCP控制台中看不到任何错误。我也可以从http://api.mydomain.com/访问我的API,但是当我尝试https而不是https时将无法使用。几天来我一直在想这个问题,只是想知道我是否缺少一些小东西。

---更新---

kubectl describe managedcertificate的输出

Name:         client-v1-cert
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
API Version:  networking.gke.io/v1beta1
Kind:         ManagedCertificate
Metadata:
  Creation Timestamp:  2019-07-01T17:42:43Z
  Generation:          3
  Resource Version:    1136504
  Self Link:           /apis/networking.gke.io/v1beta1/namespaces/default/managedcer
tificates/client-v1-cert
  UID:                 b9b7bec1-9c27-33c9-a309-42284a800179
Spec:
  Domains:
    api.mydomain.com
Status:
  Certificate Name:    mcrt-286cdab3-b995-40cc-9b3a-28439285e694
  Certificate Status:  Active
  Domain Status:
    Domain:     api.mydomain.com
    Status:     Active
  Expire Time:  2019-09-29T09:55:12.000-07:00
Events:         <none>

1 个答案:

答案 0 :(得分:1)

我想出了解决这个问题的方法。我最终进入我的GCP控制台,找到了与Ingress关联的负载平衡器,然后我注意到只有一个前端协议,并且是HTTP通过端口80提供服务。因此,我手动为HTTPS添加了另一个前端协议,列表中的托管证书,等待了大约5分钟,一切正常。

我不知道为什么我的ingress.yaml不能自动这样做。因此,尽管问题已经解决,但是如果有人知道我想知道的话。