我正在尝试启动一个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>
答案 0 :(得分:1)
我想出了解决这个问题的方法。我最终进入我的GCP控制台,找到了与Ingress关联的负载平衡器,然后我注意到只有一个前端协议,并且是HTTP通过端口80提供服务。因此,我手动为HTTPS添加了另一个前端协议,列表中的托管证书,等待了大约5分钟,一切正常。
我不知道为什么我的ingress.yaml
不能自动这样做。因此,尽管问题已经解决,但是如果有人知道我想知道的话。