Utilizzo delle app in Code Engine
Un'applicazione, o app, esegue il codice per servire le richieste di HTTP. Oltre alle richieste tradizionali di HTTP, IBM Cloud® Code Engine supporta anche le applicazioni che utilizzano WebSockets come protocollo di comunicazione. Il numero di istanze in esecuzione di un'applicazione viene automaticamente ridimensionato (fino a zero) in base alle richieste in entrata e alle tue impostazioni di configurazione. Un'app contiene una o più revisioni. Una revisione rappresenta una versione immutabile delle proprietà di configurazione dell'applicazione. Ogni aggiornamento di una proprietà di configurazione dell'app crea una nuova revisione dell'applicazione.
Prima di iniziare
- Se vuoi utilizzare la console Code Engine, vai a Code Engine.
- Se vuoi utilizzare la CLI, configura il tuo ambiente CLI Code Engine.
- Pianifica e scegli il tuo approccio per eseguire il tuo codice come componente dell'applicazione Code Engine.
- Assicurati che la tua applicazione rispetti la metodologia dell'applicazione a 12 fattori.
Per le funzioni di sicurezza fornite con Code Engine, vedi Code Engine and security.
Code Engine fornisce metodi CRD (custom resource definition). Per ulteriori informazioni, vedi Serving CRD methods.
Non siete sicuri del tipo di carico di lavoro da creare su Code Engine? Vedere Pianificazione per Code Engine.
Come posso eseguire il codice come un componente dell'applicazione Code Engine ?
Se il tuo codice esiste come origine in un file locale o in un repository Git o se il tuo codice è un'immagine del contenitore che esiste in un registro pubblico o privato, Code Engine ti fornisce un modo semplificato per eseguire il codice come un'applicazione.
-
Se hai un'immagine del contenitore, in base allo standard OCI(Open Container Initiative), devi fornire solo un riferimento all'immagine, che punta all'ubicazione del tuo registro del contenitore quando crei e distribuisci la tua applicazione. Puoi distribuire la tua applicazione con una immagine in un registro pubblico o in un registro privato.
-
Se stai iniziando con il codice sorgente che risiede in un repository Git, puoi scegliere di lasciare che Code Engine si occupi della creazione dell'immagine dalla tua origine e della distribuzione dell'applicazione con una singola operazione. In questo scenario, Code Engine carica la tua immagine in IBM Cloud® Container Registry. Per ulteriori informazioni, vedi Distribuzione della tua applicazione dal codice sorgente del repository. Se vuoi più controllo sulla build della tua immagine, puoi scegliere di creare l'immagine con Code Engine prima di creare e distribuire la tua applicazione.
-
Se stai iniziando con il codice sorgente che risiede su una workstation locale, puoi scegliere di consentire a Code Engine di creare l'immagine dalla tua origine e distribuire l'applicazione con un singolo comando della CLI. In questo scenario, Code Engine carica la tua immagine in IBM Cloud® Container Registry. Per ulteriori informazioni, vedi Distribuzione della tua applicazione dal codice sorgente locale con la CLI. Se vuoi più controllo sulla build della tua immagine, puoi scegliere di creare l'immagine con Code Engine prima di creare e distribuire la tua applicazione.
Dopo che la tua applicazione è stata distribuita, puoi anche aggiornare la tua applicazione distribuita utilizzando qualsiasi dei modi precedenti, indipendentemente da come hai creato o precedentemente aggiornato la tua applicazione.
Quando distribuisci la tua applicazione, viene scaricata e distribuita l'ultima versione della tua immagine del contenitore di riferimento, a meno che non venga specificata una tag per l'immagine. Se viene specificata una tag per l'immagine, l'immagine contrassegnata viene utilizzata per la distribuzione.
L'immagine associata alla specifica revisione dell'applicazione ha un digest univoco del registro del contenitore e Code Engine utilizza questo digest per tutta la durata della revisione dell'applicazione. Se crei una nuova versione di un'immagine con la stessa tag dell'immagine originale, l'immagine originale viene sovrascritta nel registro del contenitore e diventa senza tag. L'immagine più recente è taggata e questa immagine più recente ha un digest diverso. L'applicazione Code Engine non utilizza l'immagine più recente, perché questa ha un digest diverso da quello dell'immagine a cui fa riferimento la revisione dell'applicazione. Code Engine può comunque creare nuove istanze della revisione dell'applicazione finché l'immagine non contrassegnata, a cui faceva riferimento in origine, esiste ancora. Per ulteriori informazioni, vedere Perché Code Engine non riesce a estrarre un'immagine?
Il formato predefinito di URL per le applicazioni è https://<appname>.<uuid>.<region>.codeengine.appdomain.cloud, dove appname è il nome dell'applicazione, uuid è l'identificatore univoco
generato automaticamente e region è la regione in cui risiede il progetto Code Engine. La parte UUID del sito URL di un'applicazione ha il formato aaaabbbbccc. L'applicazione generata automaticamente URL persiste
per il ciclo di vita del progetto dell'applicazione.
Per ulteriori informazioni sugli endpoint per accedere alle applicazioni per regione, vedi Code Engine endpoint per accedere alle applicazioni.
Cosa devo sapere sulle porte per le applicazioni in Code Engine?
Per impostazione predefinita, Code Engine presume che le applicazioni siano in attesa di connessioni in entrata sulla porta 8080. Inoltre, Code Engine imposta la variabile d'ambiente PORT sul valore della porta su cui
l'applicazione è in ascolto. Se la tua applicazione deve essere in ascolto su una porta diversa dalla porta 8080, distribuisci la tua applicazione dalla console e specifica la porta corretta oppure utilizza l'opzione --port nel comando app create. Per ulteriori informazioni sulle variabili di ambiente impostate da Code Engine, consulta Variabili di ambiente inserite automaticamente.
Le seguenti porte sono riservate da Code Engine: 8022, 8008, 8012, 9090, 9091 e 15090. Solo una porta può essere esposta come porta di ascolto.
Le connessioni in entrata a Code Engine su HTTP su Internet utilizzano la porta 80. Le connessioni in entrata a Code Engine tramite HTTPS su Internet utilizzano la porta 443
Se una scansione della porta mostra più porte aperte, vedi Perché la mia scansione della porta mostra più porte aperte del previsto?
Considerazioni sulla gestione di HTTP
Quando si lavora con applicazioni (o lavori), è utile conoscere la gestione di base di HTTP in Code Engine.
-
Per le connessioni in entrata delle applicazioni che utilizzano HTTP, gli aspetti relativi alla sicurezza del livello di trasporto (TLS) sono gestiti automaticamente da Code Engine al di fuori del codice dell'applicazione. Il sito HTTP Server per l'applicazione deve preoccuparsi solo della connettività HTTP e non di quella HTTPS. In particolare, Code Engine utilizza Cloud Internet Services (CIS) in IBM Cloud, che si basa su CloudFlare, come sistema di prevenzione delle intrusioni (IPS) per la protezione DNS e DDOS a livello 4. La connessione TCP/IP stabilita sull'IPS è di proprietà e gestita da Cloudflare. Per ulteriori informazioni, vedi Documentazione Cloudflare.
-
Le connessioni Internet destinate alle applicazioni di Code Engine vengono automaticamente reindirizzate all'uso di HTTPS.
-
Le connessioni in uscita dalle applicazioni verso altre applicazioni Code Engine sono automaticamente protette da TLS. Code Engine gestisce automaticamente questa connettività, quindi il protocollo (o URL ) utilizzato è
HTTPe nonHTTPS. -
Le connessioni in uscita dalle applicazioni verso applicazioni non Code Engine, come Internet, utilizzano
HTTPoHTTPSa seconda del protocollo specificato nel codice dell'applicazione o URL. -
Le connessioni in uscita dai lavori batch utilizzano il protocollo
HTTPoHTTPSspecificato nel codice del lavoro o URL. Questo comportamento include le connessioni dei lavori batch alle applicazioni Code Engine.
Opzioni per la visibilità per l'applicazione Code Engine
Con Code Engine, è possibile determinare il giusto livello di visibilità per l'applicazione, definendo gli endpoint o le mappature del dominio di sistema disponibili per la ricezione delle richieste.
Ogni applicazione ha una mappatura interna del dominio del sistema che è visibile a tutti i componenti dello stesso progetto Code Engine, ma non all'esterno del progetto. Oltre all'associazione del dominio del sistema interno, si sceglie di rendere l'applicazione visibile alla rete pubblico internet o IBM Cloud privato.
Per la visibilità pubblica o privata, l'applicazione è esposta su un endpoint HTTPS. Per informazioni sul certificato TLS utilizzato, vedere Certificati TLS per i progetti Code Engine.
È possibile distribuire l'applicazione con i seguenti livelli di visibilità:
| Impostazione | Descrizione |
|---|---|
| interno(progetto) | Un'applicazione con questa impostazione può ricevere richieste dai componenti nello stesso progetto Code Engine. L'impostazione di un endpoint interno (al progetto) significa che l'applicazione non è accessibile da Internet e che l'accesso alla rete è possibile solo da altri componenti di Code Engine in esecuzione all'interno dello stesso progetto Code Engine. Questo endpoint è sempre abilitato. |
| pubblico | Un'applicazione con questa impostazione è esposta a internet e al tuo progetto Code Engine. L'impostazione di un endpoint pubblico significa che la tua applicazione può ricevere richieste da internet pubblico o da componenti all'interno del tuo progetto Code Engine. Questa è l'impostazione predefinita. |
| privato | Un'applicazione con questa impostazione viene esposta alla rete privata IBM Cloud e al progetto Code Engine. L'impostazione di un endpoint privato significa che la tua applicazione non è accessibile da Internet pubblico e l'accesso alla rete è possibile solo da altri componenti di IBM Cloud utilizzando VPE (Virtual Private Endpoints) o Code Engine in esecuzione nello stesso progetto. |
Puoi configurare le impostazioni dell'endpoint per la visibilità di una applicazione dalla console o con la CLI quando crei e distribuisci o aggiorni la tua applicazione.
Distribuzione della tua applicazione con un endpoint pubblico
Quando distribuisci un'applicazione, per impostazione predefinita, l'applicazione viene distribuita in modo che possa ricevere richieste da internet pubblico o da componenti all'interno dello stesso progetto Code Engine. In questo caso, l'applicazione viene distribuita con un endpoint pubblico.
Distribuzione della tua app con un endpoint privato
Puoi configurare la visibilità dell'endpoint per la tua applicazione in modo che sia distribuita con un endpoint privato. L'impostazione di un endpoint privato significa che la tua applicazione non è accessibile da Internet pubblico e l'accesso alla rete è possibile solo da altri componenti di IBM Cloud che sono in esecuzione nello stesso progetto (cluster-local).
Ad esempio, se la tua soluzione è composta da un componente in esecuzione su un cluster IBM Cloud Kubernetes Service Kubernetes all'interno del tuo endpoint privato virtuale e vuoi accedere all'applicazione Code Engine dalla rete privata IBM Cloud, puoi impostare la visibilità dell'applicazione su privata. Quando la visibilità dell'app è impostata su privata, l'app non è accessibile tramite Internet pubblico. L'applicazione è ancora accessibile da altre applicazioni all'interno del progetto.
Puoi distribuire la tua applicazione con un endpoint privato in modo che l'applicazione sia esposta solo attraverso la rete privata IBM Cloud e non esposta a Internet esterno. L'applicazione è ancora raggiungibile tramite componenti condivisi dall'interno della rete interna e l'endpoint dell'applicazione deve essere protetto.
Con la CLI, imposta la visibilità dell'endpoint per la tua applicazione in modo che venga distribuita con un endpoint privato utilizzando l'opzione --visibility=private nel comando app create o app update. Puoi ottenere gli URL disponibili per la tua applicazione che riflettono la tua definizione di endpoint utilizzando il
comando app get.
Dalla console, imposta la visibilità degli endpoint per la tua applicazione utilizzando l'impostazione Endpoint quando crei la tua applicazione. Una volta distribuita l'app, puoi visualizzare e modificare queste impostazioni di associazione del dominio di sistema nella scheda Associazioni dominio nella pagina della tua applicazione.
Per ulteriori informazioni sulla connessione su reti private, vedi Using Virtual Private Endpoints with Code Engine.
Distribuzione della tua applicazione con un endpoint del progetto
Puoi impostare la visibilità dell'endpoint per la tua applicazione in modo che sia distribuita con un endpoint interno (progetto). L'impostazione di un endpoint di solo progetto significa che l'applicazione non è accessibile da Internet e che l'accesso alla rete è possibile solo da altri componenti di Code Engine in esecuzione all'interno dello stesso progetto Code Engine. Questo endpoint è sempre abilitato. Le applicazioni sono ancora accessibili tramite componenti condivisi e quindi devono essere protette.
Ad esempio, se la soluzione è composta da diverse applicazioni all'interno di un progetto, è possibile configurare la soluzione in modo che solo una di tali applicazioni sia visibile da Internet in modo che gestisca il traffico in entrata. Questa applicazione pubblica può delegare il lavoro ad altre applicazioni nella tua soluzione in modo che non debbano essere visibili da Internet.
Con la CLI, imposta la visibilità dell'endpoint per la tua applicazione in modo che venga distribuita con un endpoint del progetto utilizzando l'opzione --visibility=project sul comando app create o app update. Puoi ottenere gli URL disponibili per la tua applicazione che riflettono la tua definizione di endpoint utilizzando il
comando app get.
Dalla console, imposta la visibilità degli endpoint per la tua applicazione utilizzando l'impostazione Endpoint quando crei la tua applicazione. Una volta distribuita l'app, puoi visualizzare e modificare queste impostazioni di associazione del dominio di sistema nella scheda Associazioni dominio nella pagina della tua applicazione.
Opzioni per la distribuzione di un'applicazione Code Engine
Scopri le opzioni che puoi specificare quando distribuisci la tua applicazione. Tieni presente che le opzioni possono variare tra console e CLI.
Memoria e CPU
Quando distribuisci la tua applicazione, puoi specificare la quantità di memoria e CPU che la tua applicazione può utilizzare. Queste quantità possono variare, a seconda che la tua applicazione sia ad alta intensità di calcolo, ad alta intensità di memoria o bilanciata.
Per impostazione predefinita, alla tua applicazione vengono assegnati 4 G di memoria e 1 vCPU. Per ulteriori informazioni sulla selezione di memoria e CPU, vedi Combinazioni di memoria e CPU supportate.
Distribuzione della tua applicazione con comandi e argomenti
È possibile definire comandi e argomenti per l'applicazione da utilizzare in fase di runtime.
Definisci i comandi e gli argomenti per la tua applicazione aggiungendo le opzioni di --cmd e --arg al tuo comando app create.
ibmcloud ce app create --name myapp --image icr.io/codeengine/hello --cmd /myapp --arg --debug
Per ulteriori informazioni sull'utilizzo di cmd e arg, vedi Definizione dei comandi e degli argomenti per i tuoi carichi di lavoro Code Engine.
Creazione ed esecuzione della tua applicazione con le variabili di ambiente
È possibile definire e impostare le variabili di ambiente come coppie chiave - valore che possono essere utilizzate dall'applicazione al runtime.
Puoi definire le variabili di ambiente quando crei la tua applicazione o quando aggiorni un'applicazione esistente dalla console o con la CLI.
Per ulteriori informazioni sulla definizione delle variabili di ambiente, consultare Gestione delle variabili di ambiente.
Code Engine inserisce automaticamente alcune variabili di ambiente nell'applicazione. Per ulteriori informazioni sulle variabili di ambiente inserite automaticamente, consultare Variabili di ambiente inserite automaticamente.
Creazione ed esecuzione della tua app quando utilizzi i segreti e le mappe di configurazione
In Code Engine, i segreti e le configmazioni possono essere utilizzati dall'applicazione tramite variabili d'ambiente.
Sia i segreti che le mappe di configurazione sono coppie chiave - valore. Quando associate alle variabili di ambiente, le relazioni NAME=VALUE sono impostate in modo che il nome della variabile di ambiente corrisponda alla "chiave"
di ogni voce in tali mappe e il valore della variabile di ambiente sia il "valore" di tale chiave.
La tua applicazione può utilizzare le variabili di ambiente per fare riferimento completamente a una mappa di configurazione (o a un segreto) o fare riferimento a singole chiavi in una mappa di configurazione (o a un segreto).
Per ulteriori informazioni, vedi Riferimento ai segreti utilizzando le variabili di ambiente e Riferimento alle mappe di configurazione utilizzando le variabili di ambiente.
Considerazioni per le quote di applicazione
Quando lavori con applicazioni, funzioni e lavori batch, tali risorse vengono eseguite nel contesto di un progetto Code Engine. Le quote di risorse vengono definite in base al progetto e vengono applicati limiti per applicazioni, funzioni e lavori batch.
Per ulteriori informazioni sui limiti di Code Engine, consulta Limiti e quote per Code Engine.
Passi successivi
Ora che hai familiarità con i concetti chiave di utilizzo delle applicazioni Code Engine, sei pronto a distribuire e gestire le applicazioni? Consulta
- Distribuzione dei carichi di lavoro dell'applicazione dalle immagini in un registro pubblico.
- Distribuzione dei workload dell'applicazione dalle immagini in IBM Cloud Container Registry.
- Distribuzione dei carichi di lavoro dell'applicazione dalle immagini in un registro privato.
- Distribuzione della tua applicazione dal codice sorgente del repository.
- Distribuzione della tua applicazione dal codice sorgente locale.
Per ulteriori informazioni su come lavorare con le app, vedere
- Carichi di lavoro dell'applicazione.
- Configurazione della scalabilità dell'applicazione.
- Configurazione delle associazioni dominio personalizzate per l'app.
- Integrazione dei servizi IBM Cloud con i bind del servizio.
- Utilizzo delle variabili di ambiente, delle configmap e dei segreti.
- Sottoscrizione ai produttori eventi.
- Risoluzione dei problemi relativi alle applicazioni.