
library/krakend维护者:
KrakenD 维护团队
获取帮助:
官方文档、社区支持、提交 issue、其他支持渠道
2.11.2, 2.11, 2, latest提交 issue 的地址:
[***]
支持的架构:(更多信息)
amd64、arm64v8
已发布镜像的 artifact 详情:
repo-info 仓库的 repos/krakend/ 目录(历史记录)
(包含镜像元数据、传输大小等)
镜像更新:
official-images 仓库的 library/krakend 标签
official-images 仓库的 library/krakend 文件(历史记录)
本描述的来源:
docs 仓库的 krakend/ 目录(历史记录)
!logo
KrakenD 是一个无状态、高性能、企业级的开源 API 网关,采用 Go 语言编写。其引擎(前身为 KrakenD Framework)现为 Linux 基金会项目,代号为 Lura Project。Lura 是唯一托管于中立开放论坛的企业级 API 网关。
KrakenD 轻量且简单易用,只需编写配置文件即可,无需 Go 语言知识。它支持连接内外部服务、数据转换与过滤,以及同时或级联聚合多个数据源(API、gRPC、队列与发布/订阅、lambda 等)。它可保护 API 访问、控制使用吞吐量,并与众多第三方服务集成。所有功能均旨在提供卓越性能和无限可扩展性。
KrakenD 只需一个配置文件即可创建 API 网关,也可根据组织架构进行复杂配置。配置文件可位于容器内任意位置,默认工作目录为 /etc/krakend。
使用镜像时,可通过 COPY 将 krakend.json 复制到容器内,或通过卷挂载。配置仅在启动时检查一次,之后不再使用。尚无配置文件?可通过 KrakenD Designer UI 生成。
⚠️ 注意:Krakend 不会在配置更改时热重载,需重启容器。
以下命令可启动带健康检查的空网关:
bashdocker run -d -p 8080:8080 -v "$PWD:/etc/krakend/" krakend curl http://localhost:8080/__health {"agents":{},"now":"2024-05-23 14:35:55.552591448 +0000 UTC m=+26.856583003","status":"ok"}
以下是运行 KrakenD 的多个示例。默认执行 run 命令,也可在 run 命令末尾传递其他命令和标志。配置文件取自当前目录($PWD),因此所有示例均需当前目录存在 krakend.json。
-d):此标志可安全用于生产环境,用于启用 KrakenD 作为伪后端,通过 /__debug 端点 提供调试功能。
bashdocker run -p 8080:8080 -v "${PWD}:/etc/krakend/" krakend run -d -c /etc/krakend/krakend.json
参考 check 命令:
bashdocker run -it -v $PWD:/etc/krakend/ krakend check --config krakend.json
bashdocker run --rm -it krakend help
大多数生产环境部署不希望依赖卷挂载,而是基于 krakend 构建自定义镜像:
Dockerfile 示例:
DockerfileFROM krakend:<version> # 注意:生产环境避免使用 :latest 标签,应使用主版本号。 COPY krakend.json ./ # 检查并测试文件有效性 RUN krakend check -t --lint-no-network -c krakend.json
若需通过多文件、文件夹管理配置,复用模板,或在团队间分发配置,可使用 灵活配置(FC)。以下 Dockerfile 结合 FC、krakend check 命令和多阶段构建:
DockerfileFROM krakend:<version> as builder COPY krakend.tmpl . COPY config . # 将临时输出文件保存到 /tmp 以避免权限错误 RUN FC_ENABLE=1 \ FC_OUT=/tmp/krakend.json \ FC_PARTIALS="/etc/krakend/partials" \ FC_SETTINGS="/etc/krakend/settings" \ FC_TEMPLATES="/etc/krakend/templates" \ krakend check -d -t -c krakend.tmpl # 仅复制输出文件,舍弃其他文件 FROM krakend:<version> COPY --from=builder /tmp/krakend.json .
构建命令:docker build -t my_krakend .
上述配置假设目录结构如下:
. ├── config │ ├── partials │ ├── settings │ │ └── env.json │ └── templates │ └── some.tmpl ├── Dockerfile └── krakend.tmpl
yamlservices: krakend: image: krakend:<version> ports: - "8080:8080" volumes: - ./:/etc/krakend
yamlservices: krakend: image: krakend:<version> ports: - "8080:8080" volumes: - ./:/etc/krakend environment: - FC_ENABLE=1 - FC_OUT=/tmp/krakend.json - FC_PARTIALS="/etc/krakend/config/partials" - FC_SETTINGS="/etc/krakend/config/settings/prod" - FC_TEMPLATES="/etc/krakend/config/templates" command: ["krakend", "run", "-c", "krakend.tmpl", "-d"]
所有 krakend 命令以 krakend 用户(uid=1000)执行,其他命令(如 sh)以 root 用户执行。
可直接使用 krakend 的子命令(如 run、help、version、check、check-plugin、test-plugin),入口点会自动添加 krakend 命令前缀。例如:
bashdocker run --rm -it krakend help docker run --rm -it krakend krakend help # 与上一条等效
查看本镜像包含软件的 许可证信息。
与所有 Docker 镜像一样,本镜像可能包含其他软件(如基础发行版中的 Bash 等,以及主要软件的直接或间接依赖),这些软件可能采用其他许可证。
部分自动检测到的附加许可证信息可在 repo-info 仓库的 krakend/ 目录 中找到。
对于任何预构建镜像的使用,镜像用户有责任确保其使用行为符合镜像内所有软件的相关许可证要求。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务