我已经开发了一个Krakend插件,该插件验证了即将到来的请求的JWT令牌。该插件旨在用于HTTP服务器,并具有版本v5.2.1的单个依赖性

问题描述 投票:0回答:0
docker Desktop4.34.3

bash

Krakend2.7.2

    插件是用Krakend Builder 2.7.2 Docker Image内置的其他目录(用于测试目的)。在两个目录中,krakend都是相同的版本。它可以与官方的克拉肯德图像(
  • devopsfaith/krakend:2.7.2
  • )一起使用,但与修改后不合作。该插件是使用此命令构建的:
  • MSYS_NO_PATHCONV=1 docker run -it -v "$PWD:/app" -w /app krakend/builder:2.7.2 go build -buildmode=plugin -o jwt-validator.so
  • MSYS_NO_PATHCONV=1
  • var用于git bash。它处理$ pwd作为git bash的位置。没有构建器,我无法执行它,因为windows不支持
  • -buildmode=plugin

非docker方法(Linux-generic)的构建插件提出了另一个错误:

$ MSYS_NO_PATHCONV=1 docker run -it -v "$PWD:/app" -w /app krakend/builder:2.7.2-linux-generic go build -buildmode=plugin -o jwt-validator.so .

...

plugin #0 (/etc/krakend/out/kt-jwt-validator.so): plugin.Open("/etc/krakend/out/kt-jwt-validator.so"): Error loading shared library libresolv.so.2: No such file or directory (needed by /etc/krakend/out/kt-jwt-validator.so)

当我尝试将插件集成到修改后的krakend存储库中时,它会引发调试消息,描述插件无法集成,因为它是
built with a different version of package internal/godebugs

,因此被禁用:

$ mv ../jwt-validator-plugin/jwt-validator.so .
$ docker-compose up
[+] Running 1/0
 ✔ Container krakend  Created                                                                                               0.0s 
Attaching to krakend
krakend  | Parsing configuration file: /etc/krakend/krakend.json
krakend  | [KRAKEND] 2025/01/13 - 07:28:38.995 ▶ DEBUG [SERVICE: telemetry/logging] Improved logging started.
krakend  | [KRAKEND] 2025/01/13 - 07:28:38.995 ▶ INFO Starting KrakenD v2.7.2
krakend  | [KRAKEND] 2025/01/13 - 07:28:38.995 ▶ INFO Working directory is /etc/krakend
krakend  | [KRAKEND] 2025/01/13 - 07:28:38.995 ▶ DEBUG [SERVICE: Plugin Loader] Starting loading process
krakend  | [KRAKEND] 2025/01/13 - 07:28:39.343 ▶ DEBUG [SERVICE: Executor Plugin] plugin #0 (/etc/krakend/out/kt-jwt-validator.so): plugin.Open("/etc/krakend/out/kt-jwt-validator"): plugin was built with a different version of package internal/godebugs      
krakend  | [KRAKEND] 2025/01/13 - 07:28:39.345 ▶ DEBUG [SERVICE: Handler Plugin] plugin #0 (/etc/krakend/out/kt-jwt-validator.so): plugin.Open("/etc/krakend/out/kt-jwt-validator.so"): plugin was built with a different version of package internal/godebugs (previous failure)
krakend  | [KRAKEND] 2025/01/13 - 07:28:39.349 ▶ DEBUG [SERVICE: Modifier Plugin] plugin #0 (/etc/krakend/out/kt-jwt-validator.so): plugin.Open("/etc/krakend/out/kt-jwt-validator.so"): plugin was built with a different version of package internal/godebugs (previous failure)
krakend  | [KRAKEND] 2025/01/13 - 07:28:39.350 ▶ DEBUG [SERVICE: Plugin Loader] Loading process completed
Krakend Builder和Krakend有不同的GO版本吗?因为我的插件的源代码中没有
godebugs

依赖性。我认为这是在Go的运行时,似乎有2个不同的运行时间 - 一个在建筑商的形象中,另一个在Krakend中。如果是这样,我怎么能

在上面评论的@Alo时,Krakend是使用自己的建筑商构建的,因此不应该发生。更多信息在这里:github.com/krakend/krakend-ce/blob/master/makefile#l80-l81

检查并确保您的Dockerfile是由相同的特定krakend版本(maj.min.fix)构建的?

	

go plugins krakend
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.