go - 用作 go 库时如何启用 krakenD 的灵活配置
问题描述
我使用了以下代码,但无法弄清楚如何启用https://www.krakend.io/docs/configuration/flexible-config/文档中提到的 krakenD 灵活配置。通过在运行代码之前设置环境变量并直接导入 github.com/devopsfaith/krakend-flexibleconfig 尝试了几种方法。但没有什么对我有用。谁能帮我解决这个问题?
package main
import (
"flag"
"log"
"os"
"github.com/devopsfaith/krakend/config"
"github.com/devopsfaith/krakend/logging"
"github.com/devopsfaith/krakend/proxy"
"github.com/devopsfaith/krakend/router/gin"
)
func main() {
port := flag.Int("p", 0, "Port of the service")
logLevel := flag.String("l", "ERROR", "Logging level")
debug := flag.Bool("d", false, "Enable the debug")
configFile := flag.String("c", "/etc/krakend/configuration.json", "Path to the configuration filename")
flag.Parse()
parser := config.NewParser()
serviceConfig, err := parser.Parse(*configFile)
if err != nil {
log.Fatal("ERROR:", err.Error())
}
serviceConfig.Debug = serviceConfig.Debug || *debug
if *port != 0 {
serviceConfig.Port = *port
}
logger, _ := logging.NewLogger(*logLevel, os.Stdout, "[KRAKEND]")
routerFactory := gin.DefaultFactory(proxy.DefaultFactory(logger), logger)
routerFactory.New().Run(serviceConfig)
}
错误消息是:'configuration.json': invalid character '{' looking for beginning of object key string, offset: 55, row: 3, col: 12 exit status 1
configuration.json 在下面。并且设置的环境变量是FC_ENABLE=1 \ FC_SETTINGS="$PWD/config/settings"
"version": 2,
"name": "api gateway",
"port": {{ .service.port }},
"cache_ttl": "3600s",
"timeout": "10s",
"github_com/devopsfaith/krakend-cors": {
"allow_origins": [
"http://192.168.99.100:3000",
"http://localhost:3000",
"http://9.30.161.212:30077",
"http://9.30.161.212:30072",
"http://localhost:8080"
],
"allow_methods": [
"POST",
"GET",
"PUT"
],
"allow_headers": [
"Origin",
"Authorization",
"Content-Type",
"refresh-token"
],
"expose_headers": [
"Content-Length"
],
"max_age": "12h"
},
"extra_config": {
{{ marshal .service.extra_config }}
},
"endpoints": []
}```
解决方案
在调试 KrakenD 的灵活配置时,添加FC_OUT
变量以查看编译后的模板。例如:
FC_ENABLE=1 \
FC_OUT=the-compiled-file.json \
FC_PARTIALS="$PWD/config/partials" \
FC_SETTINGS="$PWD/config/settings/$TARGET_ENV" \
FC_TEMPLATES="$PWD/config/templates" \
krakend check -c krakend.tmpl
然后您将能够打开它the-compiled-file.json
并查看任何语法错误。只是生成的文件不是一个有效的 JSON 文件,不管你是用它作为库还是官方编译的镜像。
推荐阅读
- sql-server-2019 - 来自外部表的 Polybase 查询不支持拒绝选项
- git - 将 Git 存储库导入具有完整历史记录的 TFVC 的最佳方法(DevOps)
- angular - 使用 openapi-generator-cli 从 ocelote 的多个定义中生成 TS 中的 api 和模型
- reactjs - ::root 在@media、scss 中没有响应
- ruby-on-rails - Rails 控制台无法运行
- windows - 使用 pm2 和 WSL2 部署时出现奇怪的错误
- json - Flutter - 使用 JSON 推送材质路由
- powershell - PowerShell 计时循环未完成,随机挂起
- applescript - AppleScript,在解析大型 XML 文件时收到“系统事件出错:连接无效。(-609)”
- scala - 在 Azure Blob 存储中编写 Parquet:“其中一个请求输入无效”