Migrazione delle applicazioni Cloud Foundry alle FAQ di Code Engine
Risposte a domande comuni sulla migrazione delle tue applicazioni Cloud Foundry a Code Engine.
Posso utilizzare un URL personalizzato con Code Engine?
Sì. È possibile mappare il proprio URL personalizzato a un'applicazione Code Engine creando una mappatura di dominio personalizzata dalla console Code Engine. È inoltre possibile assegnare un sito URL personalizzato tramite un provider di servizi Internet, come ad esempio IBM Cloud Internet Services. Per ulteriori informazioni sulla distribuzione di un'applicazione con un dominio personalizzato tramite IBM Cloud Internet Services, vedere Configurazione di un'applicazione altamente disponibile. Per ulteriori informazioni sulla distribuzione di un'applicazione con un dominio personalizzato tramite Cloud Internet Services (CIS), vedere Ottenere un dominio personalizzato e il relativo certificato TLS e chiave privata.
La mia applicazione contiene un percorso specifico, posso utilizzare lo stesso percorso?
Puoi utilizzare lo stesso instradamento o dominio personalizzato finché lo controlli. Se la rotta proviene da un'altra origine, ad esempio una rotta fornita da IBMcome mybluemix.net, devi utilizzare il dominio fornito da Code Engine
oppure associare un nuovo dominio personalizzato alla tua applicazione.
Posso interrompere la mia app?
Non puoi arrestare direttamente la tua applicazione, ma puoi impedire alla tua applicazione di ricevere traffico impostando la sua visibilità su project e consentendole di scalarla a 0. Per ulteriori informazioni, vedi Come posso impedire alla mia applicazione di ricevere traffico?
Perché ho così tante istanze dell'app?
Quando aggiorni la tua applicazione, Code Engine crea automaticamente una nuova revisione. Quando la revisione è disponibile, il traffico viene instradato alle nuove istanze. Mentre la revisione aumenta e il traffico viene trasferito, l'istanza dell'applicazione originale continua a gestire il traffico. Quando la revisione viene ridimensionata e tutto il traffico viene instradato ad essa, l'app originale viene ridimensionata. La tua applicazione ridimensiona automaticamente in base alle esigenze di traffico. Ricontrolla più tardi per assicurarti che la tua applicazione stia eseguendo il numero corretto di istanze. Per ulteriori informazioni, vedi Configurazione del ridimensionamento dell'applicazione.
Perché le mie app sono lente a rispondere?
La tua applicazione si adatta a zero per impostazione predefinita e quindi può essere più lenta a rispondere mentre esegue il ridimensionamento incrementale. Puoi modificare questo comportamento aggiornando la tua applicazione e impostando la
scala minima su 1 nella console o dalla CLI.
Ad esempio, per impostare la scala minima su 1 per un'applicazione denominata myapp dalla CLI,
ibmcloud ce app update --name myapp --min-scale 1
Dopo l'aggiornamento dell'applicazione, una singola istanza è sempre in esecuzione. Tieni presente che potrebbero essere applicati degli addebiti. Per ulteriori informazioni, vedere Prezzi per Code Engine.
Posso instradare le richieste a una specifica istanza dell'applicazione?
No, questa funzionalità non è attualmente supportata. Puoi approssimare questa funzionalità utilizzando Suddivisione del traffico Knative. Per ulteriori informazioni sull'utilizzo di Knative con Code Engine, vedi Utilizzo di Knative con Code Engine.
Utilizzo un programma di bilanciamento del carico globale con l'applicazione Cloud Foundry. Posso migrarlo a Code Engine?
Sì, puoi aggiornare il tuo programma di bilanciamento del carico globale in modo che punti alla tua applicazione Code Engine, se puoi accedere alla catena di certificati e alla chiave privata corrispondente. La seguente procedura presuppone che stai utilizzando Cloud Internet Services (CIS); tuttavia, puoi adattare questi passi per il tuo proprio programma di bilanciamento del carico globale.
Questi passi utilizzano la console.
-
Crea un'associazione dominio per la tua applicazione. Quando crei la tua associazione del dominio, fornisci la tua chiave privata e la catena di certificati completa dei domini. Per ulteriori informazioni, vedi Configurazione delle associazioni dominio personalizzate per la tua applicazione. Attendere che le associazioni dominio in tutti i progetti mostrino uno stato
Ready. -
Aprire i dettagli di ciascuna associazione dominio e registrare il valore
CNAME, ad esempiocustom.<your-random-id>.us-south.codeengine.appdomain.cloudocustom.<your-other-random-id>.us-east.codeengine.appdomain.cloud. -
Passare alla pagina dei dettagli per ciascuna applicazione e selezionare la scheda Associazioni dominio, quindi selezionare
No external system domain mappingnella sezione Associazioni dominio di sistema. Questo passo garantisce che le tue applicazioni siano accessibili solo attraverso i domini personalizzati quando vengono richiamati dall'esterno di questo progetto. -
Nella tua istanza Cloud Internet Services (CIS), passa a Reliability. > Programmi di bilanciamento del carico globali> Pool di origine e modificare i pool di origine esistenti modificando l'indirizzo di origine nel
CNAMEregistrato in precedenza.
Il tuo programma di bilanciamento del carico globale ora punta alla tua applicazione Code Engine.
La mia app deve seguire le specifiche?
La tua applicazione deve seguire la metodologia dell'applicazione a 12 fattori.
Quali tipi di carico di lavoro sono disponibili con Code Engine?
Code Engine supporta due tipi di carichi di lavoro: applicazioni e lavori batch.
Un'applicazione, o app, esegue il vostro 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.
Un lavoro esegue una o più istanze del codice eseguibile in parallelo. A differenza delle applicazioni, che gestiscono le richieste di HTTP, i lavori sono progettati per essere eseguiti una sola volta e poi terminati. Quando si crea un job, è possibile specificare le informazioni di configurazione del workload che vengono utilizzate ogni volta che il job viene eseguito.
Determinazione del tipo di carico di lavoro desiderato
La maggior parte delle applicazioni Cloud Foundry può migrare a Code Engine. Tuttavia, se l'applicazione Cloud Foundry non attende una richiesta in arrivo da HTTP, i lavori sono probabilmente la scelta migliore. Per ulteriori discussioni ed esempi, vedere Pianificazione di Code Engine.
Uso i file manifest. Ci sono opzioni simili disponibili con Code Engine?
Se utilizzi i file manifest per le tue applicazioni Cloud Foundry, associa i tuoi attributi manifest alle funzioni o all'opzione CLI Code Engine corrispondenti.
| Attributo Manifest | Code Engine equivalente sui comandi ibmcloud ce app create o app update |
|---|---|
command |
--command option |
disk_quota |
Impostato implicitamente da Code Engine. |
docker |
Non necessario in Code Engine. |
health-check-http-endpoint |
Non necessario in Code Engine. Per impostazione predefinita, un probe TCP viene utilizzato per sapere quando l'applicazione è integra e pronta. |
health-check-invocation-timeout |
Non necessario in Code Engine. |
instances |
Opzioni --min-scale e --max-scale |
memory |
--memory option |
metadata |
Attualmente non supportato. |
no-route |
Con l'opzione --cluster-local, l'applicazione è ancora accessibile da altri carichi di lavoro all'interno del progetto, ma non include un sito URL accessibile via Internet associato all'applicazione. |
path |
Attualmente non applicabile. |
processes |
Non necessario in Code Engine. L'applicazione può creare ulteriori processi durante il runtime. |
random-route |
Non necessario in Code Engine. Ogni progetto ha un sottodominio unico e, poiché il nome dell'applicazione fa parte di URL, il sito URL è garantito come unico. |
routes |
Gli instradamenti personalizzati non sono attualmente supportati, ma puoi utilizzare IBM Cloud Internet Service(CIS)o Cloudflare per eseguire il front end della tua applicazione con un dominio personalizzato. |
sidecars |
Attualmente non supportato. |
stack |
Gestito implicitamente da Code Engine. |
timeout |
Non necessario in Code Engine. |
| Variabili di ambiente | -env option |
| Servizi | Consultare il comando ibmcloud ce app bind. |
Code Engine supporta molte opzioni che non sono disponibili in Cloud Foundry, come ad esempio come viene gestito il ridimensionamento automatico. Vedi Gestione delle applicazioni in Code Engine e Configurazione del ridimensionamento dell'applicazione.
So come distribuire un'applicazione con Cloud Foundry. Cosa devo sapere per distribuire un'applicazione in Code Engine?
Se sai come distribuire un'applicazione con Cloud Foundry, trova quello che devi sapere per distribuire un'applicazione in Code Engine.
Codice push
Con Code Engine, puoi creare il tuo codice originato in un repository Git o da un sistema locale (solo CLI). Inoltre, come con Cloud Foundry (cf push), puoi creare e distribuire la tua applicazione in un singolo passo sia con
la CLI che con la console Code Engine. Per ulteriori informazioni, vedi Come posso eseguire il mio codice come un componente dell'applicazione Code Engine ?.
Contesto di distribuzione
Cloud Foundry richiede un Org e un Space per distribuire il tuo codice in un'applicazione. Tutti gli utenti Cloud Foundry, per impostazione predefinita ricevono un Org e Space che vengono
creati per essi. Tuttavia, per aggiungerne di nuovi, è necessario impostare una destinazione Org e Space simile al seguente esempio.
ibmcloud cf create-org MyOrg
ibmcloud target -o <ORGNAME>
ibmcloud target -s dev
Quando distribuisci quindi un'applicazione con Cloud Foundry, Org e Space sono destinati alla distribuzione.
Code Engine utilizza il concetto di un gruppo di risorse IBM Cloud e un progetto Code Engine.
ibmcloud target -g <RESOURCE-GROUP>
ibmcloud ce project create --name <PROJECTNAME>
Questi comandi non solo creano un progetto, ma lo "indirizzano". Tutti i comandi Code Engine successivi vengono eseguiti nel contesto di questo progetto fino a quando non viene assegnato un progetto differente utilizzando il comando
project select. Per ulteriori informazioni, consultare Gestione dei progetti.
Log
Code Engine fornisce i log per le applicazioni, i lavori e le build per aiutarti a determinare cosa è successo quando le distribuzioni non vengono eseguite correttamente. Puoi trovare i log eseguendo comandi simili ai seguenti esempi.
ibmcloud ce app logs -n <APPNAME>
ibmcloud ce jobrun logs -n <JOBRUN-NAME>
ibmcloud ce buildrun logs -n <BUILDRUN_NAME>
Si può anche usare il servizio IBM Cloud Logs, disponibile per la persistenza a lungo termine dei messaggi di log. Per ulteriori informazioni, vedi Visualizzazione dei log.
Creazione di un servizio
La creazione di un'istanza di un servizio gestito è simile in Cloud Foundry e Code Engine.
Per creare un nuovo servizio da utilizzare nella tua applicazione Cloud Foundry, utilizza il seguente comando.
ibmcloud cf create-service cloudantNoSQLDB lite myNameCloudant
Per creare un nuovo servizio da utilizzare con applicazioni Code Engine,
ibmcloud resource service-instance-create myNameCOS cloud-object-storage lite global
Bind del servizio
Dopo aver creato la propria applicazione, è possibile "eseguire il bind" della propria applicazione al servizio.
Con Cloud Foundry, immetti il seguente comando.
ibmcloud cf bind-service appName instanceName
Con Code Engine,
ibmcloud ce app bind --name appName --service-instance instanceName
Le credenziali dell'istanza del servizio (coordinate) vengono inserite nell'app (o nel lavoro) utilizzando le variabili di ambiente. L'equivalente Cloud Foundry di VCAP_SERVICES in Code Engine è CE_SERVICES. Per ulteriori
informazioni, vedi Integrazione del servizio IBM Cloud con il bind del servizio.
Aggiornamento di un'app o di un lavoro
Dopo aver creato l'applicazione o il lavoro, è possibile aggiornare le proprietà del carico di lavoro utilizzando il comando di aggiornamento. Ad esempio, per aggiornare un'applicazione in Code Engine,
ibmcloud ce app update --name <APPNAME> ...
È possibile aggiornare qualsiasi proprietà disponibile quando si crea un'applicazione o un lavoro. Per ulteriori informazioni, consulta i seguenti argomenti.
supporto runtime
Code Engine supporta molti dei runtime supportati da Cloud Foundry. Per un elenco di runtime supportati da Code Engine, vedi Pacchetti di build nativi cloud. Se vuoi utilizzare un runtime non supportato, ad esempio Swift o Liberty, puoi impacchettare la tua applicazione come un'immagine del contenitore e distribuirla in Code Engine senza creare l'immagine direttamente da Code Engine.
Passi successivi
- Stai iniziando la migrazione? Controlla Introduzione.
- Confronta la terminologia Cloud Foundry con Code Engine.
- Prova Code Engine con un'esercitazione di creazione locale.
- L'applicazione utilizza i bind di servizio? Controlla Migrating your service bindings.
- Informazioni su scalabilità e gestione del traffico.
- Trovare Code Engine equivalenti ai comandi Cloud Foundry.
- Migrazione delle applicazioni Cloud Foundry alle FAQ di Code Engine (pagina corrente)
Altre informazioni
- Scopri i prezzi diCode Engine.
- Prova altre esercitazioni diCode Engine.
- Esplora altri Code Engine argomenti.