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 开发高可靠服务?

Kubernetes-Service介绍-服务发现

如何从同一项目中的另一个 Kubernetes 集群调用 Kubernetes 集群公开的服务

服务“kubernetes-dashboard”,无法访问kubernetes ui

服务“kubernetes-dashboard”,无法访问kubernetes ui