El entorno de ejecución de .NET

Resumen

El entorno de ejecución .NET es la pila de software encargada de instalar el código de tu aplicación, sus dependencias, y de ejecutarla. El entorno de ejecución flexible se declara en tu archivo app.yaml:

runtime: aspnetcore
env: flex

Los tiempos de ejecución en el entorno flexible se compilan mediante Docker.

Google Cloud Tools for Visual Studio crea un archivo app.yaml y un Dockerfile en el directorio de salida de compilación si estos archivos aún no existen en tu proyecto.

Si deseas utilizar GKE, así como otros hosts de Docker, necesitas crear un Dockerfile basado en esta imagen que copia el código de la aplicación y realiza la instalación de las dependencias. Por ejemplo:

FROM gcr.io/google-appengine/aspnetcore:2.1
COPY . /app
WORKDIR /app
EXPOSE 8080
ENV ASPNETCORE_URLS=http://*:8080
ENTRYPOINT ["dotnet", "Metadata.dll"]

HTTPS y reenvío de proxies

App Engine finaliza la conexión HTTPS en el balanceador de cargas y reenvía la solicitud a la aplicación. Las aplicaciones pueden examinar el X-Forwarded-Proto para observar si el protocolo original era HTTP o HTTPS.

Algunas aplicaciones también necesitan verificar la dirección IP del usuario. Esta función está disponible en el encabezado X-Forwarded-For estándar.

Extiende el tiempo de ejecución

El tiempo de ejecución del entorno flexible .NET puede usarse para crear un tiempo de ejecución personalizado. Los entornos de ejecución personalizados se configuran a través de un Dockerfile.

Puedes personalizar Dockerfile y .dockerignore como desees. Por último, deberás especificar runtime: custom en lugar de runtime: aspnetcore en app.yaml. Para obtener más información, consulta la sección Personaliza el entorno de ejecución de .NET.

Variables del entorno

Las siguientes variables del entorno se configuran mediante el entorno de ejecución:

Variable del entorno Descripción
GAE_INSTANCE El nombre de la instancia actual.
GAE_MEMORY_MB La cantidad de memoria disponible para el proceso de la aplicación.
GAE_SERVICE El nombre del servicio especificado en el archivo app.yaml de tu aplicación; si no se especifica, se configura como default.
GAE_VERSION La etiqueta de versión de la aplicación actual.
GOOGLE_CLOUD_PROJECT El ID del proyecto asociado con tu aplicación, que se puede ver en Google Cloud Console
PORT El puerto que recibirá las solicitudes HTTP.

Puedes establecer variables de configuración adicionales con appsettings.json.

Servidor de metadatos

Cada instancia de la aplicación puede usar el servidor de metadatos de Compute Engine para consultar la información acerca de la instancia, incluido su nombre del host, dirección IP externa, ID de la instancia, metadatos personalizados y la información de la cuenta de servicio. App Engine no permite definir metadatos personalizados para cada instancia, pero puedes definir los metadatos personalizados de todo el proyecto y leerlos desde tus instancias de App Engine y Compute Engine.

Esta función de ejemplo usa el servidor de metadatos para obtener la dirección IP externa de la instancia:

var metadataClient = Google.Cloud.Metadata.V1.MetadataClient.Create();
var result = await metadataClient.GetMetadataAsync(
    "instance/network-interfaces/0/access-configs/0/external-ip");
return result.Content.ToString();