Crea un servizio web
Questa pagina descrive come creare un servizio web nella VM utilizzando il framework web Gin scritto in Golang. Puoi scegliere di creare il servizio web in qualsiasi altro framework che vuoi utilizzare.
- Per scaricare il pacchetto Go nella VM, esegui il seguente comando:
wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
- Installa Go nella VM. Per informazioni, vedi Installare Go.
- Per creare una nuova directory per il servizio web, esegui il seguente comando:
mkdir SERVICE_REPO cd SERVICE_REPO
Ulteriori considerazioni
Quando crei un servizio web, devi tenere presente le seguenti considerazioni:
- Gli input richiesti durante la creazione della VM sono disponibili come variabili di ambiente e hanno il seguente prefisso:
CONNECTOR_ENV_
. - Quando configuri il servizio web, utilizza le variabili di ambiente per leggere questi valori.
- Solo i valori necessari per configurare il servizio web devono essere inseriti durante la creazione della VM.
- La porta del servizio deve essere presa come input dalla variabile CONNECTOR_ENV_PORT.
- Utilizza altre variabili di ambiente per gli input facoltativi.
- Puoi anche ricevere input durante la creazione della connessione. Puoi definire questi campi quando crei il connettore personalizzato e li passi come percorso, query o intestazioni in ogni chiamata API.
- Assicurati che il server funzioni su localhost.
Logging
Registra le informazioni richieste e invia i log a Cloud Logging. In questo modo, i consumatori del connettore possono monitorare e eseguire il debug degli errori. Per pubblicare i log in Cloud Logging, puoi utilizzare il seguente client Cloud Logging disponibile in Go: https://pkg.go.dev/cloud.google.com/go/logging#NewClient
Devi inizializzare il logger in main e aggiungere un middleware in Gin per monitorare tutte le richieste in arrivo. Devi monitorare il metodo, il percorso, lo stato e la latenza di una richiesta. Per filtrare i log, utilizza la gravità appropriata durante il logging. Nel servizio web, leggi il livello di log dalla variabile di ambiente. Il livello di log viene considerato come input facoltativo durante la creazione della VM. Per impostazione predefinita, è possibile utilizzare i log di informazioni. Di seguito sono riportati i livelli di log:
- DEBUG: registra ogni parte della richiesta, incluse le tracce di richiesta/risposta HTTP.
- INFO: registra l'avvio e l'arresto del servizio, le richieste e altre informazioni.
- ERROR: vengono registrati errori di richiesta, eccezioni di formattazione e altri errori.
Arresto controllato
Configura il server in modo che si arresti in modo corretto e gestisca le richieste in corso. Per informazioni su come riavviare o arrestare il server in modo corretto, consulta Riavvio o arresto in modo corretto.
Contemporaneità
I server Gin supportano intrinsecamente le richieste concorrenti utilizzando le routine Go. Per impostazione predefinita, le routine Go possono elaborare un numero indefinito di richieste. Tuttavia, in alcuni casi, quando si prevede che le richieste richiedano molte risorse, utilizza i pool di worker per limitare e mettere in coda le richieste sul server. Per ulteriori informazioni, vedi Esempio di pool di worker.
Testa e compila il file binario
- Imposta la porta ed esegui il server utilizzando i seguenti comandi:
- Per verificare il server, esegui il seguente comando curl sulla 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 il file binario e utilizzalo come immagine VM utilizzando il seguente comando:
go build -o SERVICE_NAME
- Sposta il file binario nella cartella principale utilizzando il seguente comando:
sudo cp SERVICE_NAME /opt
- Esegui di nuovo il servizio per verificare che il file binario funzioni come previsto utilizzando il seguente comando:
sudo chmod +x SERVICE_NAME ./SERVICE_NAME
EXPORT CONNECTOR_ENV_PORT = 8081 go get . go run .
Questi comandi raggruppano le librerie richieste ed eseguono il server.
Containerizza l'applicazione
- Installa Docker. Per informazioni, vedi Installare Docker.
- Crea un file Docker per eseguire i binari.
FROM alpine:latest WORKDIR /opt COPY . . CMD ["./SERVICE_NAME"]
- Crea il contenitore del connettore utilizzando il seguente comando:
sudo docker build -t connector-container .
- Esegui il container Docker. Imposta
--restart=unless-stopped
per riavviare il servizio in caso di errore imprevisti.
Attività a livello di contenitore
Tutti i log in stdout possono essere inoltrati a Cloud Logging utilizzando il driver di log gcplogs durante l'esecuzione del container Docker. In questo modo puoi monitorare l'avvio o l'arresto o l'errore imprevisto del servizio.
Per inoltrare i log a Cloud Logging, esegui il seguente 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
Passaggi successivi
- Scopri come creare un connettore personalizzato.