Подключение среды частных контейнерных приложений к шлюзу приложений
я сейчас в некотором замешательстве. Прямо сейчас я занимаюсь настройкой тяжелого микросервисного приложения в приложениях-контейнерах Azure.
Среда контейнерных приложений расположена в собственной подсети, и приложениям, работающим в этой среде, необходимо взаимодействовать друг с другом, но не все из них должны быть доступны из Интернета. Итак, я настроил среду следующим образом:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"managedEnvironments_sample_test_containerapps_environment_name": {
"defaultValue": "sample-test-containerapps-environment",
"type": "String"
},
"virtualNetworks_container_apps_environment_test_externalid": {
"defaultValue": "/subscriptions/subscriptionid/resourceGroups/sample-test/providers/Microsoft.Network/virtualNetworks/container-apps-environment-test",
"type": "String"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.App/managedEnvironments",
"apiVersion": "2022-06-01-preview",
"name": "[parameters('managedEnvironments_sample_test_containerapps_environment_name')]",
"location": "westeurope",
"sku": {
"name": "Consumption"
},
"properties": {
"vnetConfiguration": {
"internal": true,
"infrastructureSubnetId": "[concat(parameters('virtualNetworks_container_apps_environment_test_externalid'), '/subnets/container-apps-environmen-infrastructure-subnet-test')]",
"dockerBridgeCidr": "10.2.0.1/16",
"platformReservedCidr": "10.1.0.0/16",
"platformReservedDnsIP": "10.1.0.2",
"outboundSettings": {
"outBoundType": "LoadBalancer"
}
},
"appLogsConfiguration": {
"destination": "log-analytics",
"logAnalyticsConfiguration": {
"customerId": ""
}
},
"zoneRedundant": false,
"customDomainConfiguration": {}
}
}
]
}
Приложениям внутри среды разрешено взаимодействовать друг с другом.
Пример шаблона приложения, работающего в этой среде:
{
"id": "/subscriptions/subscriptionid/resourceGroups/sample-test/providers/Microsoft.App/containerapps/sample-container",
"name": "sample-container",
"type": "Microsoft.App/containerApps",
"location": "West Europe",
"systemData": {
"createdBy": "does@not.exist",
"createdByType": "User",
"createdAt": "2023-01-11T12:04:36.6607229",
"lastModifiedBy": "does@not.exist",
"lastModifiedByType": "User",
"lastModifiedAt": "2023-01-24T16:06:00.7274607"
},
"properties": {
"provisioningState": "Succeeded",
"managedEnvironmentId": "/subscriptions/subscriptionid/resourceGroups/sample-test/providers/Microsoft.App/managedEnvironments/sample-test-containerapps-environment",
"environmentId": "/subscriptions/subscriptionid/resourceGroups/sample-test/providers/Microsoft.App/managedEnvironments/sample-test-containerapps-environment",
"workloadProfileType": null,
"outboundIpAddresses": [
"8.9.10.11"
],
"latestRevisionName": "sample-container--lll1z5g",
"latestRevisionFqdn": "sample-container--lll1z5g.yellowtree-00000000.westeurope.azurecontainerapps.io",
"customDomainVerificationId": "",
"configuration": {
"secrets": [
{
"name": "reg-pswd-57e46ccb-a998"
}
],
"activeRevisionsMode": "Multiple",
"ingress": {
"fqdn": "sample-container.yellowtree-00000000.westeurope.azurecontainerapps.io",
"external": true,
"targetPort": 80,
"exposedPort": 0,
"transport": "Auto",
"traffic": [
{
"revisionName": "sample-container--lll1z5g",
"weight": 100
}
],
"customDomains": null,
"allowInsecure": true,
"ipSecurityRestrictions": null
},
"registries": [
],
"dapr": null,
"maxInactiveRevisions": null
},
"template": {
"revisionSuffix": "",
"containers": [
{
"image": "registry/integration/sample-container:9230",
"name": "sample-container",
"env": [
],
"resources": {
"cpu": 0.25,
"memory": "0.5Gi",
"ephemeralStorage": "1Gi"
}
}
],
"initContainers": null,
"scale": {
"minReplicas": 1,
"maxReplicas": 10,
"rules": null
},
"volumes": null
},
}
}
Для тех приложений, к которым требуется доступ через Интернет, я добавил шлюз приложений, расположенный в той же виртуальной сети, но в другой подсети, и теперь запускаю несколько проблем, которые все связаны, если я правильно понимаю.
Шлюзу приложений не удается разрешить DNS-имена приложений для внутренней проверки работоспособности и пересылки. Поскольку разрешение DNS не сработало, я попытался использовать IP-адрес, который nslookup вернул из среды контейнерных приложений, эта проверка работоспособности также не удалась.
Кажется, что сама маршрутизация работает, потому что когда я использую IP-адрес контейнеров, проверка работоспособности завершается успешно, но это не решение, потому что нам нужно масштабироваться по требованию, и контейнеры изменят IP-адреса.
Есть ли у кого-нибудь идеи, как заставить эту установку работать?