Kubernetes 服务的 Express-gateway 配置
Posted
技术标签:
【中文标题】Kubernetes 服务的 Express-gateway 配置【英文标题】:Express-gateway config for Kubernetes services 【发布时间】:2021-05-22 22:44:52 【问题描述】:我正在尝试为我的微服务研究配置 api-gateway。 我创建了一个 pod 作为该 pod 的 auth-depl 和 auth-src 服务。 我还有另一个 pod&service 作为 links-depl 和 links-serv。 我想为它制作一个 api-gateway。这些服务。
“kubeectl get pods”的输出:
NAME READY STATUS RESTARTS AGE
api-gateway-depl-88b4c8b77-zdgjw 1/1 Running 0 10m
auth-depl-7cb78c4dcf-wxrwd 1/1 Running 0 10m
links-depl-69d749955d-5xf9b 1/1 Running 0 6m3s
“kubectl get services”的输出:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
api-gateway-srv NodePort 10.98.213.62 <none> 8080:30623/TCP 12m
auth-srv ClusterIP 10.98.214.62 <none> 3000/TCP 12m
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 25h
links-srv ClusterIP 10.99.37.46 <none> 3001/TCP 12m
我的 express-gateway 配置文件是这样的:
http:
port: 8080
admin:
port: 9876
host: localhost
apiEndpoints:
api:
host: localhost
paths: '/ip'
user:
host: localhost
paths: '/user/signup'
serviceEndpoints:
httpbin:
url: 'https://httpbin.org'
usersrv:
url: 'http://auth-srv:3000/user/signup'
policies:
- basic-auth
- cors
- expression
- key-auth
- log
- oauth2
- proxy
- rate-limit
pipelines:
default:
apiEndpoints:
- api
policies:
- proxy:
- action:
serviceEndpoint: httpbin
changeOrigin: true
我刚刚尝试使用 api-gateway 访问身份验证服务,但我无法做到这一点。为此,我发送此请求:
POST http://localhost:30623/user/signup
我收到“无法发布 /user/signup 错误
但是当我向
GET http://localhost:30624/ip
我可以收到回复。
如何配置这个 gateway.config.yaml 文件来解决我的问题。
【问题讨论】:
您没有用户 ApiEndpoint 的管道。 【参考方案1】:在 Express Gateway 中,您需要为每个 ApiEndpoint 定义一个管道。您有一个将(面向外部的)“api”端点映射到服务端点“httpbin”的管道,但是您缺少一个将“用户”端点映射到您的注册端点的管道。
您需要为此添加一个管道到您的“管道”部分:
pipelines:
# Existing "default" pipeline
user:
apiEndpoints:
- user
policies:
- proxy:
- action:
serviceEndpoint: usersrv
changeOrigin: true
【讨论】:
以上是关于Kubernetes 服务的 Express-gateway 配置的主要内容,如果未能解决你的问题,请参考以下文章
如何从同一项目中的另一个 Kubernetes 集群调用 Kubernetes 集群公开的服务