Migrazione del tuo bind del servizio

Prendiamo un'applicazione nativa cloud comune che segue i principi dell'applicazione a 12 fattori, semplifichiamo e aggiorniamo il codice e creiamo sia una versione Cloud Foundry che Code Engine. Queste versioni fungono da esempio per la discussione delle operazioni di migrazione e degli aspetti di distribuzione.

L'applicazione di esempio è un'applicazione web tipica scritta in Node.js (JavaScript) e utilizza il framework web Express. Un database IBM Cloudant NoSQL funge da servizio di backup per archiviare i dati visualizzati dall'applicazione. Come tipico per le applicazioni native del cloud, a 12 fattori, l'app di esempio si basa su componenti discreti e riutilizzabili che agiscono come microservizi per creare l'applicazione complessiva. Sia il programma Node.js distribuito che il database possono essere ridimensionati, migliorati o persino sostituiti in modo indipendente. I componenti lavorano insieme a causa di come sono configurati e utilizzando API ben definite.

Applicazione nativa cloud semplice con servizio database di backend.
Simple cloud-native app with backend database service.

Il database IBM Cloudant può essere configurato per funzionare come una risorsa allegata con le versioni dell'applicazione distribuite a Cloud Foundry e Code Engine. Per semplicità, la soluzione è riservata a questi due componenti.

Creazione del bind del servizio

Questa applicazione di esempio richiede un database Cloudant per memorizzare il contenuto. Puoi configurare l'accesso a Cloudant inserendo manualmente le variabili di ambiente, ma il processo tipico avviene tramite il bind del servizio. La relazione tra l'applicazione e i suoi servizi di backup è esplicitamente indicata, quindi le credenziali sono create e inserite automaticamente nell'ambiente runtime. Cloud Foundry fornisce le credenziali come parte dell'oggetto VCAP_SERVICES. Code Engine imita questo oggetto tramite la variabile di ambiente CE_SERVICES.

Le applicazioni Cloud Foundry e Code Engine si collegano al servizio del database. Il codice distribuito a Code Engine può essere considerato una versione diversa e più recente dell'applicazione Cloud Foundry. Continua ad essere collegato allo stesso servizio di database, ma attraverso altri mezzi.

Per eseguire il bind della versione Code Engine dell'applicazione a un servizio,

  1. Accedi alla tua istanza del databaseCloudant. Se non ne hai uno, creane uno.
  2. Crea le credenziali del servizio (chiave del servizio IAM) per la tua istanza Cloudant con un nome descrittivo. Specifica il ruolo IAM (Manager, Writer o Reader) per la tua applicazione. Selezionare un ruolo con il livello minimo di privilegi richiesto per l'applicazione.
  3. Esegui il bind del servizio all'applicazione utilizzando le credenziali esistenti. Code Engine può creare le credenziali per te quando associ un servizio. Tuttavia, creando la tua credenziale, puoi tracciare e persino modificare il privilegio indipendentemente da Code Engine.

Per questa applicazione di esempio con Cloudant come servizio del database, immetti i seguenti comandi per creare la chiave del servizio Cloudant-CF2CE-Manager con il ruolo Manager e quindi utilizzala per eseguire il bind del servizio.

ibmcloud resource service-key-create Cloudant-CF2CE-Manager Manager --instance-name Cloudant-CF2CE
ibmcloud ce app bind --name cf2ce-app --service-instance Cloudant-CF2CE --service-credential Cloudant-CF2CE-Manager

Se la tua applicazione Cloud Foundry si collega a un servizio tramite un servizio fornito dall'utente , crea un'applicazione che utilizza i segreti o le mappe di configurazione per Code Engine. Utilizzando i segreti e le mappe di configurazione, puoi inserire le credenziali del servizio nell'ambiente di runtime e gestirle come un oggetto denominato all'interno del progetto Code Engine.

Migrazione del codice

Di solito, la migrazione del codice è diretta. Ad esempio, invece di leggere una variabile di ambiente denominata VCAP_SERVICES per Cloud Foundry, il tuo codice deve essere letto da CE_SERVICES per Code Engine. Inoltre, tieni presente le sottili differenze nel modo in cui vengono denominati i servizi a causa del metodo che i servizi sono resi disponibili attraverso broker per Cloud Foundry e tramite la gestione delle risorse basata su IAM per Code Engine.

A seconda del linguaggio di programmazione, il tuo codice potrebbe utilizzare una libreria di codice o un modulo per accedere all'ambiente di runtime Cloud Foundry, alla configurazione immessa localmente ("dotenv") e altro. Tali sezioni devono essere adeguate.

Confrontare il codice nel file server.js in questi due esempi di applicazione.

Preparazione della migrazione dell'applicazione

Se la tua applicazione non può essere inattiva mentre la sposti da Cloud Foundry a Code Engine, considera di eseguire la migrazione del codice con un passo intermedio.

  • 1cloudfoundry_base: la base di codice Cloud Foundry come origine iniziale. Questa applicazione viene eseguita solo in Cloud Foundry.
  • 2cf_ce_intermediate_hybrid: aggiungi codice per supportare anche una distribuzione Code Engine. Questa applicazione viene eseguita in Cloud Foundry e Code Engine.
  • 3codeengine_target: infine, passa a una base di codice solo Code Engineuna volta completata l'effettiva migrazione del progetto. Questa applicazione viene eseguita solo in Code Engine.

Questo approccio è utile perché è possibile continuare a gestire o migliorare la base di codice durante il processo di migrazione, indipendentemente dall'ambiente di distribuzione.

Creazione del tuo codice ed esecuzione della tua app

Una volta terminata l'impostazione del bind del tuo servizio, la migrazione del codice e la preparazione alla preparazione della tua migrazione, è il momento di creare il codice. Attieniti alla procedura nell'esercitazione sulla prima migrazione per creare il tuo codice da un'origine locale. Se vuoi utilizzare la console per creare il tuo codice, il tuo codice deve essere in Git-hub. Per ulteriori informazioni, vedi Distribuzione della tua app dal codice sorgente.

Passi successivi

  1. Stai iniziando la migrazione? Controlla Introduzione.
  2. Confronta la terminologia Cloud Foundry con Code Engine.
  3. Prova Code Engine con un'esercitazione di creazione locale.
  4. Migrazione del bind del servizio (pagina corrente)
  5. Informazioni su scalabilità e gestione del traffico.
  6. Trovare Code Engine equivalenti ai comandi Cloud Foundry.
  7. Hai ancora altre domande? Prova le applicazioni Migrating Cloud Foundry a Code Engine FAQ.

Altre informazioni