注: GitHub ホステッド ランナーは、現在 GitHub Enterprise Server でサポートされていません。 GitHub public roadmap で、今後の計画的なサポートの詳細を確認できます。
GitHub ホステッド ランナーについて
GitHub ホステッド ランナーは、既定でパブリック インターネットにアクセスできます。 ただし、これらのランナーは、パッケージ レジストリ、シークレット マネージャー、その他のオンプレミス サービスなど、プライベート ネットワーク上のリソースにアクセスすることもできます。
GitHub ホステッド ランナーは、すべての GitHub のお客様間で共有されるため、ワークフローの実行中にご自身のランナーだけにプライベート ネットワークを接続する方法が必要になります。 このアクセスを構成するには、異なるいくつかの方法があり、それぞれ異なる利点と欠点があります。
WireGuard を使用してネットワーク オーバーレイを作成する
API ゲートウェイのための別個のインフラストラクチャを維持することを望まない場合は、両方の場所で WireGuard を実行することで、ランナーとプライベート ネットワーク内のサービスの間にオーバーレイ ネットワークを作成できます。
このアプローチにはさまざまな欠点があります。
- プライベート サービスで実行されている WireGuard に到達するには、ワークフローで参照できる既知の IP アドレスとポートが必要です。これは、パブリック IP アドレスとポート、ネットワーク ゲートウェイ上のポート マッピング、または DNS を動的に更新するサービスのいずれかです。
- WireGuard は既定では NAT トラバーサルを処理しないため、このサービスを提供する方法を特定する必要があります。
- この接続は 1 対 1 であるため、高可用性または高スループットが必要な場合は、WireGuard 上にそれを構築する必要があります。
- ランナーとプライベート サービスの両方のキーを生成して安全に保存する必要があります。 WireGuard は UDP を使用するため、ネットワークで UDP トラフィックをサポートする必要があります。
利点もいくつかあります。WireGuard は既存のサーバーで実行できるので別個のインフラストラクチャを維持する必要がなく、また、GitHub ホステッド ランナーで十分にサポートされています。
例: WireGuard を構成する
このワークフロー例では、プライベート サービスに接続するように WireGuard を構成します。
この例では、プライベート ネットワークで実行されている WireGuard インスタンスの構成は次のとおりです。
192.168.1.1
というオーバーレイ ネットワーク IP アドレス1.2.3.4:56789
というパブリック IP アドレスとポート- 公開キー
examplepubkey1234...
GitHub Actions ランナーの WireGuard インスタンスの構成はこのとおりです。
192.168.1.2
というオーバーレイ ネットワーク IP アドレス- 秘密キーは、GitHub Actions シークレットとして
WIREGUARD_PRIVATE_KEY
に保存されます。
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 を使用してネットワーク オーバーレイを作成する
Tailscale は WireGuard 上に構築された商用製品です。 このオプションは WireGuard によく似ていますが、Tailscale はオープンソース コンポーネントではなく完全な製品エクスペリエンスである点が異なります。
欠点は WireGuard に似ています。接続は 1 対 1 であるため、高可用性または高スループットのために追加の作業を行うことが必要な場合があります。 キーを生成して安全に保存する必要があります。 プロトコルはまだ UDP であるため、ネットワークで UDP トラフィックをサポートする必要があります。
ただし、WireGuard に勝るいくつかの利点があります。NAT トラバーサルが組み込まれているため、パブリック インターネットにポートを公開する必要はありません。 Tailscale では、オーバーレイ ネットワークに接続する 1 つのステップで GitHub Actions ワークフローが提供されるため、これらのオプションの中では最もすばやく起動して実行できます。
詳しく、Tailscale GitHub アクションに関するページをご覧ください。また、キーを安全に保存する方法については、「暗号化されたシークレット」をご覧ください。