Kubernetes(AKS):将不同服务的多个端口公开给公共负载均衡器

时间:2019-04-16 03:13:33

标签: kubernetes kubernetes-ingress azure-kubernetes azure-aks

我正在使用AKS在Azure上设置Kubernetes集群,以托管Elasticsearch,Kibana,自定义api,UI,nginx等。

由于我不想为每个服务使用单独的公共IP,因此我需要一种方法来设置通用的负载均衡器/入口,然后仅在其中添加端口号并设置路由。

我尝试使用此stackoverflow问题中提到的方法-How to expose multiple port using a load balancer services in kubernetes,但没有解决。

由于有技术客户端连接到我的集群,因此我需要按技术提供服务。

基本上,我需要公开9200、5601、80-全部位于同一IP上,但是通过端口访问IP时,必须将用户重定向到适当的技术服务。

下面是寻找的示例配置。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: myingress
spec:
  rules:
  - host: myurl.domain.com
    http:
      paths:
      - path: /
        backend:
          serviceName: elasticsearch
          servicePort: 9200
      - path: /
        backend:
          serviceName: kibana
          servicePort: 5602

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

对于您的问题,入口就是您想要的。您可以根据需要创建所有服务。并公开您的服务端口。然后使用公共IP创建入口,并创建入口路由,该路由将访问从入口路由到您的后端服务。

看看Create an ingress controller in Azure Kubernetes Service (AKS)中的示例。它将向您显示需要执行哪些步骤。如果您还有其他问题,请告诉我。

答案 1 :(得分:0)

我刚刚在TCP模式下使用HAProxy入口控制器(https://github.com/helm/charts/tree/master/incubator/haproxy-ingress)在邮件服务器项目上完成了此操作。工作请客。可以在https://github.com/funkypenguin/docker-mailserver/blob/fa9bd9c9ed9b66aa6ee1c36ca19a73c558682f24/helm-chart/docker-mailserver/values.yaml#L300

找到有效的配置

D

答案 2 :(得分:0)

对不起,我发布了另一个类似的问题。终于可以通过简单的标记解决问题。

不需要额外的工具/代码。

请参考我的帖子以获取答案:Kubernetes: Expose multiple services internally & externally