注: 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 アクション」を参照してく� さい。また、キーを安全に保存する方法については、「暗号化されたシークレット」を参照してく� さい。