Kubernetes:如何为我的所有应用程序使用单个 Nginx 服务器?

Kubernetes:如何为我的所有应用程序使用单个 Nginx 服务器?

我有两个服务,一个是 Nginx 服务(和部署),port 80它链接到一个入口 Nginx 控制器,另一个是 WordPress 服务(部署),它在 中有一个 Nginx 服务器port 5050

因此,我有两个具有不同 Nginx 服务器的服务,并且我需要在其中创建第三个服务phpmyadmin,并且我必须在不同的端口创建另一个 Nginx 服务器port 5000

这就是为什么我问自己,是否可以有一个与我的所有应用程序(phpmyadmin,wordpress,...)链接的单一 Nginx 服务。

我搜索了网络,找到了术语“前端层”和“后端层”,但我不知道如何使用它们,或者是否有其他解决方案。如果有人能用简单的术语向我解释一下就好了。

我所有的docker容器都是自己构建的。

编辑:入口 yaml

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
      nginx.ingress.kubernetes.io/rewrite-target: /$1
  namespace: default
  name: ingress-controller
spec:
    backend:
      serviceName: my-nginx
      servicePort: 80

答案1

正如我之前在评论中提到的,你必须使用入口重定向请求。我假设您的服务和部署已正确连接。作为补充信息,如果您对当前入口存在一些问题,我建议使用 helm 进行部署Nginx

Ingress也有充分的记录Kubernetes 文档

您需要paths像以下示例一样指定。有关的所有必要信息都rewrite可以找到这里

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
  - host: test.local
    http:
      paths:
      - path: /wordpress
        backend:
          serviceName: wordpress-service
          servicePort: <your service port>
      - path: /myphpadmin
        backend:
          serviceName: myphpadmin-service
          servicePort: <your service port>
      - path: /anotherservice
        backend:
          serviceName: another-service
          servicePort: <another service port> 

现在,如果您愿意,例如,$ curl test.local/wordpress您将得到wordpress服务的响应。我解释了类似的Ingress事情此主题

作为附加信息,请记住还有更多Ingress类型(Nginx Ingress、GKE Ingress(如果您使用 GKE 云)等)

相关内容