将证书加载到 GKE 服务

Loading certificate to GKE service

我有一个 GKE 集群,其中 运行 一个 java spring 引导 docker 镜像在端口 80 上。我将它公开为一个具有多个端口映射的负载均衡器比如 80 -> 80 和 443 -> 80。

我可以看到 http 和 https URL 都在服务中,但我只能在 http 端口上访问我的服务,但不能在 https 上访问。我收到 “此站点无法提供安全连接。”

我知道我需要在这个负载均衡器上放一个证书才能在 https 上公开,我有一个 google 托管证书。

我的问题是我不知道如何在负载均衡器上安装此证书,以便我也可以通过 https 访问我的应用程序。

因为您正在使用带有 google 托管证书的 GKE ingress,所以您不需要在负载均衡器中手动配置它,它可以由 ingress 完成。

oficial documentation 中,您可以验证所有步骤以使其正常工作。

有2个pre-requisites:

  1. 您需要拥有一个域名
  2. 您应该创建一个静态 IP 地址。

您可以使用以下 yaml 创建证书:

apiVersion: networking.gke.io/v1beta2
kind: ManagedCertificate
metadata:
  name: certificate-name
spec:
  domains:
    - domain-name1

并为您的应用程序创建一个服务作为 NodePort,例如:

apiVersion: v1
kind: Service
metadata:
  name: service-name
spec:
  selector:
    key: value
  type: NodePort
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

最后,您可以使用以下示例创建入口:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-name
  annotations:
    kubernetes.io/ingress.global-static-ip-name: address-name
    networking.gke.io/managed-certificates: certificate-name
spec:
  backend:
    serviceName: service-name
    servicePort: service-port

如果您想将 self-certificate 迁移到 google 托管证书,您可以按照 this steps