не могу подключиться к монго-экспрессу за входом k8s

я пытаюсь создать -

  1. развертывание для монго
  2. развертывание для монго-экспресс
  3. IP-адрес кластера для монго
  4. IP-адрес кластера для монго-экспресс
  5. входящий сервис для маршрутизации запроса на монго-экспресс

я хочу иметь возможность перейти на xyz.com/admin/db-gui и увидеть графический интерфейс mongo-express

Я настрою сопоставление для xyz.com в / etc / hosts вручную, так как это только для целей разработки

db.yaml

      apiVersion: apps/v1
kind: Deployment
metadata:
  name: auth-db-deployment
spec:
  selector:
    matchLabels:
      app: auth-db
  template:
    metadata:
      labels:
        app: auth-db
    spec:
      containers:
        - name: auth-db
          image: mongo
---
apiVersion: v1
kind: Service
metadata:
  name: auth-db-service
spec:
  selector:
    app: auth-db
  ports:
    - name: auth-db
      protocol: TCP
      port: 27017
      targetPort: 27017

db-gui

      apiVersion: apps/v1
kind: Deployment
metadata:
  name: auth-db-gui-deployment
spec:
  selector:
    matchLabels:
      app: auth-db-gui
  template:
    metadata:
      labels:
        app: auth-db-gui
    spec:
      containers:
        - name: auth-db-gui
          image: mongo-express
          env:
            - name: ME_CONFIG_MONGODB_SERVER
              value: auth-db-service
---
apiVersion: v1
kind: Service
metadata:
  name: auth-db-gui-service
spec:
  selector:
    app: auth-db-gui
  ports:
    - name: auth-db-gui
      protocol: TCP
      port: 27017
      targetPort: 27017

ingress.yaml

      apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: xyz-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
    - host: xyz.com
      http:
        paths:
          - path: /admin/auth-db-gui
            backend:
              serviceName: auth-db-gui-service
              servicePort: 8081

извините, если есть очевидная ошибка выше

1 ответ

Я заметил, что в некоторых случаях 503 означает, что порты настроены правильно.

Я проверил ваш вход, а также службу и развертывание, и после исправления ошибки с портом в объекте входа он отлично работает:

      curl -H "Host:  xyz.com"  "192.168.49.2/admin/auth-db-gui"   
{
  "path": "/admin/auth-db-gui",
  "headers": {
    "host": "xyz.com",
    "x-request-id": "ff272df6d729af6c1fb4d5f510de88f4",
    "x-real-ip": "192.168.49.1",
    "x-forwarded-for": "192.168.49.1",
    "x-forwarded-host": "xyz.com",
    "x-forwarded-port": "80",
    "x-forwarded-proto": "http",
    "x-scheme": "http",
    "user-agent": "curl/7.52.1",
    "accept": "*/*"
  },
  "method": "GET",
  "body": "",
  "fresh": false,
  "hostname": "xyz.com",
  "ip": "192.168.49.1",
  "os": {
    "hostname": "auth-db-gui-deployment-555c77cf75-fjbf2"

Для тестирования настоятельно рекомендую mendhak/http-https-echo. Я поменял местами образ в вашем развёрнутом и исправил порт. Вы можете проверить вход самостоятельно с помощью следующих файлов yaml:

      #ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: xyz-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
    - host: xyz.com
      http:
        paths:
          - path: /admin/auth-db-gui
            backend:
              serviceName: auth-db-gui-service
              servicePort: 27017

Обратите внимание на то, как настраивается порт. В servicePort на входе соответствует сервису port что составляет 27017. Я изменил целевой порт службы, так как эхо-сервер работает на 80

      #sevice.yaml

apiVersion: v1
kind: Service
metadata:
  name: auth-db-gui-service
spec:
  selector:
    app: auth-db-gui
  ports:
    - name: auth-db-gui
      protocol: TCP
      port: 27017
      targetPort: 80
      #deployment.yaml
 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: auth-db-gui-deployment
spec:
  selector:
    matchLabels:
      app: auth-db-gui
  template:
    metadata:
      labels:
        app: auth-db-gui
    spec:
      containers:
        - name: auth-db-gui
          image: mendhak/http-https-echo

Пожалуйста, посмотрите документацию об услугах, чтобы увидеть больше примеров.

Другие вопросы по тегам