Crear un servicio web
En esta página se describe cómo crear un servicio web en la VM mediante el framework web Gin, escrito en Golang. Puedes crear el servicio web en cualquier otro framework que quieras usar.
- Para descargar el paquete Go en la VM, ejecuta el siguiente comando en la VM:
wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
- Instala Go en la VM. Para obtener información, consulta Instalar Go.
- Para crear un directorio para el servicio web, ejecuta el siguiente comando:
mkdir SERVICE_REPO cd SERVICE_REPO
Consideraciones adicionales
Cuando crees un servicio web, debes tener en cuenta lo siguiente:
- Las entradas que necesitas durante la creación de la VM están disponibles como variables de entorno y tienen el siguiente prefijo:
CONNECTOR_ENV_
. - Cuando configure el servicio web, use las variables de entorno para leer esos valores.
- Durante la creación de la VM, solo se deben introducir los valores necesarios para configurar el servicio web.
- El puerto del servicio debe tomarse como entrada de la variable CONNECTOR_ENV_PORT.
- Usa otras variables de entorno para las entradas opcionales.
- También puedes obtener entradas durante la creación de la conexión. Puede definir estos campos al crear el conector personalizado y pasarlos como ruta, consulta o encabezados en cada llamada a la API.
- Asegúrate de que el servidor se ejecute en localhost.
Almacenamiento de registros
Registra la información necesaria y envía los registros a Cloud Logging. Esto ayuda a los consumidores de conectores a hacer un seguimiento de los errores y a depurarlos. Para publicar registros en Cloud Logging, puedes usar el siguiente cliente de Cloud Logging disponible en Go: https://pkg.go.dev/cloud.google.com/go/logging#NewClient.
Debes inicializar el registrador en main y añadir un middleware en Gin para monitorizar todas las solicitudes entrantes. Debes registrar el método, la ruta, el estado y la latencia de una solicitud. Para filtrar los registros, usa la gravedad adecuada al registrar. En el servicio web, lee el nivel de registro de la variable de entorno. El nivel de registro se toma como entrada opcional durante la creación de la VM. De forma predeterminada, se pueden usar los registros de información. Estos son los niveles de registro:
- DEBUG: registra cada parte de la solicitud, incluidas las trazas de solicitud y respuesta HTTP.
- INFO: registra el inicio y el cierre del servicio, las solicitudes y otra información.
- ERROR: registra fallos de solicitudes, excepciones de formato y otros errores.
Apagado suave
Configura el servidor para que se cierre correctamente y gestione las solicitudes en curso. Para obtener información sobre cómo reiniciar o detener el servidor correctamente, consulta Reiniciar o detener correctamente.
Simultaneidad
Los servidores Gin admiten solicitudes simultáneas de forma inherente mediante rutinas de Go. De forma predeterminada, las goroutines pueden procesar un número indefinido de solicitudes. Sin embargo, en algunos casos, cuando se espera que las solicitudes consuman muchos recursos, usa grupos de trabajadores para restringir y almacenar en búfer las solicitudes en el servidor. Para obtener más información, consulta el ejemplo de grupos de trabajadores.
Probar y compilar el archivo binario
- Define el puerto y ejecuta el servidor con los siguientes comandos:
- Para verificar el servidor, ejecuta el siguiente comando curl en la VM:
curl -X POST -H "Content-Type: application/json" -H "X-Custom-Header: MyValue" -d '{"name": "Alice", "address": "123 Main St", "gender": "F"}' http://localhost:8081/postData/456
curl -v http://localhost:8081/getData -H "TestKey: MyValue"
- Crea el archivo binario y úsalo como imagen de VM con el siguiente comando:
go build -o SERVICE_NAME
- Mueve el archivo binario a la carpeta raíz con el siguiente comando:
sudo cp SERVICE_NAME /opt
- Vuelve a ejecutar el servicio para verificar que el archivo binario funciona correctamente con el siguiente comando:
sudo chmod +x SERVICE_NAME ./SERVICE_NAME
EXPORT CONNECTOR_ENV_PORT = 8081 go get . go run .
Estos comandos agrupan las bibliotecas necesarias y ejecutan el servidor.
Contenerizar la aplicación
- Instala Docker. Para obtener información, consulta Instalar Docker.
- Crea un archivo Docker para ejecutar archivos binarios.
FROM alpine:latest WORKDIR /opt COPY . . CMD ["./SERVICE_NAME"]
- Compila el contenedor del conector con el siguiente comando:
sudo docker build -t connector-container .
- Ejecuta el contenedor Docker. Configura
--restart=unless-stopped
para que reinicie el servicio si se produce un fallo inesperado.
Tarea a nivel de contenedor
Todos los registros de stdout se pueden enrutar a Cloud Logging mediante el controlador de registro gcplogs mientras se ejecuta el contenedor de Docker. Esto ayuda a monitorizar el inicio, el fallo inesperado o el cierre del servicio.
Para enrutar los registros a Cloud Logging, ejecuta el siguiente comando:sudo docker run --name connector-service -e CONNECTOR_ENV_PORT=$CONNECTOR_ENV_PORT -p $CONNECTOR_ENV_PORT:$CONNECTOR_ENV_PORT --restart=unless-stopped ----log-driver=gcplogs connector-container
Siguientes pasos
- Consulta cómo crear un conector personalizado.