我在GKE上有一个应用程序,希望只能通过HTTPS访问,因此我已经获得了签名证书,可以使用TLS保护该应用程序。

我已经检查了很多有关如何执行此操作的教程,但是它们都涉及使用Ingress并使用LetsEncrypt和KubeLego自动请求证书。但我希望继续使用外部负载平衡器(由google为我提供的计算引擎实例),但我只是希望可以通过https访问我的应用程序。

我如何应用我的server.crt和server.key文件来启用https。我 apply it to the Load balancers还是kubernetes集群。

最佳答案

当通过HTTPS公开应用程序时,Ingress可能是最好的选择。 Ingress资源指定了一个后端服务,因此您将继续将您的应用程序公开为Kubernetes服务,只是将类型设置为ClusterIP。这将产生集群“内部”的服务,并且在设置后即可通过Ingress对其进行外部访问。

现在,特别是在Google Kubernetes Engine(GKE)中,群集中定义的所有入口资源都将由Google Cloud Load Balancer提供服务,因此我认为您不必担心部署自己的入口 Controller (例如Nginx入口 Controller ) 。

就TLS而言,如果拥有证书,则可以使用自己的证书。证书必须通过Kubernetes Secret上载到集群。定义该 secret 后,您可以在Ingress定义中引用该 secret 。 (https://kubernetes.io/docs/concepts/services-networking/ingress/#tls)

您可以使用以下命令创建密钥:

kubectl create secret tls my-app-certs --key /tmp/tls.key --cert /tmp/tls.crt

拥有 secret 后,您可以在入口资源中引用它:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-app-ingress
spec:
  tls:
  - secretName: my-app-certs
  backend:
    serviceName: s1
    servicePort: 80

创建入口资源后,GKE将配置负载均衡器,并为您提供可公开使用的IP,您可以使用以下IP:
kubectl get ingress my-app-ingress

以下是一个很好的教程,可带您逐步了解GKE上的Ingress:
https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer

关于kubernetes - Google Kubernetes Engine:为服务类型启用HTTPS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48467839/

10-13 08:43