Entorno de ejecución de Go

El entorno de ejecución de Go es la pila de software encargada de instalar el código y las dependencias de tu aplicación y, luego, ejecutarla en el entorno flexible.

Versiones de Go

Go 1.23 (versión preliminar) usa buildpacks. Para obtener la lista completa de las versiones de Go compatibles y sus versiones de Ubuntu correspondientes, consulta el programa de asistencia del entorno de ejecución.

Para usar una versión de Go compatible, debes hacer lo siguiente:

  • Instala la versión 420.0.0 o una posterior de gcloud CLI. Puedes actualizar las herramientas de la CLI si ejecutas el comando gcloud components update. Para ver la versión instalada, puedes ejecutar el comando gcloud version.

  • Go recomienda que uses un archivo go.mod para administrar dependencias. Para instalar dependencias durante la implementación, incluye un archivo go.mod en la misma carpeta que el archivo app.yaml.

    Por ejemplo, la estructura de carpeta de tu aplicación con go.mod debe representar lo siguiente:

    <application-root>/
    --> app.yaml
    --> go.mod
    --> Other source files used in your application.
    
    
  • Incluye la configuración runtime_config y operating_system en el archivo app.yaml para especificar un sistema operativo.

  • Opcional: Puedes especificar una versión del entorno de ejecución si incluyes la configuración runtime_version en tu app.yaml. De forma predeterminada, se usa la última versión de Go si no se especifica la configuración de runtime_version.

Ejemplos

  • Para especificar Go 1.23 (versión preliminar) en Ubuntu 22, haz lo siguiente:

    runtime: go
    env: flex
    
    runtime_config:
        operating_system: "ubuntu22"
        runtime_version: "1.23"
    
  • Para especificar la última versión de Go compatible en Ubuntu 22, sigue estos pasos:

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

La aplicación usa la última versión estable que se especifica en tu archivo app.yaml. App Engine se actualiza de forma automática a nuevas revisiones de parches; sin embargo, no se actualizará automáticamente ante una nueva versión principal.

Por ejemplo, la aplicación podría implementarse en Go 1.18.10 y, luego, actualizarse de forma automática a Go 1.18.11, pero no se actualizará a la versión principal de Go 1.19 de forma automática.

Elegir Go 1.23 (versión preliminar) en tu archivo app.yaml da como resultado la versión patch más reciente de Go 1.23 (versión preliminar).

  runtime: go
  env: flex

  runtime_config:
      operating_system: "ubuntu22"
      runtime_version: "1.23"

Consulta la referencia de app.yaml para obtener más información.

Versiones anteriores del entorno de ejecución

Para usar la versión 1.15 de Go y versiones anteriores, especifica una versión en la configuración de runtime con el formato go1.x en tu archivo app.yaml. Por ejemplo:

  runtime: go1.14
  env: flex

Si no se especifica una versión, se seleccionará de forma automática la versión predeterminada de go1.11.

La aplicación usa la última versión estable que se especifica en tu archivo app.yaml. App Engine se actualiza de forma automática a nuevas revisiones de parches; sin embargo, no se actualizará automáticamente ante una nueva versión principal.

Por ejemplo, la aplicación podría implementarse en Go 1.14.10 y, luego, se actualizará de forma automática a Go 1.14.11, pero no se actualizará a la versión principal de Go 1.15 de forma automática.

Si eliges la versión del entorno de ejecución de Go go1.15 en el archivo app.yaml, se generará la última versión disponible de 1.15, por ejemplo, 1.15.15.

  runtime: go1.15
  env: flex

Compatibilidad con otros entornos de ejecución de Go

Si necesitas usar una versión de Go que no es compatible, puedes crear un entorno de ejecución personalizado y seleccionar una imagen base válida con la versión de Go que necesites.

Para las imágenes base proporcionadas por Google o las imágenes base de Docker para Go, consulta Compila entornos de ejecución personalizados.

Importa paquetes

El código se compila cuando implementas tu app en App Engine. Cuando ejecutas el comando de implementación, las dependencias de la aplicación primero se recopilan desde el GOPATH local y, luego, se envían al servidor de compilación. Cualquier dependencia que falte, por ejemplo, bibliotecas de terceros, dará como resultado fallas de compilación.

Para evitar fallas de compilación y asegurarte de que todas las dependencias de la aplicación se implementen con el código, debes probar la aplicación localmente antes de implementarla.

Extiende el entorno de ejecución

Si deseas obtener instrucciones para extender y personalizar el entorno de ejecución de Go, lee sobre el compilador del entorno de ejecución de Go en GitHub.

Servidor de metadatos

Cada instancia de tu aplicación puede usar el servidor de metadatos de Compute Engine para consultar información acerca de la instancia, incluidos el nombre del host, la dirección IP externa, el ID de la instancia, los metadatos personalizados y la información de la cuenta de servicio. App Engine no te permite establecer metadatos personalizados para cada instancia; sin embargo, puedes definir metadatos personalizados de todo el proyecto y leerlos desde las instancias de App Engine y Compute Engine.

Usa el paquete cloud.google.com/go/compute/metadata para acceder al servidor de metadatos.