Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 如何在kubernetes应用程序上获取ssl?_Security_Ssl_Https_Kubernetes_Google Kubernetes Engine - Fatal编程技术网

Security 如何在kubernetes应用程序上获取ssl?

Security 如何在kubernetes应用程序上获取ssl?,security,ssl,https,kubernetes,google-kubernetes-engine,Security,Ssl,Https,Kubernetes,Google Kubernetes Engine,我在kubernetes上部署了一个简单的meteor应用程序。我将一个外部IP地址与服务器关联,这样就可以从集群中访问它。现在,我要将它公开到internet上并保护它(使用HTTPS协议)。有人能为本节提供简单说明吗?有几种方法可以设置ssl端点,但您的解决方案需要解决两个问题:首先,您需要获得有效的证书和密钥。其次,您需要在基础设施中设置ssl端点 看看k8s。您可以向入口控制器提供来自的证书/密钥密钥,以设置ssl端点。当然,这要求您已经拥有有效的证书和密钥 您可以看看k8s针对颁发和使

我在kubernetes上部署了一个简单的meteor应用程序。我将一个外部IP地址与服务器关联,这样就可以从集群中访问它。现在,我要将它公开到internet上并保护它(使用HTTPS协议)。有人能为本节提供简单说明吗?

有几种方法可以设置ssl端点,但您的解决方案需要解决两个问题:首先,您需要获得有效的证书和密钥。其次,您需要在基础设施中设置ssl端点

看看k8s。您可以向入口控制器提供来自的证书/密钥密钥,以设置ssl端点。当然,这要求您已经拥有有效的证书和密钥

您可以看看k8s针对颁发和使用证书(如)的特定解决方案,但我从未使用过它们,也不能说它们工作得有多好

以下是发布和使用ssl证书的一些一般想法:

1.获取有效的ssl证书和密钥 AWS

如果您在AWS上运行,我能想到的最简单的方法是设置ELB,它可以自动为您颁发ssl证书

LetsEncrypt

您还可以看看为您的域颁发免费证书的方法。很好的一点是,您可以自动化您的证书颁发过程

CA

当然,您可以始终采用传统方式,从您信任的提供商处颁发证书

2.设置ssl端点 AWS

同样,如果您有一个ELB,那么它已经充当端点,您就完成了。当然,您的客户机ELB连接是加密的,但ELB k8s群集是未加密的

k8s入口控制器

如上所述,根据您使用的k8s版本,您还可以设置TLS

k8s代理服务

另一个选项是在k8s集群内设置一个服务,该服务终止ssl连接,并将流量代理到meteor应用程序(未加密)。 您可以使用nginx作为代理。在这种情况下,我建议您将证书的密钥存储在其中,并将其装入nginx容器中切勿装运存储有机密(如证书密钥)的容器!当然,您仍然需要以某种方式将加密流量发送到k8s节点-同样,有几种方法可以实现这一点。。。最简单的方法是修改DNS条目以指向k8s节点,但理想情况下,您将使用TCP LB。

在我看来,这是GKE的最佳解决方案。看看原因:

  • 用作CA
  • 全自动注册和续订
  • 单个ConfigMap对象中的最小配置
  • 与合作(请参阅)
  • 与合作(请参阅)
  • 完全支持多个域,包括在一个IP上虚拟托管多个https站点(使用nginx ingress controller的SNI支持)
配置示例(就是这样!):

示例入口(您可以创建更多入口):


您是否已经拥有用于ssl加密的有效证书和密钥?@fishi,我还没有。谢谢。我应该提到我正在使用GKE(谷歌容器引擎)。有没有一种简单的方法可以获得有效的ssl证书和密钥?我必须承认我从未使用过GKE,但我猜他们提供了某种负载平衡器,这种负载平衡器也可以颁发证书,类似于AWS ELB的做法。好吧,似乎GKE并没有真正提供类似ELB的解决方案,但是你可以使用。kube lego现在只处于维护模式,支持K8S1.8。kube lego的官方存储库命名为它的继任者。也不赞成赞成。
kind: ConfigMap
apiVersion: v1
metadata:
  name: kube-lego
  namespace: kube-lego
data:
  lego.email: "your@email"
  lego.url: "https://acme-v01.api.letsencrypt.org/directory"
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: site1
  annotations:
    # remove next line if not using nginx-ingress-controller
    kubernetes.io/ingress.class: "nginx"
    # next line enable kube-lego for this Ingress
    kubernetes.io/tls-acme: "true"
spec:
  tls:
  - hosts:
    - site1.com
    - www.site1.com
    - site2.com
    - www.site2.com
    secretName: site12-tls
  rules:
    ...