Как сменить драйвер с Docker на Mocker

Мне просто любопытно, есть ли способ использовать драйвер макера рядом или вместо докера? Как fn вообще решает, какой из них использовать, если их больше одного? Причина в том, что, если это возможно, я мог бы попытаться реализовать еще один настоящий драйвер для другого механизма контейнеров. До сих пор я умудрился использовать mocker в качестве драйвера, но до сих пор не выяснил, как заставить fn использовать его вместо docker.

1 ответ

Решение

Вот пример для создания fn с расширениями, расположенный здесь: https://github.com/fnproject/fn/blob/master/examples/extensions/main.go#L16 - для сборки с пользовательским драйвером, на данный момент он требует использования того же процесса (т. е. нет способа настроить другой драйвер во время выполнения из двоичного файла fn-ядра без его расширения).

Чтобы построить с альтернативным драйвером, таким как mocker, пользователь должен использовать agent.WithDockerDriver Опция для указания драйвера при создании агента описана здесь https://godoc.org/github.com/fnproject/fn/api/agent, а пример:

func main() {
  mocker := mock.New()
  // configure logstore, mq
  da := agent.NewDirectCallDataAccess(logstore, mq)
  magent := agent.New(da, agent.WithDockerDriver(mocker))

  fns := server.New(server.WithAgent(magent), /*other options*/)
  fns.Start(context.Background())
}

нам нужно привести в порядок интерфейс агента, чтобы их было проще создавать (доступ к данным запутан), но это не так уж плохо. большая часть этого может быть украдена из этого файла https://github.com/fnproject/fn/blob/master/api/server/server.go - нам нужно назвать его также WithDriver:)

Предполагая, что вы рассматриваете использование чего-то вроде rkt или более надежного драйвера на бэкэнде, возможно подключить это путем реализации интерфейса драйвера, и в прошлом мы пробовали это, но в настоящее время мы не поддерживаем его, так как это не было жизнеспособный вариант (проблемы с производительностью, возможно, улучшены с тех пор). было бы здорово посмотреть, удастся ли вам заставить работать rkt, с удовольствием возьмите пиар для него и выясните, где его поставить:)

Другие вопросы по тегам