Пользовательский плагин для Kong v1.0.2 включен, но не установлен - PullRequest
0 голосов
/ 22 января 2019

У меня есть специальный плагин для Kong, который отлично работал для Kong v0.14.1, но после обновления до v.1.0.2 выдает ошибку.

Используемая ОС: macOS Mojave

В kong.conf файле У меня есть этот код:

log_level = debug
plugins=my-custom-plugin

Я пытаюсь запустить Kong с помощью этой команды:

kong start -c kong.conf

и я получаю эту ошибку:

Ошибка: /usr/local/share/lua/5.1/kong/cmd/start.lua:50: nginx: [ошибка] init_by_lua
ошибка: /usr/local/share/lua/5.1/kong/init.lua:344: плагин my-custom-plugin включен, но не установлен;
модуль 'kong.plugins.my-custom-plugin.handler' не найден: не найден модуль LuaRocks для kong.plugins.my-custom-plugin.handler
нет поля package.preload ['kong.plugins.my-custom-plugin.handler']
нет файла './kong/plugins/kong-my-custom-plugin/handler.lua'...

Я установил плагин с помощью этой команды:

luarocks make

, который дал следующий вывод:

my-custom-plugin 1.0-1 is now installed in /usr/local/opt/kong (license: MIT)

Почему-то кажется, что Kong не может найти мой установленный пользовательский плагин. Есть идеи, почему это происходит?

Ответы [ 3 ]

0 голосов
/ 25 января 2019

Загрузить плагин

Теперь вы должны добавить имя пользовательского плагина в список custom_plugins в своей конфигурации Kong (на каждом узле Kong):

custom_plugins = <plugin-name>

Если вы используете два или более пользовательских плагина, вставьте между ними запятые, например:

custom_plugins = plugin1,plugin2

Примечание: Вы также можете установить это свойство через эквивалентную ему переменную среды: KONG_CUSTOM_PLUGINS или определить пользовательский плагин в свойстве конфигурации, например:

KONG_CUSTOM_PLUGINS=<plugin-name> kong start

Напоминание: Не забудьте обновить директиву custom_plugins для каждого узла в вашем кластере Kong.

Проверка загрузки плагина

Теперь вы сможете запускать Kong без каких-либо проблем. Обратитесь к инструкциям вашего пользовательского плагина о том, как включить / настроить плагин на объекте API или Consumer.

Чтобы убедиться, что ваш плагин загружается Kong, вы можете запустить Kong с уровнем журнала отладки:

log_level = debug

OR

KONG_LOG_LEVEL=debug

Затем вы должны увидеть следующий журнал для каждого загружаемого плагина:

[debug] Loading plugin <plugin-name>

И здесь - это обходные шаги для добавления вещей в custom_plugins и lua_package_path .

  1. Добавить пользовательское имя плагина в: custom_plugins = <plugin-name>
  2. Установите плагин hello-world, выполнив следующие действия:

    • Если у вас есть исходный код вашего плагина, перейдите в него и выполните команду: luarocks make он установит ваш плагин.

    • Теперь вы должны выполнить команду: make install-dev убедитесь, что ваш плагин имеет makefile, например: enter image description here

    • Как только вы выполните эту команду make install-dev. Он создаст файл lua в таком месте:

      * 1072 / / / плагинов * / Плагин имя Ваш * / ваш-плагин-путь / ** lua_modules / доля Lua / 5,1 конг 1073 / ** ?. Lua

    • Просто скопируйте этот путь и добавьте его в файл конфигурации kong в lua_package_path

      lua_package_path = / ваш-плагин-путь / lua_modules / доля / Lua / 5,1 / конг / плагины / плагин-имя-файла / ?. Lua

  3. Просто начните конг: kong start --vv

0 голосов
/ 29 января 2019

@ user5377037 ответ содержит большинство важных деталей, я просто хотел упомянуть, что в версии Kong 0.14.x «custom_plugins» теперь просто «плагины».

Одна из причин этого изменения заключается в том, что теперь вы можете использовать это новое имя переменной, чтобы выбрать, загружать или не загружать плагины, поставляемые в комплекте с Kong - полезная функция для некоторых. Однако, если вы хотите загрузить свой пользовательский плагин И связанные плагины, теперь вам нужно указать ключевое слово bundled, чтобы указать, что вы хотите сохранить включенные в комплект плагины.

до 0.14.х

Практический эффект заключается в том, что в Конге <0.14.x: </p>

custom_plugins = plugin1,plugin2

Или

KONG_CUSTOM_PLUGINS=<plugin-name>

Пост 0.14.х

В Конге> = 0.14.x, теперь вы пишете:

plugins = bundled,plugin1,plugin2

или

KONG_PLUGINS=bundled,<plugin-name>

Если вы не используете bundled

Если вы не добавите ключевое слово bundled, вы, вероятно, столкнетесь с чем-то вроде этой ошибки:

nginx: [error] init_by_lua error: /usr/local/share/lua/5.1/kong/init.lua:292: key-auth plugin is in use but not enabled
stack traceback:
    [C]: in function 'assert'
    /usr/local/share/lua/5.1/kong/init.lua:292: in function 'init'
    init_by_lua:3: in main chunk

Это означает, что вы настроили свой прокси на использование какого-либо плагина, но теперь вы не загружаете этот плагин при запуске, поэтому Конг не знает, что делать, и выходит. По сути, вы будете загружать только один свой собственный плагин, который, вероятно, не то, что вы хотите.

lua_package_path

Примечания о lua_package_path и KONG_LUA_PACKAGE_PATH остаются такими же, как в посте пользователя 5377037.

Ссылки

0 голосов
/ 24 января 2019

Похоже, он не может найти файл handler.lua, который требуется. Можете ли вы запустить $ tree . в корне вашего проекта плагина?

Вот результат той же команды для тестового плагина, который я сделал некоторое время назад (https://github.com/jerneyio/kong-plugin-header-echo)

$ tree .
.
├── README.md
├── kong
│   └── plugins
│       └── kong-plugin-header-echo
│           ├── handler.lua
│           └── schema.lua
├── kong-plugin-header-echo-0.1.0-1.all.rock
└── kong-plugin-header-echo-0.1.0-1.rockspec

Кроме того, вы уверены, что ваш handler.lua выставлен в вашей скале? Опять же, удачный пример здесь:

$ cat kong-plugin-header-echo-0.1.0-1.rockspec 
package = "kong-plugin-header-echo"
version = "0.1.0-1"
source = {
   url = "git//github.com/jerneyio/kong-plugin-header-echo.git"
}
description = {
   homepage = "https://github.com/jerneyio/kong-plugin-header-echo",
   license = "MIT"
}
dependencies = {
  "lua >= 5.3",
  "kong >= 0.14"
}
build = {
   type = "builtin",
   modules = {
      ["kong.plugins.kong-plugin-header-echo.handler"] = "kong/plugins/kong-plugin-header-echo/handler.lua",
      ["kong.plugins.kong-plugin-header-echo.schema"] = "kong/plugins/kong-plugin-header-echo/schema.lua"
   }
}
...