我正在考虑在容器化平台中设置多个聊天机器人,比如说docker或Kubernetes,我希望能够通过反向代理(例如Nginx)访问这些聊天机器人。任何帮助表示赞赏。
我的示例场景
我有多个聊天机器人,可以叫他们 Bravo,Charlie,Delta
所有这些漫游器都生活在Nginx代理后面的容器中。 现在,如果我想访问这些聊天机器人,则可以使用10.0.0.2:8080进入浏览器并使用聊天机器人
如果我可以设置域(alpha,org)并想以alpha,com / bravo或alpha,com / charlie和alpha,com / delta的身份访问这些聊天机器人能够做到这一点??
Proxy pass指令仅适用于index_html,并且chatbot应用程序似乎具有某种我无法确定的基本url路径。 如果我检查流量,nginx将返回空白页。帮我调试一下。
答案 0 :(得分:2)
您可以将nginx-ingress控制器与该入口定义一起使用:(但是首先您需要在集群上部署nginx-ingress控制器,您可以使用此link)
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: alpha-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: alpha.com
http:
paths:
- path: /bravo
backend:
serviceName: BravoService
servicePort: 80
- path: /charlie
backend:
serviceName: CharlieService
servicePort: 80
- path: /delta
backend:
serviceName: DeltaService
servicePort: 80 # You could also use named ports if you already named the port in the service like bravo-http-port
这希望您已经定义了服务并将其与关联的部署一起部署。例如:
apiVersion: v1
kind: Service
metadata:
name: BravoService
labels:
app: bravo
spec:
type: NodePort
selector:
app: bravo
ports:
- name: bravo-http-port
protocol: TCP
port: 80
targetPort: bravo-port
nodePort: 8080
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: bravo-deployment
labels:
app: bravo
spec:
# init with 3 replicas
replicas: 1
selector:
matchLabels:
app: bravo
template:
metadata:
labels:
app: bravo
spec:
containers:
- name: bravo-container
image: my-docker-repo/project:1.0
ports:
- name: bravo-port
containerPort: 8080
如果您对此还有其他疑问,请不要犹豫。