Informationen zu privaten Azure-Netzwerken für GitHubgehostete Runner
Um GitHub-gehostete Runner mit Azure VNET zu verwenden, konfigurieren Sie zuerst Ihre Azure-Ressourcen. Erstellen Sie dann eine private Netzwerkkonfiguration in GitHub.
Die folgenden Vorgehensweisen begleiten Sie durch diese beiden Schritte.
Weitere Informationen zur Behebung häufiger Probleme bei der Nutzung von GitHub-gehosteten Runnern mit Azure VNET findest du unter Fehlerbehebung von Azure-Privatnetzwerkkonfigurationen für in GitHub gehostete Runner in Ihrer Organisation.
Konfigurieren ihrer Azure-Ressourcen
Sie verwenden ein Skript, um die Konfiguration Ihrer Azure-Ressourcen zu automatisieren.
Voraussetzungen
-
Verwenden Sie ein Azure-Konto mit der Subscription „Teilnehmerrolle“ und der „Netzwerkteilnehmerrolle“. Mit diesen Rollen können Sie den
GitHub.Network-Ressourcenanbieter registrieren und das Subnetz delegieren. Weitere Informationen finden Sie unter Integrierte Azure-Rollen auf Microsoft Learn. -
Um die Subnetze ordnungsgemäß den richtigen Benutzer*innen zuzuordnen, müssen
NetworkSettings-Ressourcen von Azure in denselben Abonnements erstellt werden, in denen virtuelle Netzwerke erstellt werden. -
Um die Ressourcenverfügbarkeit/Datenresidenz sicherzustellen, müssen Ressourcen in derselben Azure-Region erstellt werden.
-
Ausgehender Netzwerkdatenverkehr aus dem Subnetz darf nicht der TLS-Abfangen unterliegen, da unsere virtuellen Computer nicht für vertrauenswürdige Zwischenzertifikate konfiguriert sind, die Ihr Netzwerk zum Durchführen der TLS-Abfangen verwendet. Weitere Informationen finden Sie in der Microsoft-Dokumentation unter Zertifikaten, die von Azure Firewall Premium verwendet werden .
Wenn Sie TLS-Abfangen verwenden müssen, können Sie Zwischenzertifikate über ein benutzerdefiniertes Image installieren. Weitere Informationen findest du unter Verwenden von benutzerdefinierten Bildern.
-
Speichern Sie die folgende
.bicep-Datei. Nennen Sie die Dateiactions-nsg-deployment.bicep.Die bereitgestellte Datei
.bicepenthält den minimalen Satz von Regeln für die Verwendung von -gehosteten Runnern mit Azure VNET. Sie müssen unter Umständen Regeln für Ihren spezifischen Anwendungsfall hinzufügen.Wenn du GitHub Enterprise-Cloud mit Datenresidenz verwendest, musst du im Abschnitt
AllowOutBoundGitHubauch die eingehenden IP-Adressbereiche für GHE.com angeben. Weitere Informationen findest du unter Netzwerkdetails für GHE.com.Hinweis
Als Alternative zur folgenden Datei kannst du die Kommunikation zwischen GitHub Actions und den Runnern auch ermöglichen, indem du dieselben Firewalldomänen zulässt, die für das Kommunizieren zwischen selbstgehosteten Runnern und GitHub benötigt werden. Weitere Informationen finden Sie unter Referenzen zu selbstgehosteten Runnern. Um den geeigneten Subnetz-IP-Adressbereich zu ermitteln, empfehlen wir, einen Puffer von 30 % zur erwarteten maximalen Auftragsparallelität hinzuzufügen. Wenn die Runner deiner Netzwerkkonfiguration beispielsweise auf eine maximale Parallelität von 300 Jobs festgelegt sind, empfiehlt es sich, einen Subnetz-IP-Adressbereich zu verwenden, der mindestens 390 Runner aufnehmen kann. Dieser Puffer stellt sicher, dass dein Netzwerk unerwartete Erhöhungen der VM verarbeiten kann, um die Job-Parallelität zu erfüllen, ohne dass keine IP-Adressen mehr vorhanden sind.
Bicep @description('NSG for outbound rules') param location string param nsgName string = 'actions_NSG' resource actions_NSG 'Microsoft.Network/networkSecurityGroups@2017-06-01' = { name: nsgName location: location properties: { securityRules: [ { name: 'AllowVnetOutBoundOverwrite' properties: { protocol: 'TCP' sourcePortRange: '*' destinationPortRange: '443' sourceAddressPrefix: '*' destinationAddressPrefix: 'VirtualNetwork' access: 'Allow' priority: 200 direction: 'Outbound' destinationAddressPrefixes: [] } } { name: 'AllowOutBoundActions' properties: { protocol: '*' sourcePortRange: '*' destinationPortRange: '443' sourceAddressPrefix: '*' access: 'Allow' priority: 210 direction: 'Outbound' destinationAddressPrefixes: [ '4.175.114.51/32' '20.102.35.120/32' '4.175.114.43/32' '20.72.125.48/32' '20.19.5.100/32' '20.7.92.46/32' '20.232.252.48/32' '52.186.44.51/32' '20.22.98.201/32' '20.246.184.240/32' '20.96.133.71/32' '20.253.2.203/32' '20.102.39.220/32' '20.81.127.181/32' '52.148.30.208/32' '20.14.42.190/32' '20.85.159.192/32' '52.224.205.173/32' '20.118.176.156/32' '20.236.207.188/32' '20.242.161.191/32' '20.166.216.139/32' '20.253.126.26/32' '52.152.245.137/32' '40.118.236.116/32' '20.185.75.138/32' '20.96.226.211/32' '52.167.78.33/32' '20.105.13.142/32' '20.253.95.3/32' '20.221.96.90/32' '51.138.235.85/32' '52.186.47.208/32' '20.7.220.66/32' '20.75.4.210/32' '20.120.75.171/32' '20.98.183.48/32' '20.84.200.15/32' '20.14.235.135/32' '20.10.226.54/32' '20.22.166.15/32' '20.65.21.88/32' '20.102.36.236/32' '20.124.56.57/32' '20.94.100.174/32' '20.102.166.33/32' '20.31.193.160/32' '20.232.77.7/32' '20.102.38.122/32' '20.102.39.57/32' '20.85.108.33/32' '40.88.240.168/32' '20.69.187.19/32' '20.246.192.124/32' '20.4.161.108/32' '20.22.22.84/32' '20.1.250.47/32' '20.237.33.78/32' '20.242.179.206/32' '40.88.239.133/32' '20.121.247.125/32' '20.106.107.180/32' '20.22.118.40/32' '20.15.240.48/32' '20.84.218.150/32' ] } } { name: 'AllowOutBoundGitHub' properties: { protocol: '*' sourcePortRange: '*' destinationPortRange: '443' sourceAddressPrefix: '*' access: 'Allow' priority: 220 direction: 'Outbound' destinationAddressPrefixes: [ '140.82.112.0/20' '143.55.64.0/20' '185.199.108.0/22' '192.30.252.0/22' '20.175.192.146/32' '20.175.192.147/32' '20.175.192.149/32' '20.175.192.150/32' '20.199.39.227/32' '20.199.39.228/32' '20.199.39.231/32' '20.199.39.232/32' '20.200.245.241/32' '20.200.245.245/32' '20.200.245.246/32' '20.200.245.247/32' '20.200.245.248/32' '20.201.28.144/32' '20.201.28.148/32' '20.201.28.149/32' '20.201.28.151/32' '20.201.28.152/32' '20.205.243.160/32' '20.205.243.164/32' '20.205.243.165/32' '20.205.243.166/32' '20.205.243.168/32' '20.207.73.82/32' '20.207.73.83/32' '20.207.73.85/32' '20.207.73.86/32' '20.207.73.88/32' '20.217.135.1/32' '20.233.83.145/32' '20.233.83.146/32' '20.233.83.147/32' '20.233.83.149/32' '20.233.83.150/32' '20.248.137.48/32' '20.248.137.49/32' '20.248.137.50/32' '20.248.137.52/32' '20.248.137.55/32' '20.26.156.215/32' '20.26.156.216/32' '20.26.156.211/32' '20.27.177.113/32' '20.27.177.114/32' '20.27.177.116/32' '20.27.177.117/32' '20.27.177.118/32' '20.29.134.17/32' '20.29.134.18/32' '20.29.134.19/32' '20.29.134.23/32' '20.29.134.24/32' '20.87.245.0/32' '20.87.245.1/32' '20.87.245.4/32' '20.87.245.6/32' '20.87.245.7/32' '4.208.26.196/32' '4.208.26.197/32' '4.208.26.198/32' '4.208.26.199/32' '4.208.26.200/32' '4.225.11.196/32' '4.237.22.32/32' ] } } { name: 'AllowStorageOutbound' properties: { protocol: '*' sourcePortRange: '*' destinationPortRange: '443' sourceAddressPrefix: '*' destinationAddressPrefix: 'Storage' access: 'Allow' priority: 230 direction: 'Outbound' destinationAddressPrefixes: [] } } ] } }@description('NSG for outbound rules') param location string param nsgName string = 'actions_NSG' resource actions_NSG 'Microsoft.Network/networkSecurityGroups@2017-06-01' = { name: nsgName location: location properties: { securityRules: [ { name: 'AllowVnetOutBoundOverwrite' properties: { protocol: 'TCP' sourcePortRange: '*' destinationPortRange: '443' sourceAddressPrefix: '*' destinationAddressPrefix: 'VirtualNetwork' access: 'Allow' priority: 200 direction: 'Outbound' destinationAddressPrefixes: [] } } { name: 'AllowOutBoundActions' properties: { protocol: '*' sourcePortRange: '*' destinationPortRange: '443' sourceAddressPrefix: '*' access: 'Allow' priority: 210 direction: 'Outbound' destinationAddressPrefixes: [ '4.175.114.51/32' '20.102.35.120/32' '4.175.114.43/32' '20.72.125.48/32' '20.19.5.100/32' '20.7.92.46/32' '20.232.252.48/32' '52.186.44.51/32' '20.22.98.201/32' '20.246.184.240/32' '20.96.133.71/32' '20.253.2.203/32' '20.102.39.220/32' '20.81.127.181/32' '52.148.30.208/32' '20.14.42.190/32' '20.85.159.192/32' '52.224.205.173/32' '20.118.176.156/32' '20.236.207.188/32' '20.242.161.191/32' '20.166.216.139/32' '20.253.126.26/32' '52.152.245.137/32' '40.118.236.116/32' '20.185.75.138/32' '20.96.226.211/32' '52.167.78.33/32' '20.105.13.142/32' '20.253.95.3/32' '20.221.96.90/32' '51.138.235.85/32' '52.186.47.208/32' '20.7.220.66/32' '20.75.4.210/32' '20.120.75.171/32' '20.98.183.48/32' '20.84.200.15/32' '20.14.235.135/32' '20.10.226.54/32' '20.22.166.15/32' '20.65.21.88/32' '20.102.36.236/32' '20.124.56.57/32' '20.94.100.174/32' '20.102.166.33/32' '20.31.193.160/32' '20.232.77.7/32' '20.102.38.122/32' '20.102.39.57/32' '20.85.108.33/32' '40.88.240.168/32' '20.69.187.19/32' '20.246.192.124/32' '20.4.161.108/32' '20.22.22.84/32' '20.1.250.47/32' '20.237.33.78/32' '20.242.179.206/32' '40.88.239.133/32' '20.121.247.125/32' '20.106.107.180/32' '20.22.118.40/32' '20.15.240.48/32' '20.84.218.150/32' ] } } { name: 'AllowOutBoundGitHub' properties: { protocol: '*' sourcePortRange: '*' destinationPortRange: '443' sourceAddressPrefix: '*' access: 'Allow' priority: 220 direction: 'Outbound' destinationAddressPrefixes: [ '140.82.112.0/20' '143.55.64.0/20' '185.199.108.0/22' '192.30.252.0/22' '20.175.192.146/32' '20.175.192.147/32' '20.175.192.149/32' '20.175.192.150/32' '20.199.39.227/32' '20.199.39.228/32' '20.199.39.231/32' '20.199.39.232/32' '20.200.245.241/32' '20.200.245.245/32' '20.200.245.246/32' '20.200.245.247/32' '20.200.245.248/32' '20.201.28.144/32' '20.201.28.148/32' '20.201.28.149/32' '20.201.28.151/32' '20.201.28.152/32' '20.205.243.160/32' '20.205.243.164/32' '20.205.243.165/32' '20.205.243.166/32' '20.205.243.168/32' '20.207.73.82/32' '20.207.73.83/32' '20.207.73.85/32' '20.207.73.86/32' '20.207.73.88/32' '20.217.135.1/32' '20.233.83.145/32' '20.233.83.146/32' '20.233.83.147/32' '20.233.83.149/32' '20.233.83.150/32' '20.248.137.48/32' '20.248.137.49/32' '20.248.137.50/32' '20.248.137.52/32' '20.248.137.55/32' '20.26.156.215/32' '20.26.156.216/32' '20.26.156.211/32' '20.27.177.113/32' '20.27.177.114/32' '20.27.177.116/32' '20.27.177.117/32' '20.27.177.118/32' '20.29.134.17/32' '20.29.134.18/32' '20.29.134.19/32' '20.29.134.23/32' '20.29.134.24/32' '20.87.245.0/32' '20.87.245.1/32' '20.87.245.4/32' '20.87.245.6/32' '20.87.245.7/32' '4.208.26.196/32' '4.208.26.197/32' '4.208.26.198/32' '4.208.26.199/32' '4.208.26.200/32' '4.225.11.196/32' '4.237.22.32/32' ] } } { name: 'AllowStorageOutbound' properties: { protocol: '*' sourcePortRange: '*' destinationPortRange: '443' sourceAddressPrefix: '*' destinationAddressPrefix: 'Storage' access: 'Allow' priority: 230 direction: 'Outbound' destinationAddressPrefixes: [] } } ] } }
1. Rufe die databaseId für deine Organisation ab
Tipp
Dein Token erfordert mindestens read:org-Berechtigungen zum Ausführen einer erfolgreichen Abfrage.
Du kannst die folgende GraphQL-Abfrage verwenden, um deine Organisations-databaseId abzurufen. Du verwendest die Organisations-databaseId für den Wert der DATABASE_ID-Umgebungsvariablen im nächsten Schritt. Weitere Informationen über das Arbeiten mit GraphQL findest du unter Erstellen von Aufrufen mit GraphQL.
| Abfragevariable | Beschreibung |
|---|---|
login | Der Login für Ihr Organisationskonto, den Sie erkennen können, indem Sie sich die URL Ihrer Organisation ansehen, https://github.com/organizations/ORGANIZATION_LOGIN. |
query(
$login: String!
){
organization (login: $login)
{
login
databaseId
}
}
'
Variables
{
"login": "ORGANIZATION_LOGIN"
}
Alternativ können Sie den folgenden Curl-Befehl verwenden, um Ihr databaseId zu finden.
curl -H "Authorization: Bearer BEARER_TOKEN" -X POST \
-d '{ "query": "query($login: String!) { organization (login: $login) { login databaseId } }" ,
"variables": {
"login": "ORGANIZATION_LOGIN"
}
}' \
https://api.github.com/graphql
curl -H "Authorization: Bearer BEARER_TOKEN" -X POST \
-d '{ "query": "query($login: String!) { organization (login: $login) { login databaseId } }" ,
"variables": {
"login": "ORGANIZATION_LOGIN"
}
}' \
https://api.github.com/graphql
2. Verwenden Sie einen Skript zum Konfigurieren Ihrer Azure-Ressourcen
Verwenden Sie das folgende Skript, um ein Subnetz für ein privates Azure-Netzwerk einzurichten. Im Skript werden alle erforderlichen Ressourcen in derselben Ressourcengruppe erstellt.
Um das Skript zu verwenden, füllen Sie die Platzhalterumgebungsvariablenwerte mit den tatsächlichen Werten aus, und führen Sie das Skript aus einer Bash-Shell oder Windows-Subsystem für Linux aus.
Hinweis
- Führen Sie den folgenden Skript im gleichen Verzeichnis aus, in dem Sie die Datei
actions-nsg-deployment.bicepgespeichert haben. - Verwenden Sie beim Festlegen der Umgebungsvariablen
YOUR_AZURE_LOCATIONden Namen Ihrer Region. Dieser Wert unterscheidet sich von dem Anzeigenamen Ihrer Region. Um eine Liste der Namen und Anzeigenamen anzuzeigen, verwenden Sieaz account list-locations -o table. - Wenn Sie die Netzwerkeinstellungsressource erstellen, wird eine Dienstzuordnungsverknüpfung auf das von Ihnen bereitgestellte Subnetz angewendet. Diese Verknüpfung verhindert das versehentliche Löschen des Subnetzes, während es von GitHub Actions verwendet wird.
- Wenn Sie dieses Skript so anpassen, dass Netzwerkressourcen in vorhandenen Subnetzen verwendet werden, müssen Sie sicherstellen, dass die mit dem Subnetz verbundenen vorhandenen Netzwerkschnittstellen (NICs) gelöscht werden, bevor das Subnetz an den GitHub Actions-Dienst delegiert wird. Andernfalls kann der Dienst den Dienstzuordnungslink nicht auf das Subnetz anwenden.
#!/bin/bash
# This script creates the following resources in the specified subscription:
# - Resource group
# - Network Security Group rules
# - Virtual network (vnet) and subnet
# - Network Settings with specified subnet and GitHub Organization database ID
#
# It also registers the `GitHub.Network` resource provider with the subscription,
# delegates the created subnet to the Actions service via the `GitHub.Network/NetworkSettings`
# resource type, and applies the NSG rules to the created subnet.
# stop on failure
set -e
#set environment
export AZURE_LOCATION=YOUR_AZURE_LOCATION
export SUBSCRIPTION_ID=YOUR_SUBSCRIPTION_ID
export RESOURCE_GROUP_NAME=YOUR_RESOURCE_GROUP_NAME
export VNET_NAME=YOUR_VNET_NAME
export SUBNET_NAME=YOUR_SUBNET_NAME
export NSG_NAME=YOUR_NSG_NAME
export NETWORK_SETTINGS_RESOURCE_NAME=YOUR_NETWORK_SETTINGS_RESOURCE_NAME
export DATABASE_ID=YOUR_DATABASE_ID
export API_VERSION=2024-04-02
# These are the default values. You can adjust your address and subnet prefixes.
export ADDRESS_PREFIX=10.0.0.0/16
export SUBNET_PREFIX=10.0.0.0/24
echo
echo login to Azure
. az login --output none
echo
echo set account context $SUBSCRIPTION_ID
. az account set --subscription $SUBSCRIPTION_ID
echo
echo Register resource provider GitHub.Network
. az provider register --namespace GitHub.Network
echo
echo Create resource group $RESOURCE_GROUP_NAME at $AZURE_LOCATION
. az group create --name $RESOURCE_GROUP_NAME --location $AZURE_LOCATION
echo
echo Create NSG rules deployed with 'actions-nsg-deployment.bicep' file
. az deployment group create --resource-group $RESOURCE_GROUP_NAME --template-file ./actions-nsg-deployment.bicep --parameters location=$AZURE_LOCATION nsgName=$NSG_NAME
echo
echo Create vnet $VNET_NAME and subnet $SUBNET_NAME
. az network vnet create --resource-group $RESOURCE_GROUP_NAME --name $VNET_NAME --address-prefix $ADDRESS_PREFIX --subnet-name $SUBNET_NAME --subnet-prefixes $SUBNET_PREFIX
echo
echo Delegate subnet to GitHub.Network/networkSettings and apply NSG rules
. az network vnet subnet update --resource-group $RESOURCE_GROUP_NAME --name $SUBNET_NAME --vnet-name $VNET_NAME --delegations GitHub.Network/networkSettings --network-security-group $NSG_NAME
echo
echo Create network settings resource $NETWORK_SETTINGS_RESOURCE_NAME
. az resource create --resource-group $RESOURCE_GROUP_NAME --name $NETWORK_SETTINGS_RESOURCE_NAME --resource-type GitHub.Network/networkSettings --properties "{ \"location\": \"$AZURE_LOCATION\", \"properties\" : { \"subnetId\": \"/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME\", \"businessId\": \"$DATABASE_ID\" }}" --is-full-object --output table --query "{GitHubId:tags.GitHubId, name:name}" --api-version $API_VERSION
echo
echo To clean up and delete resources run the following command:
echo az group delete --resource-group $RESOURCE_GROUP_NAME
#!/bin/bash
# This script creates the following resources in the specified subscription:
# - Resource group
# - Network Security Group rules
# - Virtual network (vnet) and subnet
# - Network Settings with specified subnet and GitHub Organization database ID
#
# It also registers the `GitHub.Network` resource provider with the subscription,
# delegates the created subnet to the Actions service via the `GitHub.Network/NetworkSettings`
# resource type, and applies the NSG rules to the created subnet.
# stop on failure
set -e
#set environment
export AZURE_LOCATION=YOUR_AZURE_LOCATION
export SUBSCRIPTION_ID=YOUR_SUBSCRIPTION_ID
export RESOURCE_GROUP_NAME=YOUR_RESOURCE_GROUP_NAME
export VNET_NAME=YOUR_VNET_NAME
export SUBNET_NAME=YOUR_SUBNET_NAME
export NSG_NAME=YOUR_NSG_NAME
export NETWORK_SETTINGS_RESOURCE_NAME=YOUR_NETWORK_SETTINGS_RESOURCE_NAME
export DATABASE_ID=YOUR_DATABASE_ID
export API_VERSION=2024-04-02
# These are the default values. You can adjust your address and subnet prefixes.
export ADDRESS_PREFIX=10.0.0.0/16
export SUBNET_PREFIX=10.0.0.0/24
echo
echo login to Azure
. az login --output none
echo
echo set account context $SUBSCRIPTION_ID
. az account set --subscription $SUBSCRIPTION_ID
echo
echo Register resource provider GitHub.Network
. az provider register --namespace GitHub.Network
echo
echo Create resource group $RESOURCE_GROUP_NAME at $AZURE_LOCATION
. az group create --name $RESOURCE_GROUP_NAME --location $AZURE_LOCATION
echo
echo Create NSG rules deployed with 'actions-nsg-deployment.bicep' file
. az deployment group create --resource-group $RESOURCE_GROUP_NAME --template-file ./actions-nsg-deployment.bicep --parameters location=$AZURE_LOCATION nsgName=$NSG_NAME
echo
echo Create vnet $VNET_NAME and subnet $SUBNET_NAME
. az network vnet create --resource-group $RESOURCE_GROUP_NAME --name $VNET_NAME --address-prefix $ADDRESS_PREFIX --subnet-name $SUBNET_NAME --subnet-prefixes $SUBNET_PREFIX
echo
echo Delegate subnet to GitHub.Network/networkSettings and apply NSG rules
. az network vnet subnet update --resource-group $RESOURCE_GROUP_NAME --name $SUBNET_NAME --vnet-name $VNET_NAME --delegations GitHub.Network/networkSettings --network-security-group $NSG_NAME
echo
echo Create network settings resource $NETWORK_SETTINGS_RESOURCE_NAME
. az resource create --resource-group $RESOURCE_GROUP_NAME --name $NETWORK_SETTINGS_RESOURCE_NAME --resource-type GitHub.Network/networkSettings --properties "{ \"location\": \"$AZURE_LOCATION\", \"properties\" : { \"subnetId\": \"/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME\", \"businessId\": \"$DATABASE_ID\" }}" --is-full-object --output table --query "{GitHubId:tags.GitHubId, name:name}" --api-version $API_VERSION
echo
echo To clean up and delete resources run the following command:
echo az group delete --resource-group $RESOURCE_GROUP_NAME
Das Skript gibt die vollständige Payload für die erstellte Ressource zurück. Der in der Payload für die erstellte Ressource zurückgegebene GitHubId-Hashwert ist die ID der Netzwerkeinstellungsressource, die Sie in den nächsten Schritten beim Konfigurieren der Netzwerkkonfiguration mit GitHub verwenden.
Erstellen einer Netzwerkkonfiguration für Ihre Organisation in GitHub
Nachdem du deine Azure-Ressourcen konfiguriert hast, kannst du ein virtuelles Azure-Netzwerk (VNET) für private Netzwerke verwenden. Erstelle hierzu eine Netzwerkkonfiguration auf Organisationsebene. Anschließend kannst du diese Netzwerkkonfiguration Runnergruppen zuordnen.
Sobald die Netzwerkkonfiguration einer Runnergruppe zugeordnet ist, haben alle Runner in dieser Gruppe Zugriff auf das Azure-VNET, das mit der zugrunde liegenden Konfiguration verbunden wurde.
Voraussetzungen
Stellen Sie sicher, dass Ihre Azure-Ressourcen konfiguriert wurden, bevor Sie eine Netzwerkkonfiguration in GitHub hinzufügen. Weitere Informationen findest du unter Konfiguration privater Netzwerke für GitHub-gehostete Runner in Ihrer Organisation.
1. Füge eine neue Netzwerkkonfiguration für deine Organisation hinzu
-
Klicke in der rechten oberen Ecke von GitHub auf dein Profilbild und dann auf Your organizations.
-
Wählen Sie eine Organisation aus, indem Sie darauf klicken.
-
Klicke unter dem Organisationsnamen auf Settings. Wenn die Registerkarte „Einstellungen“ nicht angezeigt wird, wähle im Dropdownmenü die Option Einstellungen aus.

-
Klicke in der linken Seitenleiste auf Gehostetes-Compute-Netzwerk.
-
Klicke auf die Dropdownliste Neue Netzwerkkonfiguration. Klicken Sie dann auf Azure privates Netzwerk.
-
Benennen Sie Ihre Netzwerkkonfiguration.
-
Klicken Sie auf Azure Virtual Network hinzufügen.
-
Geben Sie im Popupfenster die Ressourcen-ID der Netzwerkeinstellungen ein, die Sie abgerufen haben, wenn Sie Ihre Azure Ressourcen für private Netzwerke konfiguriert haben.
-
Klicken Sie auf Azure Virtual Network hinzufügen.
2. Erstelle eine Runnergruppe für deine Organisation
Hinweis
Damit die Runnergruppe für Repositorys in deiner Organisationen zugänglich ist, müssen diese Repositorys einen Zugriff auf Organisationsebene für diese Runnergruppe besitzen. Weitere Informationen finden Sie unter Steuern des Zugriffs auf größere Runner.
- Erstelle eine neue Runnergruppe für deine Organisation. Weitere Informationen zum Erstellen einer Runnergruppe findest du unter Steuern des Zugriffs auf größere Runner.
- Wenn du eine Richtlinie für den Repositoryzugriff auswählen möchtest, wähle das Dropdownmenü Repositoryzugriff aus, und klicke auf eine Richtlinie. Sie können eine Runner-Gruppe so konfigurieren, dass sie für eine bestimmte Liste von Repositorys oder für alle Repositorys in der Organisation zugänglich ist.
- Verwenden Sie beim Konfigurieren Ihrer Läufergruppe unter "Netzwerkkonfigurationen" das Dropdownmenü, um die Netzwerkkonfiguration auszuwählen, die Sie für das Azure VNET erstellt haben.
- Klicke auf Gruppe erstellen, um die Gruppe zu erstellen und die Richtlinie anzuwenden.
3. Fügen Sie den GitHub-gehosteten Runner zur Runner-Gruppe der Organisation hinzu.
Hinweis
Wenn Sie Ihren GitHubgehosteten Läufer zu einer Läufergruppe hinzufügen, wählen Sie die Läufergruppe aus, die Sie in den vorherigen Verfahren erstellt haben.
- Fügen Sie den GitHub-gehosteten Runner zur Runner-Gruppe hinzu. Weitere Informationen finden Sie unter Verwalten größerer Runner.
4. Optional können Sie die Netzwerkkonfigurationen verwalten
-
Klicke in der rechten oberen Ecke von GitHub auf dein Profilbild und dann auf Your organizations.
-
Wählen Sie eine Organisation aus, indem Sie darauf klicken.
-
Klicke unter dem Organisationsnamen auf Settings. Wenn die Registerkarte „Einstellungen“ nicht angezeigt wird, wähle im Dropdownmenü die Option Einstellungen aus.

-
Klicke in der linken Seitenleiste auf Gehostetes-Compute-Netzwerk.
-
Um eine Netzwerkkonfiguration zu bearbeiten, klicken Sie rechts neben der Netzwerkkonfiguration auf . Klicken Sie dann auf „Konfiguration bearbeiten“.
-
Um eine Netzwerkkonfiguration zu deaktivieren, klicken Sie rechts neben der Netzwerkkonfiguration auf . Klicken Sie dann auf „Deaktivieren“.
-
Um eine Netzwerkkonfiguration zu löschen, klicken Sie rechts neben der Netzwerkkonfiguration auf . Klicken Sie dann auf Löschen.
5. Fügen Sie optional ein Failovernetzwerk zu einer Netzwerkkonfiguration hinzu.
Hinweis
Das VNET-Failover befindet sich in öffentliche Vorschau und unterliegt Änderungen.
Sie können ein Failovernetzwerk für Ihre Netzwerkkonfiguration konfigurieren. Ein Failovernetzwerk ist ein sekundäres Virtuelles Azure-Netzwerk-Subnetz, das sich in einer anderen Azure-Region als Ihrem primären Subnetz befinden kann. Wenn Ihr primäres Subnetz aufgrund eines regionalen Ausfalls oder einer anderen Unterbrechung nicht verfügbar ist, können Sie das Failovernetzwerk aktivieren, um den Läuferdatenverkehr über das sekundäre Subnetz weiterzuleiten und die Kontinuität für Ihre GitHub Actions Workflows aufrechtzuerhalten.
Wichtige Punkte zum VNET-Failover:
- Das Failoversubnetz kann sich in einer anderen Azure-Region als dem primären Subnetz befinden.
- Der Wechsel zwischen primären und Failoversubnetzen ist ein manueller Prozess. Sie aktivieren oder deaktivieren das Failovernetzwerk nach Eigenem Ermessen.
- Sowohl die primären als auch die Failoversubnetze müssen mit den erforderlichen Azure-Ressourcen (VNET/Subnetz, Netzwerkeinstellungen usw.) konfiguriert werden, bevor Sie Failover verwenden können.
- Das Failoversubnetz muss sich in einer unterstützten Region befinden.
Stellen Sie vor dem Hinzufügen eines Failovernetzwerks sicher, dass Sie die Azure-Ressourcen (VNET, Subnetz, Netzwerksicherheitsgruppe und Netzwerkeinstellungsressource) für das sekundäre Subnetz konfiguriert haben, indem Sie die oben beschriebenen Verfahren "Konfigurieren Ihrer Azure-Ressourcen" ausführen. Das Failoversubnetz kann sich in einer anderen Azure-Region als Ihrem primären Subnetz befinden.
-
Klicke in der rechten oberen Ecke von GitHub auf dein Profilbild und dann auf Your organizations.
-
Wählen Sie eine Organisation aus, indem Sie darauf klicken.
-
Klicke unter dem Organisationsnamen auf Settings. Wenn die Registerkarte „Einstellungen“ nicht angezeigt wird, wähle im Dropdownmenü die Option Einstellungen aus.

-
Klicke in der linken Seitenleiste auf Gehostetes-Compute-Netzwerk.
-
Klicken Sie auf das Bearbeitungssymbol () neben der Netzwerkkonfiguration, der Sie ein Failovernetzwerk hinzufügen möchten. Klicken Sie dann auf „Konfiguration bearbeiten“.
-
Klicken Sie auf "Failovernetzwerk hinzufügen".
-
Geben Sie im Popupfenster die Ressourcen-ID der Netzwerkeinstellungen für Ihr sekundäres Azure-Subnetz (Failover) ein.
-
Klicken Sie auf Azure Virtual Network hinzufügen.
-
Nun werden zwei Subnetze in der Netzwerkkonfiguration aufgeführt: die primäre und das Failover, die entsprechend bezeichnet werden.
6. Optional können Sie das Failovernetzwerk aktivieren oder deaktivieren.
Nachdem Sie ein Failovernetzwerk hinzugefügt haben, können Sie es aktivieren, um den Datenverkehr über das sekundäre Subnetz weiterzuleiten oder zu deaktivieren, um zum primären Subnetz zurückzukehren.
-
Klicke in der rechten oberen Ecke von GitHub auf dein Profilbild und dann auf Your organizations.
-
Wählen Sie eine Organisation aus, indem Sie darauf klicken.
-
Klicke unter dem Organisationsnamen auf Settings. Wenn die Registerkarte „Einstellungen“ nicht angezeigt wird, wähle im Dropdownmenü die Option Einstellungen aus.

-
Klicke in der linken Seitenleiste auf Gehostetes-Compute-Netzwerk.
-
Klicken Sie neben der Netzwerkkonfiguration auf das Bearbeitungssymbol (). Klicken Sie dann auf „Konfiguration bearbeiten“.
-
Um zum Failovernetzwerk zu wechseln, klicken Sie auf Failover-VNET aktivieren. Der Runner-Traffic wird über das Failover-Subnetz weitergeleitet.
-
Um zum primären Netzwerk zurückzukehren, klicken Sie auf Failover-VNET deaktivieren. Der Runner-Datenverkehr kehrt zum primären Subnetz zurück.
Hinweis
Wenn GitHub das Failover während eines regionalen Ausfalls automatisch aktiviert wird, werden Sie über das Protokollereignis und durch eine E-Mail benachrichtigt. Sie müssen das Failover manuell deaktivieren, um zum primären Subnetz zurückzukehren, wenn der Ausfall aufgelöst wird.
Löschen eines Subnetzes
Wenn Sie die Netzwerkeinstellungsressource erstellen, wird eine Dienstzuordnungsverknüpfung auf das von Ihnen bereitgestellte Subnetz angewendet. Diese Verknüpfung verhindert das versehentliche Löschen des Subnetzes, während es von GitHub Actions verwendet wird.
Um das Subnetz zu löschen, muss diese Dienstzuordnungsverknüpfung zuerst entfernt werden. Die Dienstzuordnungsverknüpfung wird automatisch sicher entfernt, sobald die Netzwerkeinstellungsressource gelöscht wird.
Um die Netzwerkeinstellungsressource zu löschen, muss die Netzwerkkonfiguration, die sie verwendet, zuerst gelöscht werden.
-
Klicke in der rechten oberen Ecke von GitHub auf dein Profilbild und dann auf Your organizations.
-
Wählen Sie eine Organisation aus, indem Sie darauf klicken.
-
Klicke unter dem Organisationsnamen auf Settings. Wenn die Registerkarte „Einstellungen“ nicht angezeigt wird, wähle im Dropdownmenü die Option Einstellungen aus.

-
Klicke in der linken Seitenleiste auf Gehostetes-Compute-Netzwerk.
-
Öffnen Sie die Netzwerkkonfiguration, die das zu löschende Subnetz verwendet.
-
Überprüfen Sie die Liste der Runner-Gruppen mithilfe der Netzwerkkonfiguration.
-
Klicken Sie rechts oben auf die Schaltfläche „“. Klicken Sie dann auf Konfiguration löschen.
-
Um die Netzwerkeinstellungsressource zu löschen und den Dienstzuordnungslink zu entfernen, verwenden Sie ihre eigenen Eingaben mit folgenden Befehlen mit der Azure CLI. Weitere Informationen finden Sie in der Dokumentation der Azure-Befehlszeilenschnittstelle (Command-Line Interface, CLI).
Bash az account set --subscription $SUBSCRIPTION_ID az resource delete -g $RESOURCE_GROUP_NAME --name $NETWORK_SETTINGS_RESOURCE_NAME --resource-type 'GitHub.Network/networkSettings' --api-version $API_VERSION
az account set --subscription $SUBSCRIPTION_ID az resource delete -g $RESOURCE_GROUP_NAME --name $NETWORK_SETTINGS_RESOURCE_NAME --resource-type 'GitHub.Network/networkSettings' --api-version $API_VERSION -
Löschen Sie das Subnetz in Azure. Weitere Informationen finden Sie unter Löschen eines Subnetzes auf Microsoft Learn.