docker - 在IBM Cloud Kubernetes中公开HAProxy(端口80)Docker的最简单方法

标签 docker kubernetes ibm-cloud haproxy ibm-cloud-kubernetes

我需要将运行HAProxy的Docker部署到IBM Cloud(Bluemix)Kubernetes服务中,该HAProxy已在本地docker上进行过。我对如何公开80和443感到迷茫。在简单的简单docker中,它非常简单,但在Kubernetes或至少在IBM Cloud中似乎很复杂。
我不需要负载平衡,虚拟主机或任何其他配置,因为HAProxy会照顾好它。只需复制(移动)我在内部运行的HAProxy,即可将端口80和443暴露到bluemix中。 (出于多种原因,我想使用HAproxy,因此此处的请求非常具体:将HAProxy端口443和80暴露给IBM Cloud Kubernetes服务中的永久IP地址的最简单方法。

我可以为此提供一个基本示例yaml kubectl文件吗?谢谢

最佳答案

节点端口

要在两个环境中都运行相同的镜像,可以为HAProxy容器定义一个Deployment,并通过NodeIP或clusterIP上的 Service 定义一个 NodePort 来访问它们。 NodePort在概念上类似于运行docker run -p n:n

IP:NodePort将需要可从外部访问,并且HAProxy将接管那里。使用AWS ELB将外部用户吸引到节点的Here's a sample HAProxy setup。大多数人不建议通过NodePort运行服务,因为Kubernetes提供了提供更多集成的替代方法。

负载均衡器

LoadBalancer专​​门用于自动配置云提供商的负载平衡器服务。我不相信IBM Clouds负载均衡器在Kubernetes中有任何支持,也许IBM在其中添加了一些东西?如果他们有,您可以使用它代替NodePort来获得服务。

入口

如果您在本地运行Docker并在外部运行Kubernetes,那么您已经在窗口中抛出了一致性,因此可以使用基于HAProxy的Ingress Controller设置Ingress,有一些可用的方法:

  • https://github.com/appscode/voyager
  • https://github.com/jcmoraisjr/haproxy-ingress

  • 这为您提供了如何管理服务入口但在下面使用HAProxy的标准Kubernetes抽象。不过,这将不是您的HAProxy镜像,很可能您可以像在HAProxy镜像中那样为HAProxy Ingress配置相同的内容。

    Voyagers docco非常好:
    apiVersion: voyager.appscode.com/v1beta1
    kind: Ingress
    metadata:
      name: test-ingress
      namespace: default
    spec:
      rules:
      - host: appscode.example.com
        http:
          paths:
          - path: '/test'
            backend:
              serviceName: test-service
              servicePort: '80'
              backendRules:
              - 'acl add_url capture.req.uri -m beg /test-second'
              - 'http-response set-header X-Added-From-Proxy added-from-proxy if add_url'
    

    关于docker - 在IBM Cloud Kubernetes中公开HAProxy(端口80)Docker的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48943872/

    相关文章:

    java - k8s 监视服务器容器

    ssl - 删除 Kubernetes 中的 SSL 证书

    docker - Docker CLI随机挂起几分钟

    docker - 有任何 API 或 Web UI 项目来管理 Docker 私有(private)注册表吗?

    laravel - 经过测试,Chrome进程在Docker容器中仍然保留Laravel Dusk

    docker - 如何解决Ice登录的Docker问题?

    ibm-cloud - 部署新 Node-RED 流时为 "Warning: msg properties can no longer override set node properties"

    docker - COPY dockerfile中没有这样的文件或目录

    kubernetes 如何在 pod 中获取集群域(例如 svc.cluster.local)?

    node.js - 使用 Bluemix 从 NodeJS 公开端口 502 和 1002