Environnement d'exécution .NET

L'environnement d'exécution .NET est la pile logicielle chargée d'installer le code et les dépendances de votre application, puis d'exécuter cette application dans l'environnement flexible.

Les versions 6 et ultérieures de .NET sont créées à l'aide de packs de création, ce qui nécessite de choisir un système d'exploitation dans votre fichier app.yaml. Par exemple, pour utiliser .NET 8, vous devez spécifier Ubuntu 22 comme système d'exploitation.

Pour obtenir la liste complète des versions .NET compatibles, ainsi que la version d'Ubuntu correspondante, consultez la page Programmation de la compatibilité avec l'environnement d'exécution.

Choisir une version .NET

Nouvelles versions de l'environnement d'exécution

Pour .NET version 6 et ultérieure, vous devez inclure les paramètres runtime_config et operating_system dans votre fichier app.yaml pour spécifier un système d'exploitation.

Pour utiliser la nouvelle version, vous devez :

  • Mettez à jour le fichier de projet.

    <Project Sdk="Microsoft.NET.Sdk.Web">
    
      <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <Nullable>enable</Nullable>
        <ImplicitUsings>enable</ImplicitUsings>
      </PropertyGroup>
    
      <ItemGroup>
        <None Update="app.yaml">
          <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
        </None>
      </ItemGroup>
    
    </Project>
    

    Pour en savoir plus, consultez la page Migrer de ASP.NET Core 3.1 vers la version 6.0.

  • Installez gcloud CLI version 420.0.0 ou ultérieure. Vous pouvez mettre à jour vos outils de CLI en exécutant la commande gcloud components update. Pour afficher la version installée, vous pouvez exécuter la commande gcloud version.

  • Spécifiez le paramètre operating_system dans votre fichier app.yaml :

      runtime: aspnetcore
      env: flex
    
      runtime_config:
          operating_system: "ubuntu22"
    

Facultatif : vous pouvez spécifier une version d'exécution en incluant le paramètre runtime_version dans votre fichier app.yaml. Par défaut, App Engine utilise la dernière version LTS .NET disponible si le paramètre runtime_version n'est pas spécifié. Par exemple, le fichier app.yaml se présente comme suit lorsque vous spécifiez .NET8 sur Ubuntu 22 :

    runtime: aspnetcore
    env: flex

    runtime_config:
        runtime_version: "8"
        operating_system: "ubuntu22"

Versions précédentes de l'environnement d'exécution

Pour cibler une version spécifique du SDK .NET, mettez à jour votre fichier de projet. Pour en savoir plus, consultez la page Migrer de ASP.NET Core 3.1 vers la version 6.0.

Si vous souhaitez utiliser GKE ou d'autres hôtes Docker, vous devez créer un Dockerfile qui copie le code de votre application et installe des dépendances. Pour en savoir plus, consultez la page Environnements d'exécution personnalisés.

Déployer votre application App Engine

Pour déployer votre application .NET, procédez comme suit :

Exécutez les commandes suivantes à partir du répertoire racine où se trouve votre application :

v6 et versions ultérieures

    gcloud app deploy

v3.1 et versions précédentes

    dotnet restore
    dotnet publish -c Release
    gcloud app deploy

HTTPS et proxy de transfert

App Engine met fin à la connexion HTTPS au niveau de l'équilibreur de charge et transfère la requête à l'application. Les applications peuvent examiner X-Forwarded-Proto pour déterminer si le protocole d'origine était HTTP ou HTTPS.

Certaines applications doivent également vérifier l'adresse IP de l'utilisateur. Cette option est disponible dans l'en-tête standard X-Forwarded-For.

Étendre l'environnement d'exécution

L'environnement d'exécution flexible .NET peut être utilisé pour créer un environnement d'exécution personnalisé. Les environnements d'exécution personnalisés sont configurés via un fichier Dockerfile.

Vous pouvez personnaliser Dockerfile et .dockerignore selon vos besoins. Enfin, vous devez spécifier runtime: custom au lieu de runtime: aspnetcore dans le fichier app.yaml. Pour en savoir plus, consultez la page Personnaliser l'environnement d'exécution .NET.

Variables d'environnement

Les variables d'environnement suivantes sont définies par l'environnement d'exécution :

Variable d'environnement Description
GAE_INSTANCE Le nom de l'instance actuelle.
GAE_MEMORY_MB La quantité de mémoire disponible pour le processus d'application.
GAE_SERVICE Nom du service spécifié dans le fichier app.yaml de votre application. Si aucun nom de service n'est spécifié, il est défini sur default.
GAE_VERSION Libellé de version de l'application en cours.
GOOGLE_CLOUD_PROJECT ID du projet associé à votre application, visible dans Google Cloud Console.
PORT Port qui reçoit les requêtes HTTP.

Vous pouvez définir des variables d'environnement supplémentaires à l'aide du fichier appsettings.json.

Serveur de métadonnées

Chaque instance de votre application peut utiliser le serveur de métadonnées Compute Engine pour rechercher des informations sur l'instance, y compris son nom d'hôte, son adresse IP externe, son ID d'instance, ses métadonnées personnalisées et ses informations de compte de service. App Engine ne vous permet pas de définir des métadonnées personnalisées pour chaque instance, mais vous pouvez définir des métadonnées personnalisées à l'échelle du projet et les lire à partir de vos instances App Engine et Compute Engine.

Cet exemple de fonction utilise le serveur de métadonnées pour obtenir l'adresse IP externe de l'instance :

var client = new HttpClient();
client.DefaultRequestHeaders.Add("Metadata-Flavor", new[] { "Google" });
response = await client.GetStringAsync(
    "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip");