Crea runtime personalizzati

Un runtime personalizzato consente di utilizzare un'implementazione alternativa di qualsiasi un linguaggio di ambiente flessibile, o per personalizzare Fornita da Google. Ti permette inoltre di scrivere codice in qualsiasi altro linguaggio può gestire le richieste HTTP in entrata (esempio). Con un runtime personalizzato, l'ambiente flessibile fornisce e la tua infrastruttura di scalabilità, monitoraggio e bilanciamento del carico per te, puoi concentrarti sulla creazione della tua applicazione.

Per creare un runtime personalizzato, devi:

Fornisci un file app.yaml

Il file di configurazione di app.yaml deve contenere almeno le seguenti impostazioni:

runtime: custom
env: flex

Per informazioni sulle altre impostazioni che puoi impostare vedi Configurare l'app con app.yaml.

Crea un Dockerfile

La documentazione completa sulla creazione di Dockerfile è disponibile nel Sito web Docker. Se per un runtime personalizzato, devi fornire un Dockerfile fornendo la tua immagine di base o utilizzando una delle immagini di base in formato Docker.

Specifica un'immagine di base

Il primo comando in un Dockerfile è in genere un comando FROM che specifica un'immagine di base. Un'immagine di base viene utilizzata per creare il container e l'applicazione. Tu può creare la tua immagine di base oppure seleziona un'immagine di base da registri di container come DockerHub.

Individua il Dockerfile

In generale, il Dockerfile viene sempre denominato Dockerfile e viene inserito nel della stessa directory del file app.yaml corrispondente. In alcuni casi, tuttavia, di sviluppo software potrebbe avere requisiti diversi. Ad esempio, Cloud Strumenti Java basati su SDK come i plug-in Maven, Gradle, Eclipse e IntelliJ richiedono che Dockerfile si trovi in src/main/docker/Dockerfile e app.yaml file in src/main/appengine/app.yaml. Consulta le documentazione per l'ambiente degli strumenti.

Struttura del codice

Questa sezione descrive il comportamento che il codice deve implementare se utilizzi un'immagine di base fornita da Google o la tua immagine di base.

Ascolta la porta 8080

Il frontend di App Engine instraderà le richieste in entrata sulla porta 8080. Devi assicurarti che il codice dell'applicazione sia in ascolto 8080.

Gestire gli eventi del ciclo di vita

L'ambiente flessibile invia periodicamente la tua applicazione di determinati eventi del ciclo di vita.

Chiusura dell'applicazione

Quando un'istanza deve essere arrestata, le nuove richieste in entrata vengono instradate eventuali altre istanze e richieste in fase di elaborazione vengono a disposizione per il completamento. Quando arresti un'istanza, l'ambiente flessibile invia un indicatore STOP (SIGTERM) al contenitore di app. La tua app non richiede per rispondere a questo evento, ma può utilizzarlo per eseguire le operazioni di pulizia necessarie prima dell'arresto del container. In condizioni normali, il sistema attende fino a 30 secondi per l'interruzione dell'app, quindi invia un KILL (SIGKILL) arrestando immediatamente l'istanza.

In rari casi, le interruzioni possono impedire ad App Engine di fornire 30 secondi di tempo di chiusura, il che significa che gli indicatori STOP e KILL potrebbero non essere inviati prima della fine di un'istanza. Per gestire questa possibilità, controlla periodicamente lo stato dell'istanza, utilizzandolo principalmente come in memoria invece che in un datastore affidabile.

Richieste di controllo di integrità

Puoi utilizzare l'opzione Richieste di controllo di integrità per verificare l'avvenuto deployment di un'istanza VM e per verificare un'istanza in esecuzione mantiene uno stato integro.

Crea ed esegui il deployment del tuo runtime personalizzato

Dopo aver configurato i file app.yaml e DOCKER, puoi creare e implementare l'immagine del contenitore in App Engine.

In alternativa, puoi eseguire il deployment di immagini container predefinite dei runtime personalizzati archiviati in Artifact Registry. Ad esempio, puoi utilizzare Cloud Build per creare separatamente le immagini e poi archiviarle in Artifact Registry. Per ulteriori informazioni, vedi Immagini push e pull.

Integra la tua applicazione con Google Cloud

Le applicazioni in esecuzione in runtime personalizzati possono utilizzare Google Cloud Librerie client per accedere ai servizi Google Cloud. Le applicazioni in runtime personalizzati possono inoltre utilizzare qualsiasi servizio di terze parti che impiega le API standard.

Autenticazione con i servizi Google Cloud

Le credenziali predefinite dell'applicazione offrono il modo più semplice per autenticarsi e chiamare le API di Google.

Se la tua applicazione utilizza Cloud Build per compilare le immagini Docker, la rete cloudbuild ospita Credenziali predefinite dell'applicazione che abilitano i servizi Google Cloud associati per a trovare automaticamente le tue credenziali.

Per ulteriori informazioni sull'autenticazione, vedi Autenticazione in Google.

Logging

Quando viene inviata una richiesta alla tua applicazione in esecuzione in App Engine, i dettagli della richiesta e della risposta vengono registrati automaticamente. Possono essere visualizzati in Esplora log della console Google Cloud.

Quando l'applicazione gestisce una richiesta, può anche scrivere i propri messaggi di logging in stdout e stderr. Questi file sono raccolti automaticamente e possono essere visualizzati in Esplora log. Solo il le voci più recenti per stdout e stderr vengono conservate, in ordine per limitarne le dimensioni.

Puoi anche scrivere log personalizzati in /var/log/app_engine/custom_logs, utilizzando un file che termina con .log o .json.

Se includi agenti di terze parti nel contenitore dell'applicazione, assicurati assicurati di configurare gli agenti in modo che accedano a stdout e stderr o in un log personalizzato. In questo modo, gli eventuali errori prodotti da questi agenti saranno visibili in Cloud Logging.

I log delle richieste e delle applicazioni per la tua app vengono raccolti da un agente Cloud Logging e vengono conservati per un massimo di 90 giorni, fino a una dimensione massima di 1 GB. Se vuoi conservare i log più a lungo o archiviare una dimensione superiore a 1 GB, puoi esportare log in Cloud Storage. Puoi anche esportare i log in BigQuery e Pub/Sub per per ulteriore elaborazione.

Sono disponibili anche altri log che puoi utilizzare. Di seguito sono riportati alcuni log configurate per impostazione predefinita:

Nome log Tipo di payload Finalità
crash.log testo Informazioni registrate quando la configurazione non va a buon fine. Se l'esecuzione dell'applicazione non riesce, controlla questo log.
monitoring.* testo Informazioni provenienti dal container Docker che pubblica i dati in Cloud Monitoring.
shutdown.log testo Informazioni registrate all'arresto.
stdout testo Output standard della tua app.
stderr testo Errore standard del container.
syslog testo Il syslog della VM, esterno al container Docker.