Creazione di carichi di lavoro di funzioni da bundle di codice esistenti
Crea la tua funzione " Code Engine " utilizzando un pacchetto di codice disponibile all'indirizzo IBM Cloud® Container Registry. È possibile creare una funzione dalla console o tramite la CLI.
Un bundle di codici è una raccolta di file che rappresenta il codice della funzione. Questo bundle di codice viene inserito nel contenitore di runtime. Il tuo bundle di codice è creato da Code Engine ed è memorizzato nel registro del contenitore o in linea con la funzione. Un bundle di codice non è un'immagine contenitore standard OCI (Open Container Initiative).
Non è possibile scaricare i pacchetti di codice da un indirizzo diverso da Container Registry.
Prima di iniziare
-
Devi avere un bundle di codice in IBM Cloud® Container Registry. Per ulteriori informazioni, vedi Introduzione a Container Registry. In alternativa, puoi creare un'immagine da origine repository o da origine locale.
-
Verifica di poter accedere al Registro di sistema. Consultare Impostazione delle autorizzazioni per i registri dei contenitori.
Ti interessa configurare il tuo progetto in modo che tutti gli utenti possano archiviare e accedere alle immagini su Container Registry senza dover creare manualmente i segreti di registro? Con autorizzazioni sufficienti, è possibile configurare questo accesso di registro predefinito in base alla posizione (regione). Se non si dispone di autorizzazioni sufficienti per eseguire queste azioni, è possibile utilizzare questa pagina per comprendere le autorizzazioni richieste. Consultare Configurazione delle impostazioni del progetto.
Creazione di una funzione che fa riferimento a un bundle di codici in Container Registry con la console
Crea una funzione che utilizzi un bundle di codice esistente tramite la console Code Engine.
Code Engine può automaticamente estrarre i bundle di codice da Container Registry.
- Apri la console Code Engine.
- Seleziona " Inizia a creare ".
- Seleziona un progetto dall'elenco dei progetti disponibili. È anche possibile crearne uno nuovo. È necessario selezionare un progetto per creare una funzione.
- Seleziona " Funzione ".
- Inserisci un nome per la funzione; ad esempio,
myfunction. Assegna alla tua funzione un nome che sia univoco all'interno del progetto. - Selezionare un' immagine di runtime per il codice funzione. Per ulteriori informazioni, vedi Runtime.
- Selezionare Utilizza un bundle di codici esistente.
- Specificare l'ubicazione del bundle di codici nel formato
registry/namespace/repository:tag. - Se il tuo bundle di codice si trova nel tuo account o in un registro pubblico, non devi specificare un segreto di registro. Se il bundle di codice si trova in un registro privato, è necessario aggiungere il segreto di registro. Per ulteriore assistenza, fare clic su Aiuto per specificare il bundle di codici. Per ulteriori informazioni, vedi Accesso ai registri del contenitore.
- Specifica le informazioni sulla tua risorsa, inclusi CPU e combinazioni di memoria e Ritardo di riduzione.
- Facoltativamente, specifica un dominio personalizzato o le variabili di ambiente.
- Fai clic su Crea.
- Una volta modificato lo stato della funzione in Pronto, è possibile verificare la funzione. Fare clic su Verifica funzione e fare clic su Invia richiesta. Per aprire la funzione in una pagina web, clicca su “Funzione” URL.
Distribuzione di una funzione con un bundle di codice esistente con la CLI
Crea una funzione che utilizzi un pacchetto di codice memorizzato su IBM Cloud® Container Registry tramite la CLI con il ibmcloud ce fn create comando. Per un elenco completo delle opzioni, consultare il comando
ibmcloud ce fn create.
Prima di iniziare
- Imposta il tuo ambiente CLICode Engine.
- Creare e utilizzare un progetto.
- Prima di poter lavorare con una funzione Code Engine che fa riferimento a un bundle di codici in Container Registry, devi prima aggiungere l'accesso al registro in modo che Code Engine possa eseguire il pull del bundle di codici quando viene creata la funzione. Per informazioni sulle autorizzazioni richieste per accedere ai registri, consultare Impostazione delle autorizzazioni per i registri di immagini.
Distribuzione di una funzione da un registro pubblico con la CLI
Se il tuo bundle di codice esistente si trova nel tuo account o in un registro pubblico, puoi utilizzare il comando ibmcloud ce fn create.
Ad esempio, esegui questo comando per estrarre un bundle di codice esistente dal registro pubblico e creare una funzione.
ibmcloud ce fn create --name myhellofun --code-bundle icr.io/codeengine/samples/function-nodejs-codebundle --runtime nodejs
Esegui il comando fornito fn get per individuare il file URL. È quindi possibile utilizzare il comando curl per richiamare l' URL.
Output di esempio dal bundle di codice esistente.
<html><body><h3>Hello, Functions on CodeEngine!</h3></body></html>
Distribuzione di una funzione da un registro privato con la CLI
Per accedere a un bundle di codice esistente da un registro privato, è necessario impostare l'accesso al registro, creare un segreto di registro e fornire tale segreto quando si esegue il comando ibmcloud ce fn create.
-
Per aggiungere l'accesso a Container Registry, creare una chiave API IAM. Per creare una IBM Cloud Con la CLI, eseguire il comando '
iam api-key-create. Ad esempio, per creare una chiave API chiamata 'cliapikeycon una descrizione di 'My CLI API keye salvarla in un file chiamato 'key_file, eseguire il seguente comando:ibmcloud iam api-key-create cliapikey -d "My CLI API key" --file key_fileSe si sceglie di non salvare la chiave in un file, è necessario registrare la chiave API visualizzata quando la si crea. Non puoi richiamarla successivamente.
-
Dopo aver creato la tua chiave API, crea un segreto di registro in Code Engine. Per creare un segreto di registro, utilizzare il comando
ibmcloud ce secret create --format registry. Ad esempio, il seguente comando crea l'accesso del Registro di sistema a un'istanza Container Registry denominatamyregistry. Notare che, anche se le opzioni--servere--usernamesono specificate nel comando di esempio, il valore predefinito per l'opzione--serverèus.icr.ioe l'opzione--usernameèiamapikeyquando il server èus.icr.io.ibmcloud ce secret create --format registry --name myregistry --server us.icr.io --username iamapikey --password APIKEYOutput di esempio
Creating registry secret 'myregistry'... OK -
Crea la tua funzione e fai riferimento a un bundle di codici in un registro privato in Container Registry. Ad esempio, utilizzare il comando
ibmcloud ce fn createper creare la funzionemyhellofunper fare riferimento aicr.io/codeengine/samples/function-nodejs-codebundleutilizzando le informazioni di accessomyregistry.ibmcloud ce fn create --name myhellofun --code-bundle icr.io/NAMESPACE/REGISTRY:TAG --registry-secret myregistryIl formato del nome del bundle di codice per questa funzione è
REGISTRY/NAMESPACE/REGISTRY:TAGdoveREGISTRYeTAGsono facoltativi. Se non viene specificatoREGISTRY, il valore predefinito èicr.io. Se non viene specificatoTAG, il valore predefinito èlatest. -
Una volta creata la funzione, è possibile richiamarla. Per trovare l' URL e della tua funzione, esegui il comando
ibmcloud ce fn getfornito. È quindi possibile utilizzare il comandocurlper richiamare l' URL.
Passi successivi
-
Una volta creata la funzione, puoi accedervi cliccando su “Test function” nella console oppure individuando l’ URL e della funzione tramite il
function getcomando. -
È possibile creare un' associazione dominio personalizzata e assegnarla alla funzione.
-
Dopo che la tua funzione è stata creata e distribuita, puoi aggiornarla per soddisfare le tue necessità dalla console o utilizzando il comando
ibmcloud ce function update. Se si desidera aggiornare l'origine da utilizzare con la propria funzione, è necessario fornire l'opzione--build-sourcenel comandofunction update.
Una volta creata la funzione, è possibile aggiornare la funzione e il relativo codice di riferimento utilizzando uno qualsiasi dei seguenti modi, indipendentemente da come è stata creata o precedentemente aggiornata la funzione:
-
Se hai un bundle di codice esistente, devi fornire solo un riferimento all'immagine, che punta all'ubicazione del tuo registro del contenitore quando distribuisci la tua applicazione. Per ulteriori informazioni, consultare Creazione di carichi di lavoro di funzioni da bundle di codice esistenti.
Se la funzione è stata creata utilizzando il comando
function createed è stata specificata l'opzione--build-sourceper creare il bundle di codice dall'origine locale o del repository e si desidera modificare la funzione in modo che punti a un bundle di codice diverso, è necessario prima rimuovere l'associazione della build dalla funzione. Ad esempio, eseguireibmcloud ce function update -n FUN_NAME --build-clear. Dopo aver rimosso l'associazione della build dalla funzione, è possibile aggiornare la funzione in modo che faccia riferimento a un'altra immagine. -
Se stai iniziando con il codice sorgente che risiede in un repository Git, puoi scegliere di consentire a Code Engine di creare il bundle di codici dalla tua origine e creare la tua funzione con una singola operazione. In questo scenario, Code Engine carica il tuo bundle di codici in IBM Cloud® Container Registry. Per ulteriori informazioni, consultare Creazione della funzione dal codice sorgente del repository.
-
Se stai iniziando con il codice di origine che risiede su una workstation locale, puoi scegliere Code Engine per creare il bundle di codice dalla tua origine e creare la tua funzione con un comando CLI singolo. In questo scenario, Code Engine carica il tuo codice sorgente e il tuo bundle di codici in IBM Cloud® Container Registry.
Ad esempio, potresti scegliere Code Engine per creare la tua origine locale mentre sviluppi lo sviluppo della tua origine per la funzione. Quindi, una volta maturato il bundle di codice, è possibile aggiornare la funzione per fare riferimento al bundle di codice specifico desiderato. È possibile ripetere questo processo in base alle necessità.
Cerchi altri esempi di codice? Dai un'occhiata agli esempi disponibili nel repository " IBM Cloud Code Engine " su GitHub.