我使用 Krakend 作为 API 网关,我的配置如下所示:
{
"plugin": {
"folder": "/etc/krakend/plugins/authenticator/",
"pattern":".so"
},
"port": 8080,
"extra_config": {
"github_com/devopsfaith/krakend/transport/http/server/handler": {
"name": "authenticator"
}
},
"endpoints": [
{
"output_encoding": "no-op",
"backend": [
{
"encoding": "no-op",
"host": [
"127.0.0.1:8080"
],
"url_pattern": "/api/v1/address/{id}",
"method": "GET"
}
],
"endpoint": "/api/v1/addresses/{id}",
"method": "GET"
}
],
"name": "gateway",
"timeout": "30s",
"version": 2
}
Run Code Online (Sandbox Code Playgroud)
我想为每个端点传递一些元数据并在我的预定义插件中访问它。在这种情况下authenticator插件。
我一直在从下面提到的三个 API 网关中选择一个 API 网关:
我的要求是:
所有这三个,从功能列表和性能方面看起来都不错。我正在考虑放宽第二个要求,因为我不确定这是否是一个好的做法。
我正在尝试在 Azure 应用服务中运行 KrakenD 映像。
KrakenD 需要将 json 配置文件 krakend.json 放入 /etc/krakend/(KrakenD 映像基于 Linux Alpine)
我使用以下 docker-compose 文件为容器创建了 Web App:
version: "3"
services:
krakend:
image: devopsfaith/krakend:latest
volumes:
- ${WEBAPP_STORAGE_HOME}/site/krakend:/etc/krakend
ports:
- "8080:8080"
restart: always
Run Code Online (Sandbox Code Playgroud)
添加了带有 blob 容器的存储帐户,其中上传了示例 kraken.json 文件

在应用程序配置中,我添加了一个这样的路径映射:
但看起来卷没有正确安装
2019-11-15 12:46:29.368 错误 - krakend_krakend_0_3032a936 的容器创建失败,出现 System.AggregateException,发生一个或多个错误。(Docker API 响应状态码=InternalServerError, response={"message":"invalid volume specification: ':/etc/krakend'"} )(Docker API 响应状态码=InternalServerError, response={"message":"无效的卷规范:':/etc/krakend'"}) InnerException: Docker.DotNet.DockerApiException,Docker API 响应状态码=InternalServerError,响应={"message":"无效的卷规范:':/etc/krakend' "}
2019-11-15 12:46:29.369 错误 - 多容器单元未成功启动
其他问题
我的本地计算机上有一台正在运行的 Nodejs 服务器(带有一个 API)。
\n我已经使用 krakend 创建了新的 docker 容器
\ndocker run -p 8080:8080 -v $PWD:/etc/krakend/ devopsfaith/krakend run --config /etc/krakend/krakend.json \nRun Code Online (Sandbox Code Playgroud)\n虽然,我必须对上面的命令进行一些更改,因为我在 Windows 上工作。
\n我创建了一个 krakend.json 文件,它的内容是
\n{\n "version": 3,\n "timeout": "3s",\n "cache_ttl": "300s",\n "port": 8080,\n "default_hosts": ["http://localhost:3001"],\n "endpoints": [\n {\n "endpoint": "/contacts",\n "output_encoding": "json",\n "extra_config": {\n "qos/ratelimit/router": {\n "max_rate": 5000\n }\n },\n "backend": [\n {\n "host": [\n "http://localhost:3001", \n "http://cotacts:3001"\n ],\n "url_pattern": "/contacts",\n "is_collection": "true",\n "encoding": "json",\n "extra_config": {\n "backend/http": {\n "return_error_details": "backend_alias"\n }\n }\n …Run Code Online (Sandbox Code Playgroud)