Однако эти средства выполнения тестов также могут получить доступ к ресурсам в частной сети, например к реестру пакетов, диспетчеру секретов или другим локальным службам.
Средства выполнения тестов, размещенные в GitHub, используются совместно всеми клиентами GitHub, поэтому вам потребуется способ подключения частной сети только к вашим средствам выполнения сети во время выполнения ими рабочих процессов.
Существует несколько различных подходов, которые можно использовать для настройки этого доступа, каждый из которых имеет различные преимущества и недостатки.
- Создание наложения сети с помощью WireGuard
Если вы не хотите создавать отдельную инфраструктуру для шлюза API, можно создать сеть наложения между средством выполнения тестов и службой в частной сети, запустив WireGuard в обоих местах. У этого подхода есть несколько недостатков.
Чтобы подключиться к WireGuard, работающей в частной службе, потребуется известные IP-адрес и порт, на которые может ссылаться рабочий процесс: это может быть общедоступные IP-адрес и порт, сопоставление портов в сетевом шлюзе или служба, которая динамически обновляет DNS.
В WireGuard отсутствует встроенная функция обработки обхода NAT, поэтому вам потребуется определить способ предоставления этой службы.
Это подключение "один к одному", поэтому, если требуется высокий уровень доступности или высокая пропускная способность, необходимо создать это на основе WireGuard.
- Вам потребуется создать и безопасно хранить ключи для средства выполнения тестов и частной службы.
- WireGuard использует UDP, поэтому ваша сеть должна поддерживать трафик UDP.
- Однако имеются и преимущества, например, вы можете запустить WireGuard на существующем сервере, поэтому вам не нужна отдельная инфраструктура, и она хорошо поддерживается средствами выполнения тестов, размещенными в GitHub.
- Пример. Настройка WireGuard В этом примере рабочий процесс настраивает WireGuard для подключения к частной службе.
В этом примере экземпляр WireGuard, запущенный в частной сети, имеет следующую конфигурацию:
IP-адрес сети наложения 192.168.1.1
Общедоступный IP-адрес и порт 1.2.3.4:56789
Открытый ключ examplepubkey1234...
- Экземпляр WireGuard в средстве выполнения тестов GitHub Actions имеет следующую конфигурацию:
- IP-адрес сети наложения
192.168.1.2
- Закрытые ключи хранятся в виде секретаGitHub Actions в
WIREGUARD_PRIVATE_KEY
Дополнительные сведения см. в разделе Краткое руководство по WireGuard, а также в разделе "Зашифрованные секреты", чтобы узнать, как безопасно хранить ключи.
- Использование Tailscale для создания наложения сети
- Tailscale — это коммерческий продукт на базе WireGuard.
name: WireGuard example
on:
workflow_dispatch:
jobs:
wireguard_example:
runs-on: ubuntu-latest
steps:
- run: sudo apt install wireguard
- run: echo "$" > privatekey
- run: sudo ip link add dev wg0 type wireguard
- run: sudo ip address add dev wg0 192.168.1.2 peer 192.168.1.1
- run: sudo wg set wg0 listen-port 48123 private-key privatekey peer examplepubkey1234... allowed-ips 0.0.0.0/0 endpoint 1.2.3.4:56789
- run: sudo ip link set up dev wg0
- run: curl -vvv http://192.168.1.1
Данный вариант очень похож на WireGuard, за исключением того, что Tailscale является более полноценным продуктом, а не компонентом с открытым кодом.
Его недостатки аналогичны WireGuard: подключение "один к одному", поэтому может потребоваться дополнительная работа для обеспечения высокой доступности или высокой пропускной способности.
Вам по-прежнему придется создавать ключи и безопасно хранить их. Протокол по-прежнему UDP, поэтому ваша сеть должна поддерживать трафик UDP.
Тем не менее, есть некоторые преимущества по сравнению с WireGuard: функция обхода NAT является встроенной, поэтому вам не нужно предоставлять порт для подключения к общедоступному Интернету. На сегодняшний день это самый быстрый из обсуждаемых вариантов, поскольку Tailscale предоставляет рабочий процесс GitHub Actions с одним шагом для подключения к сети наложения. Дополнительные сведения о безопасном хранении ключей см. в разделе Tailscale GitHub Action, а также в разделе Зашифрованные секреты.
However, there are some advantages over WireGuard: NAT traversal is built-in, so you don't need to expose a port to the public internet. It is by far the quickest of these options to get up and running, since Tailscale provides an GitHub Actions workflow with a single step to connect to the overlay network.
For more information, see the