О частных сетях Azure для GitHub-hosted runners
Чтобы использовать GitHubразмещенных в среде runners с виртуальной сетью Azure, сначала настройте ресурсы Azure. Затем создайте конфигурацию частной сети в GitHub.
Следующие процедуры помогут вам выполнить оба шага.
Дополнительные сведения об устранении распространенных проблем с использованием GitHubразмещенных с помощью виртуальной сети Azure см. в статье Устранение неполадок с конфигурациями Azure private network для раннеров на GitHub в вашем корпоративном офисе.
Configuring your Azure resources
Вы будете использовать скрипт для автоматизации настройки ресурсов Azure.
Необходимые компоненты
-
Используйте учетную запись Azure с ролью участника подписки и ролью участника сети. Эти роли позволяют зарегистрировать
GitHub.Networkпоставщика ресурсов и делегировать подсеть. Дополнительные сведения см. в статье о встроенных ролях Azure в Microsoft Learn. -
Чтобы правильно связать подсети с правильным пользователем, ресурсы Azure
NetworkSettingsдолжны быть созданы в тех же подписках, где создаются виртуальные сети. -
Чтобы обеспечить доступность ресурсов и расположение данных, ресурсы должны создаваться в одном регионе Azure.
-
Исходящий сетевой трафик из подсети не должен подвергаться перехвату через TLS, так как наши виртуальные машины не будут настроены доверять промежуточным сертификатам, которые ваша сеть использует для перехвата TLS. Для получения дополнительной информации см. Сертификаты, используемые Azure Firewall Premium , в документации Microsoft.
Если нужно использовать TLS-перехват, можно установить промежуточные сертификаты через пользовательский образ. См . раздел AUTOTITLE.
-
Сохраните следующий
.bicepфайл. Назовите файлactions-nsg-deployment.bicep.Указанный
.bicepфайл содержит минимальный набор правил для использования GitHubразмещенных с помощью виртуальной сети Azure. Возможно, вам потребуется добавить правила для конкретного варианта использования.Если вы используете GitHub Enterprise Cloud с размещением данных, в
AllowOutBoundGitHubразделе также необходимо включить диапазоны IP-адресов входящего трафика для GHE.com. См . раздел AUTOTITLE.Примечание.
В качестве альтернативы использованию следующего файла, чтобы разрешить GitHub Actions взаимодействовать с средствами выполнения, можно разрешить те же домены брандмауэра, которые необходимы для обмена данными между локальными запусками и GitHub. Дополнительные сведения см. в разделе Справочник по локальным запускам. Чтобы определить соответствующий диапазон IP-адресов подсети, рекомендуется добавить буфер на 30 % к максимальному параллелизму заданий, которые вы ожидаете. Например, если в параметрах запуска конфигурации сети задано максимальное значение параллелизма заданий 300, рекомендуется использовать диапазон IP-адресов подсети, который может содержать не менее 390 модулей выполнения. Этот буфер помогает убедиться, что сеть может обрабатывать непредвиденные увеличения виртуальной машины, чтобы соответствовать параллелизму заданий без использования IP-адресов.
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. Получение databaseId предприятия
Совет
Для выполнения успешного запроса маркеру потребуется минимальное read:enterprise разрешение.
Для получения предприятия databaseIdможно использовать следующий запрос GraphQL. Вы будете использовать предприятие databaseId для значения переменной DATABASE_ID среды на следующем шаге. Дополнительные сведения о работе с GraphQL см. в разделе Формирование вызовов с помощью GraphQL.
| Переменная запроса | Description |
|---|---|
slug | Слизь для вашей корпоративной учетной записи, которую можно определить, просматривая URL-адрес вашей организации https://github.com/enterprises/SLUG или https://SLUG.ghe.com. |
query(
$slug: String!
){
enterprise (slug: $slug)
{
slug
databaseId
}
}
'
Variables
{
"slug": "ENTERPRISE_SLUG"
}
Пример для GitHub.com
Для поиска databaseIdможно использовать следующую команду curl.
curl -H "Authorization: Bearer BEARER_TOKEN" -X POST \
-d '{ "query": "query($slug: String!) { enterprise (slug: $slug) { slug databaseId } }" ,
"variables": {
"slug": "ENTERPRISE_SLUG"
}
}' \
https://api.github.com/graphql
curl -H "Authorization: Bearer BEARER_TOKEN" -X POST \
-d '{ "query": "query($slug: String!) { enterprise (slug: $slug) { slug databaseId } }" ,
"variables": {
"slug": "ENTERPRISE_SLUG"
}
}' \
https://api.github.com/graphql
Пример для GHE.com
Вы можете использовать следующие GitHub CLI команды для получения databaseId. Замените SUBDOMAIN на поддомен GHE.comвашего предприятия .
gh auth login -s 'read:enterprise' -h SUBDOMAIN.ghe.com
gh api graphql --hostname SUBDOMAIN.ghe.com -f query='query($slug: String!) { enterprise (slug: $slug) { slug databaseId } }' -f slug='SUBDOMAIN'
gh auth login -s 'read:enterprise' -h SUBDOMAIN.ghe.com
gh api graphql --hostname SUBDOMAIN.ghe.com -f query='query($slug: String!) { enterprise (slug: $slug) { slug databaseId } }' -f slug='SUBDOMAIN'
2. Использование скрипта для настройки ресурсов Azure
Используйте следующий сценарий, чтобы настроить подсеть для частной сети Azure. Сценарий создает все ресурсы в одной группе ресурсов.
Чтобы использовать скрипт, заполнитель переменных среды фактическими значениями и запустите скрипт из оболочки Bash или подсистема Windows для Linux.
Примечание.
- Выполните следующий скрипт в том же каталоге, где сохранен
actions-nsg-deployment.bicepфайл. - При настройке переменной
YOUR_AZURE_LOCATIONсреды используйте имя региона. Это значение отличается от отображаемого имени региона. Чтобы просмотреть список имен и отображаемых имен, используйтеaz account list-locations -o table. - При создании ресурса параметров сети связь службы применяется к предоставленной подсети. Эта ссылка предотвращает случайное удаление подсети во время использования службой GitHub Actions .
- Если вы настраиваете этот сценарий для использования сетевых ресурсов в существующих подсетях, необходимо убедиться, что все существующие сетевые интерфейсы,подключенные к подсети, удаляются до делегирования подсети службе GitHub Actions . В противном случае служба не сможет применить ссылку связи службы к подсети.
#!/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 Enterprisedatabase 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 Enterprisedatabase 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
Скрипт вернет полную полезные данные для созданного ресурса. Хэш-значение GitHubId , возвращаемое в полезных данных для созданного ресурса, — это идентификатор ресурса параметров сети, который будет использоваться в следующих шагах при настройке конфигурации сети в GitHub.
Создание сетевой конфигурации для вашего предприятия в GitHub
После настройки ресурсов Azure можно использовать azure виртуальная сеть (виртуальная сеть) для частных сетей, создав конфигурацию сети на уровне предприятия или организации. Затем можно связать эту конфигурацию сети с группами запуска.
Обратите внимание, что начальная настройка должна находиться на корпоративном уровне при создании параметров сети, настроенных с помощью Azure. Поэтому при получении инструкций databaseIdнеобходимо настроить корпоративный slug. Организации могут создавать собственные конфигурации сети только после того, как предприятие было создано и включено с помощью корпоративной политики для размещенной вычислительной сети. Дополнительные сведения о группах runner см. в разделе Управление доступом к крупным средствам выполнения.
После того как конфигурация сети связана с группой запуска, все бегуны в этой группе будут иметь доступ к виртуальной сети Azure, подключенной к базовой конфигурации.
Необходимые компоненты
Убедитесь, что ресурсы Azure настроены перед добавлением конфигурации сети в GitHub. Дополнительные сведения см. в разделе Настройка частных сетей для пользователей, размещённых на GitHub, в вашем предприятии.
1. Добавление новой конфигурации сети для предприятия
- Перейдите к своему предприятию. Например, на странице Enterprises на GitHub.com.
- В левой части страницы на боковой панели учетной записи предприятия щелкните Settings.
- На левой боковой панели щелкните Размещенная сеть вычислений.
-
**Щелкните раскрывающийся список "Новая конфигурация сети**". Затем нажмите **Azure приватная сеть**. - Присвойте конфигурации сети имя.
- Нажмите Add Azure Virtual Network.
- В всплывающем окне введите идентификатор ресурса сетевых настроек, который вы получили при настройке ресурсов Azure для частной сети.
- Нажмите Add Azure Virtual Network.
2. Создание группы бегуна для вашей организации
Примечание.
Чтобы группа runner была доступна репозиториями в организациях, эти репозитории должны иметь доступ к этой группе запуска на уровне организации. Дополнительные сведения см. в разделе Управление доступом к крупным средствам выполнения.
- Создайте группу бегунов для вашего предприятия. Дополнительные сведения о создании группы runner см. в разделе Управление доступом к крупным средствам выполнения.
- Чтобы выбрать политику доступа к организации, выберите раскрывающееся меню "Доступ к организации" и выберите политику. Группу средств выполнения можно настроить так, чтобы она была доступна для организаций из определенного списка или для всех организаций предприятия.
- При настройке группы раннеров в разделе «Сетевые конфигурации» используйте выпадающее меню, чтобы выбрать сетевую конфигурацию, которую вы создали для Azure VNET.
- Чтобы создать группу и применить политику, нажмите кнопку "Создать группу".
3. Добавить GitHubразмещённого бегуна в группу корпоративных бегунов
Примечание.
При добавлении вашего GitHub-hosted runner в группу бегунов выберите группу, которую вы создали в предыдущих процедурах.
- Добавьте GitHubбегуна -hosted в группу бегунов. Дополнительные сведения см. в разделе Управление большими бегунами.
4. При необходимости управляйте конфигурациями сети
- Перейдите к своему предприятию. Например, на странице Enterprises на GitHub.com.
- В левой части страницы на боковой панели учетной записи предприятия щелкните Settings.
- На левой боковой панели щелкните Размещенная сеть вычислений.
- Чтобы изменить сетевую конфигурацию, справа от сетевой конфигурации нажмите . Затем нажмите кнопку "Изменить конфигурацию".
- Чтобы отключить сетевую конфигурацию, справа от сетевой конфигурации нажмите . Затем нажмите кнопку "Отключить".
- Чтобы удалить сетевую конфигурацию, справа от сетевой конфигурации нажмите . Затем щелкните Удалить.
5. По желанию добавить резервную сеть в конфигурацию сети
Примечание.
Отказное переключение VNET включено public preview и может измениться.
Вы можете настроить резервную сеть для вашей сетевой конфигурации. Резервная сеть — это вторичная подсеть Azure Virtual Network, которая может находиться в другом регионе Azure, отличной от вашей основной подсети. Если ваша основная подсеть станет недоступна из-за регионального сбоя или других сбоев, вы можете включить резервную сеть для маршрутизации трафика раннера через вторичную подсеть, сохраняя непрерывность ваших GitHub Actions рабочих процессов.
Ключевые моменты о отказе VNET:
- Резервная подсеть может находиться в другом регионе Azure, отличной от основной подсети.
- Переключение между основной и резервной подсетью — это ручной процесс. Вы включаете или отключаете резервную сеть по своему усмотрению.
- И основная, и резервная подсеть должны быть настроены с необходимыми ресурсами Azure (VNET/подсеть, сетевые настройки и т.д.), прежде чем использовать резервный режим.
- Резервная подсеть должна находиться в поддерживаемой области.
Перед добавлением резервной сети убедитесь, что вы настроили ресурсы Azure (VNET, подсеть, группу безопасности сети и ресурс сетевых настроек) для вторичной подсети, следуя тем же процедурам «Настройка ресурсов Azure». Резервная подсеть может находиться в другом регионе Azure, чем ваша основная подсеть.
- Перейдите к своему предприятию. Например, на странице Enterprises на GitHub.com.
- В левой части страницы на боковой панели учетной записи предприятия щелкните Settings.
- На левой боковой панели щелкните Размещенная сеть вычислений.
- Нажмите на значок редактирования () рядом с сетевой конфигурацией, в которую хотите добавить резервную сеть. Затем нажмите кнопку "Изменить конфигурацию".
- Нажмите «Добавить резервную сеть».
- В всплывающем окне введите идентификатор ресурса сетевых настроек для вашей вторичной (резервной) подсети Azure.
- Нажмите Add Azure Virtual Network.
- Теперь в конфигурации сети вы увидите две подсети: первичную и резервную — с соответствующими метками.
6. По желанию включите или отключите сеть резервного переключения
После добавления резервной сети можно включить маршрутизацию трафика через вторичную подсеть или отключить её для возвращения в основную подсеть.
- Перейдите к своему предприятию. Например, на странице Enterprises на GitHub.com.
- В левой части страницы на боковой панели учетной записи предприятия щелкните Settings.
- На левой боковой панели щелкните Размещенная сеть вычислений.
- Нажмите на значок редактирования () рядом с конфигурацией сети. Затем нажмите кнопку "Изменить конфигурацию".
- Чтобы переключиться на резервную сеть, нажмите Включить резервную VNET. Трафик Runner будет маршрутизироваться через подсеть отказа.
- Чтобы вернуться в основную сеть, нажмите «Отключить резервную VNET». Трафик раннера вернётся в основную подсеть.
Включение создания конфигураций сети для организаций
Вы можете разрешить владелец организации в организации создавать собственные конфигурации сети на уровне организации.
- Перейдите к своему предприятию. Например, на странице Enterprises на GitHub.com.
- В левой части страницы на боковой панели учетной записи предприятия щелкните Policies.
- Щелкните размещенную сеть вычислений.
- В разделе "Размещенная сеть вычислений" нажмите кнопку "Включить".
- Нажмите кнопку Сохранить.
удаление подсети;
При создании ресурса параметров сети связь службы применяется к предоставленной подсети. Эта ссылка предотвращает случайное удаление подсети во время использования службой GitHub Actions .
Чтобы удалить подсеть, сначала необходимо удалить эту ссылку связи службы. Ссылка на связь службы безопасно удаляется автоматически после удаления ресурса параметров сети.
Чтобы удалить ресурс параметров сети, необходимо сначала удалить конфигурацию сети, которая использует ее.
-
Перейдите к своему предприятию. Например, на странице Enterprises на GitHub.com.
-
В левой части страницы на боковой панели учетной записи предприятия щелкните Settings.
-
На левой боковой панели щелкните Размещенная сеть вычислений.
-
Откройте конфигурацию сети, использующую подсеть, которую требуется удалить.
-
Просмотрите список групп runner с помощью конфигурации сети.
-
В правом верхнем углу нажмите кнопку ". Затем нажмите кнопку "Удалить конфигурацию".
-
Чтобы удалить ресурс параметров сети и удалить ссылку связи службы, используйте собственные входные данные со следующими командами с помощью Azure CLI. Дополнительные сведения см. в документации по интерфейс командной строки Azure (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 -
Удалите подсеть в Azure. Дополнительные сведения см. в разделе "Удаление подсети " в Microsoft Learn.