我正在尝试创建以下内容:
Deployment
用于 mongoDeployment
用于 mongo-expressClusterIp
用于 mongoClusterIp
用于 mongo-express我希望能够前往 xyz.com/admin/auth-db-gui
并查看 mongo-express gui。
我在 Linux minikube 上运行它。
转到 xyz.com/admin/auth-db-gui
时,我收到 503 Service Temporously Unavailable,但是在执行 kubectl get pods
时,我可以看到 2 个 Pod 正在运行。
我将手动为 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
如果上面有明显的错误,请见谅。
答案 0 :(得分:1)
我注意到 some cases 中的 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
注意端口的设置方式。 ingress 中的 servicePort
对应服务 port
,即 27017。由于 echo-server 工作在 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
有关更多示例,请查看关于 services 的文档。