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.

Versions .NET

.NET 8 est conçu à l'aide de packs de création. 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.

Pour utiliser une version .NET compatible, vous devez:

  • Mettre à jour votre fichier de projet avec la version .NET que vous souhaitez utiliser.

    <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 .NET 8 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.

Pour déployer votre application .NET, exécutez les commandes suivantes à partir du répertoire racine où se trouve votre application:

    dotnet restore
    dotnet publish -c Release
    gcloud app deploy

Compatibilité avec d'autres environnements d'exécution .NET

Si vous devez utiliser une version de .NET non compatible, vous pouvez créer un environnement d'exécution personnalisé et sélectionner une image de base valide avec la version de .NET dont vous avez besoin.

Pour obtenir des images de base fournies par Google ou des images de base Docker .NET, consultez la page Créer des environnements d'exécution personnalisés.

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");