Ingress loadBalancer 和 postgres 服务使用相同的 IP

问题描述 投票:0回答:1

我是 Kube 的初学者,我正在尝试连接 2 个不同的前端(具有不同的 DNS 名称) 以及我的 Kube 集群上的 postgres 数据库。

示例: 前面 1 = test1.mysite.com 前面 2 = test2.mysite.com

两个 DNS -> 162.145.23.123

我希望我的 postgres 服务位于同一个 IP 上

正面1

kind: Deployment
apiVersion: apps/v1
metadata:
  name: front-app
  labels:
    app: front-app
spec:
  selector:
    matchLabels:
      app: front-app
  replicas: 1
  template:
    metadata:
      labels:
        app: front-app
    spec:
      containers:
      - name: front-app
        image: nginx
        ports:
          - containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
  name: front-service
spec:
  selector:
    app: front-app
  ports:
  # Default port used by the image
  - port: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demo-localhost
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
    - host: test1.mysite.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: front-service
                port:
                  number: 80
status:
  loadBalancer:
    ingress:
      - ip: 162.145.23.123

前2

kind: Deployment
apiVersion: apps/v1
metadata:
  name: front-app2
  labels:
    app: front-app2
spec:
  selector:
    matchLabels:
      app: front-app2
  replicas: 1
  template:
    metadata:
      labels:
        app: front-app2
    spec:
      containers:
      - name: front-app2
        image: nginx
        ports:
          - containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
  name: front-service2
spec:
  selector:
    app: front-app2
  ports:
  # Default port used by the image
  - port: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demo-localhost2
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
    - host: test2.mysite.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: front-service2
                port:
                  number: 80
status:
  loadBalancer:
    ingress:
      - ip: 162.145.23.123

Postgres

apiVersion: v1
kind: Service
metadata:
  name: hello-pg
  labels:
    app: hello-pg
spec:
  type: LoadBalancer
  ports:
  - port: 5432
    targetPort: 5432
    protocol: TCP
  selector:
    app: hello-pg
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: db-secret-credentials
  labels:
    app: postgresdb
data:
  POSTGRES_DB: testDB
  POSTGRES_USER: testUser
  POSTGRES_PASSWORD: testPassword
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-pg-deployment
  labels:
    app: hello-pg
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hello-pg
  template:
    metadata:
      labels:
        app: hello-pg
    spec:
      containers:
      - name: hello-pg
        image: postgres
        ports:
          - containerPort: 5432
        envFrom:
          - configMapRef:
              name: db-secret-credentials

感谢您的帮助

kubernetes kubernetes-ingress nginx-ingress
1个回答
0
投票

根据您的入口注释,我可以看到您正在使用

ingress nginx
控制器。因此,如果您想通过与应用程序相同的负载均衡器公开数据库,则需要使用
ConfigMap
流量路由配置添加额外的
TCP
对象,并修改现有的
Service
该配置
LB

您可以在ingress nginx文档中找到有关此类配置的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.