Архитектура виртуальной сети 4 — Частный эндпойт базы данных SQL


Резюме

Эта статья является четвертой частью цикла об архитектуре виртуальных сетей. Я объясняю детали частной конечной точки с Azure SQL Database в api-management-vnet.

  • Архитектура виртуальной сети 1 — Нужна ли мне виртуальная сеть?
  • Архитектура виртуальной сети 2 — конвейеры развертывания
  • Архитектура виртуальной сети 3 — Частная конечная точка Key Vault
  • Архитектура виртуальной сети 4 — Частная конечная точка базы данных SQL
  • Архитектура виртуальной сети 5 — Частная конечная точка службы приложений
  • Архитектура виртуальной сети 6 — Частная конечная точка сервисной шины
  • Архитектура виртуальной сети 7 — Самостоятельно размещаемый агент

TOC

  • Конфигурация частной конечной точки
  • Доступ к базе данных SQL
  • Обновление проекта SQL

Конфигурация частной конечной точки

  • Частная конечная точка: Разверните частную конечную точку и подключите ее к SQL Database и ее подсети в PrivateEndpoint.bicep.
SqlServerId:existingSql.id
VirtualNetwork2SubnetIdSql:existingVnet2.properties.subnets[2].id

resource PrivateEndpointSql 'Microsoft.Network/privateEndpoints@2021-03-01' = {
  properties: {
    privateLinkServiceConnections: [
      {
        properties: {
          privateLinkServiceId: SqlServerId
          groupIds: [
            'sqlServer'
          ]
        }
      }
    ]
    subnet: {
      id: VirtualNetwork2SubnetIdSql
      properties: {
        privateEndpointNetworkPolicies: 'Enabled'
      }
    }
  }
}
Вход в полноэкранный режим Выход из полноэкранного режима
  • Private DNS: Разверните Private DNS с именем DNS privatelink.database.windows.net в PrivateDns2.bicep.
var pdns_name_sql = 'privatelink${environment().suffixes.sqlServerHostname}'

resource PrivateDnsSql 'Microsoft.Network/privateDnsZones@2020-06-01' = {
  name: pdns_name_sql
  location: 'global'
}
Вход в полноэкранный режим Выход из полноэкранного режима
  • Ссылка на виртуальную сеть: Свяжите развернутый Private DNS с виртуальной сетью, в которой существует подсеть SQL Server, в файле PrivateDns2.bicep.
VirtualNetwork2Id:existingVnet2.id

resource VnetLinkSql 'Microsoft.Network/privateDnsZones/virtualNetworkLinks@2020-06-01' = {
  name: '${PrivateDnsSql.name}/${PrivateDnsSql.name}-link'
  location: 'global'
  properties: {
    registrationEnabled: false
    virtualNetwork: {
      id: VirtualNetwork2Id
    }
  }
}
Войти в полноэкранный режим Выход из полноэкранного режима
  • Запись A частного DNS: Создайте запись DNS A и задайте IP-адрес развернутой частной конечной точки в файле PrivateDns2.bicep.
output PrivateEndpointSqlIpAddress string = PrivateEndpointSql.properties.customDnsConfigs[0].ipAddresses[0]

resource PrivateDnsASql 'Microsoft.Network/privateDnsZones/A@2020-06-01' = {
  name: '${PrivateDnsSql.name}/${SqlServerName}'
  properties: {
    ttl: 3600
    aRecords: [
      {
        ipv4Address: PrivateEndpointSqlIpAddress
      }
    ]
  }
}
Вход в полноэкранный режим Выход из полноэкранного режима

Доступ к базе данных SQL

Службам App Service и Functions необходим доступ к базе данных SQL для вставки и извлечения записей данных. Обе службы могут получить доступ через интеграцию V-net и частную конечную точку. В SqlDatabase2.bicep доступ к публичной сети отключен, поэтому никто не может получить доступ через публичный IP.

resource SqlServer 'Microsoft.Sql/servers@2021-02-01-preview' = {
  properties: {
    publicNetworkAccess: 'Disabled'
  }
}
Вход в полноэкранный режим Выход из полноэкранного режима

Обновление проекта SQL

Самая большая проблема возникает, когда вы хотите обновить проекты SQL, включая схему данных на Azure SQL Database. В этом образце шаблона вы не можете обновить проект SQL, поскольку агент самостоятельной установки на базе Linux не поддерживает сборку и развертывание проектов SQL Database. С другой стороны, агент self-hosted на базе Windows в контейнере docker на Azure Container Instance не может быть развернут в виртуальной сети, как я упоминал в предыдущей статье Архитектура виртуальной сети 2 — конвейеры развертывания. Возможным обходным решением является создание самостоятельного агента на базе Windows на виртуальной машине, изменение правил фильтрации IP-адресов при развертывании кода или ожидание появления контейнера Windows docker, поддерживающего развертывание виртуальной сети.

Оцените статью
devanswers.ru
Добавить комментарий