Подключение среды частных контейнерных приложений к шлюзу приложений

я сейчас в некотором замешательстве. Прямо сейчас я занимаюсь настройкой тяжелого микросервисного приложения в приложениях-контейнерах 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-адреса.

Есть ли у кого-нибудь идеи, как заставить эту установку работать?

0 ответов

Другие вопросы по тегам