我的问题很简单。我有一个带有LoadBalancer服务的AKS部署,它需要使用带有证书的HTTPS。
我该怎么做?
我在网上看到的每一件事都涉及到了娜妞,尤其是女强人。
但是我的部署不是一个网站,它是一个Dropwizard服务,在一个端口上有一个REST,在另一个端口上有一个管理服务。我不想将端口映射到端口80上的路径,我希望保持端口的原样。为什么HTTPS和入口有关?
我只想要一个证书的HTTPS,没有更多的改变,有一个简单的解决方案吗?
发布于 2018-10-26 20:06:40
带有正确证书的侧加容器(可能从ConfigMap或秘密加载)将在不输入的情况下完成工作。这似乎是一个很好的例子,使用nginx-ssl-代理容器。
发布于 2018-10-26 15:45:03
是的,在本文编写之时,一个宏当前将在端口80或端口443上工作,它可能可以扩展到使用任何端口,因为nginx、特雷菲克、哈代等等都可以监听不同的端口。
因此,您可以选择LoadBalancer或NodePort类型的服务。由于Azure负载平衡器是LoadBalancer,所以TLS不能直接使用TLS。因此,您将不得不使用应用网关,并且出于安全考虑,它更倾向于使用内负载平衡器。
由于您使用的是Azure,所以您可以运行这样的程序(假设您的K8s集群配置了正确的方式来使用Azure云提供程序,要么是--cloud-provider选项,要么是云控制器管理器):
$ cat <<EOF
apiVersion: v1
kind: Service
metadata:
name: your-app
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
spec:
type: LoadBalancer
ports:
- port: <your-port>
selector:
app: your-app
EOF | kubectl apply -f -这将创建一个Azure负载平衡器在您喜欢的端口为您的服务。在幕后,负载均衡器将指向节点上的一个端口,在节点中,将有防火墙规则将路由到您的容器。然后您可以配置应用网关。下面是是一篇很好的文章,但是使用端口80,您必须使用端口443修改它并配置TLS证书,而且Application还支持端到端TLS,以防您也想在应用程序上直接终止TLS。
另一个选项是NodePort,您可以运行如下内容:
$ kubectl expose deployment <deployment-name> --type=NodePort然后,Kubernetes将在所有节点上选择一个随机端口,在那里可以向您的服务发送流量,侦听<your-port>。因此,在本例中,您必须使用TLS或流量源手动创建负载均衡器,该源侦听TLS <your-port>并将其转发到所有节点上的NodePort,该负载均衡器可以是类似have、nginx、Traefik或其他支持终止TLS的东西。您还可以使用应用网关直接转发到节点端口,换句话说,定义一个侦听器来侦听集群的NodePort。
https://stackoverflow.com/questions/53011044
复制相似问题