fay*_*fay 13 security ssl https kubernetes google-kubernetes-engine
我在kubernetes上部署了一个简单的流星应用程序.我将外部IP地址与服务器相关联,以便可以从群集中访问它.现在,我准备将它暴露给互联网并保护它(使用HTTPS协议).任何人都可以给出本节的简单说明吗?
Jan*_*art 15
在我看来,kube-lego是GKE的最佳解决方案.看看原因:
配置示例(就是这样!):
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"
Run Code Online (Sandbox Code Playgroud)
示例Ingress(您可以创建更多这些):
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:
...
Run Code Online (Sandbox Code Playgroud)
有几种方法可以设置ssl端点,但是您的解决方案需要解决2个问题:首先,您需要获得有效的证书和密钥.其次,您需要在基础架构中设置ssl端点.
看看k8s 入口控制器.您可以从k8s秘密存储中为入口控制器提供证书/密钥保密,以设置ssl端点.当然,这要求您已拥有有效的证书和密钥.
您可以查看k8s特定的解决方案,以发布和使用Kubernetes Letsencrypt Controller等证书,但我从未使用它们,也不能说它们的工作情况如何.
以下是一些发布和使用ssl证书的一般想法:
AWS
如果您在AWS上运行,我能想到的最简单的方法是设置一个ELB,它可以自动为您发出ssl证书.
LetsEncrypt
您还可以查看LetsEncrypt为您的域颁发免费证书.关于它的好处是你可以自动化你的证书颁发过程.
CA
当然,您可以始终采用旧式方式,并从您信任的提供商处颁发证书.
AWS
同样,如果你有一个ELB,那么它已经充当了一个端点,你就完成了.当然,您的客户端< - > ELB连接已加密,但ELB < - > k8s-cluster未加密.
k8s入口控制器
如上所述,根据您使用的k8s版本,您还可以设置TLS 入口控制器.
k8s代理服务
另一个选择是在k8s群集中设置一个服务,该服务终止ssl连接并代理未加密的流星应用程序的流量.你可以使用nginx作为代理.在这种情况下,我建议您将证书的密钥存储在k8s秘密存储区中,并将其安装在nginx容器中.切勿运送内部存有证书密钥等秘密的容器!当然,你仍然需要将加密的流量发送到k8s节点 - 再次,有几种方法可以实现这一点...最简单的方法是修改你的DNS条目以指向k8s节点,但理想情况下你会使用TCP LB .
归档时间: |
|
查看次数: |
17330 次 |
最近记录: |