не могу подключиться к монго-экспрессу за входом k8s
я пытаюсь создать -
- развертывание для монго
- развертывание для монго-экспресс
- IP-адрес кластера для монго
- IP-адрес кластера для монго-экспресс
- входящий сервис для маршрутизации запроса на монго-экспресс
я хочу иметь возможность перейти на 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
Пожалуйста, посмотрите документацию об услугах, чтобы увидеть больше примеров.