Kubernetes:替换后端服务的mod_cluster(反向代理)

时间:2018-06-13 10:31:56

标签: docker nginx kubernetes reverse-proxy mod-cluster

我正在将我当前的服务迁移到Kubernetes。目前通过mod_cluster解决后端服务。 mod集群管理器在httpd上运行,mod_cluster客户端在启动时使用httpd / mod_cluster manager自动注册其Web上下文

user-->ingress-rule--> httpd [running mod_cluster manager]--> Jboss[mod_cluster clients]

我通过以下入口规则解析我的用户界面

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: httpd
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
spec:
  rules:
  - host: myk8s.myath.myserv.com
    http:
      paths:
      - path: /
        backend:
          serviceName: httpd
          servicePort: 443
  tls:
  - hosts:
    - myk8s.myath.myserv.com

这很好用,解析用户界面,可以登录并解析所有静态内容等。

Mod群集公开myservice等服务。我禁用了mod_cluster并创建了一个Kubernetes服务myservice,该服务解析为后端Pod认为Ingress规则将获得httpd的请求,然后httpd将能够通过Kubernetes解析后端服务但我得到404s因为我无法解决myservice

服务可以通过反向代理规则解决,如下所示,但这不是首选解决方案

# Redirect to myjbossserv
ProxyPass /myservice/services/command/  http://myjbossserv:8080/myservice/services/command/          <-----myjbossserv is a service registered in kubernetes
ProxyPassReverse /myservice/services/command/  http://myjbossserv:8080/myservice/services/command/

任何帮助非常感谢

1 个答案:

答案 0 :(得分:0)

解决此问题的最简单方法是:满足所有HA和健壮性用例的是使用反向代理规则。有多种配置方式,例如在映像生成时或通过配置映射...

# Redirect to myjbossserv
ProxyPass /myservice/services/command/  http://myjbossserv:8080/myservice/services/command/          <-----myjbossserv is a service registered in kubernetes
ProxyPassReverse /myservice/services/command/  http://myjbossserv:8080/myservice/services/command/