Расширенные функции Shifu: промежуточное ПО HTTP-SSH для промежуточного ПО командной строки.

представлять

Чтобы дать Shifu возможность интегрировать драйверы разработчиков, мы написали простое промежуточное ПО HTTP-SSH для разработчиков.

дизайн

Это промежуточное ПО HTTP-SSH разработано следующим образом:

  • Установите SSH-соединение с контейнером из промежуточного программного обеспечения, используя открытый ключ, предоставленный контейнером.
  • Это SSH-соединение будет использоваться в качестве обратного HTTP-прокси для указанного HTTP-порта на локальном хосте.
  • Это промежуточное ПО будет напрямую выполнять содержимое тела HTTP-запроса в сеансе SSH.
  • Промежуточное программное обеспечение ответит запрашивающей стороне результатом выполнения содержимого и агентом состояния.

Функция

Проксируйте содержимое тела HTTP в оболочку SSH и выполните

Основная функция промежуточного программного обеспечения — прикрепить тайм-аут к содержимому тела в любом HTTP-запросе и выполнить

Пример:

При использовании curlдля отправки запроса на указанный URL-адрес команда будет выглядеть следующим образом:

curl -X POST -d "ping 8.8.8.8" http://example.com

Этот запрос будет передан промежуточным программным обеспечением в контейнер драйвера shellдля выполнения:

~ # ping 8.8.8.8

Результат HTTP выглядит следующим образом (обратите внимание, что этот вывод неполный, поскольку мы установили переменную среды для тайм-аута команды):

PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=36 time=47.227 ms
64 bytes from 8.8.8.8: seq=1 ttl=36 time=50.137 ms
64 bytes from 8.8.8.8: seq=3 ttl=36 time=47.619 ms

Проверьте наличие session.Run(cmd)ошибок и установите коды состояния возврата HTTP.

Текущее промежуточное ПО вернется в случае успеха 200, ошибки или тайм-аута.400

Для команды ошибки промежуточное ПО объединит и вернет ее через тело stdoutHTTP.stderr

использовать

Мы написали пример Dockerfile [examples/driver_utils/simple-alpine/Dockerfile.sample](https://github.com/Edgenesis/shifu/blob/main/examples/driver_utils/simple-alpine/Dockerfile.sample), демонстрирующий, как добавить это промежуточное ПО в образ alpine Docker.

Упакованный образ Docker будет использовать следующие переменные, поэтому нам нужно настроить их в файле yaml :

  • EDGEDEVICE_DRIVER_SSH_KEY_PATH(необходимый)
    • Путь к SSH-ключу, используемому для установки SSH-соединения с самим собой.
  • EDGEDEVICE_DRIVER_HTTP_PORT(необязательный)
    • Порт службы HTTP, по умолчанию11112
  • EDGEDEVICE_DRIVER_EXEC_TIMEOUT_SECOND(необязательный)
    • Таймаут выполнения команды timeout <seconds>реализуется добавлением перед командой
  • EDGEDEVICE_DRIVER_SSH_USER(необязательный)
    • Мы подключаемся по SSH к пользователю нашего собственного контейнера, по умолчаниюroot

      Эта статья опубликована Boundless Authorization

おすすめ

転載: blog.csdn.net/Edgenesis/article/details/129564826