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

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.

  1. Apri la console Code Engine.
  2. Seleziona " Inizia a creare ".
  3. Seleziona un progetto dall'elenco dei progetti disponibili. È anche possibile crearne uno nuovo. È necessario selezionare un progetto per creare una funzione.
  4. Seleziona " Funzione ".
  5. Inserisci un nome per la funzione; ad esempio, myfunction. Assegna alla tua funzione un nome che sia univoco all'interno del progetto.
  6. Selezionare un' immagine di runtime per il codice funzione. Per ulteriori informazioni, vedi Runtime.
  7. Selezionare Utilizza un bundle di codici esistente.
  8. Specificare l'ubicazione del bundle di codici nel formato registry/namespace/repository:tag.
  9. 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.
  10. Specifica le informazioni sulla tua risorsa, inclusi CPU e combinazioni di memoria e Ritardo di riduzione.
  11. Facoltativamente, specifica un dominio personalizzato o le variabili di ambiente.
  12. Fai clic su Crea.
  13. 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

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.

  1. 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 'cliapikey con una descrizione di 'My CLI API key e salvarla in un file chiamato 'key_file, eseguire il seguente comando:

    ibmcloud iam api-key-create cliapikey -d "My CLI API key" --file key_file
    

    Se si sceglie di non salvare la chiave in un file, è necessario registrare la chiave API visualizzata quando la si crea. Non puoi richiamarla successivamente.

  2. 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 denominata myregistry. Notare che, anche se le opzioni --server e --username sono specificate nel comando di esempio, il valore predefinito per l'opzione --server è us.icr.io e l'opzione --username è iamapikey quando il server è us.icr.io.

    ibmcloud ce secret create --format registry --name myregistry --server us.icr.io --username iamapikey --password APIKEY
    

    Output di esempio

    Creating registry secret 'myregistry'...
    OK
    
  3. 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 create per creare la funzione myhellofun per fare riferimento a icr.io/codeengine/samples/function-nodejs-codebundle utilizzando le informazioni di accesso myregistry.

    ibmcloud ce fn create --name myhellofun --code-bundle icr.io/NAMESPACE/REGISTRY:TAG --registry-secret myregistry
    

    Il formato del nome del bundle di codice per questa funzione è REGISTRY/NAMESPACE/REGISTRY:TAG dove REGISTRY e TAG sono facoltativi. Se non viene specificato REGISTRY, il valore predefinito è icr.io. Se non viene specificato TAG, il valore predefinito è latest.

  4. Una volta creata la funzione, è possibile richiamarla. Per trovare l' URL e della tua funzione, esegui il comando ibmcloud ce fn get fornito. È quindi possibile utilizzare il comando curl per 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 get comando.

  • È 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-source nel comando function 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 create ed è stata specificata l'opzione --build-source per 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, eseguire ibmcloud 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.