Creación de cargas de trabajo de función a partir de paquetes de código existentes
Crea tu función « Code Engine » con un paquete de código en IBM Cloud® Container Registry. Puedes crear una función desde la consola o mediante la CLI.
Un paquete de códigos es una colección de archivos que representa el código de función. Este paquete de código se inyecta en el contenedor de tiempo de ejecución. El paquete de código lo crea Code Engine y se almacena en el registro de contenedor o en línea con la función. Un paquete de códigos no es una imagen de contenedor estándar de Open Container Initiative (OCI).
No se pueden descargar paquetes de código desde ninguna otra dirección que no sea Container Registry.
Antes de empezar
-
Debe tener un paquete de códigos en IBM Cloud® Container Registry. Para obtener más información, consulte Iniciación a Container Registry. O bien, puede crear una imagen a partir del código fuente del repositorio o del código fuente local.
-
Verifique que puede acceder al registro. Consulte Configuración de autorizaciones para registros de contenedores.
¿Te interesa configurar tu proyecto de tal forma que todos los usuarios del mismo puedan almacenar y acceder a imágenes en Container Registry sin tener que crear manualmente secretos de registro? Con permisos suficientes, puede configurar este acceso de registro predeterminado para cada ubicación (región). Si no tiene permisos suficientes para realizar estas acciones, puede utilizar esta página para ayudarle a comprender los permisos necesarios. Consulte Configuración de valores para todo el proyecto.
Creación de una función que hace referencia a un paquete de códigos en Container Registry con la consola
Crea una función que utilice un paquete de código ya existente mediante la consola de Code Engine.
Code Engine puede extraer automáticamente paquetes de código de Container Registry.
- Abra la consola de Code Engine.
- Selecciona « Empezar a crear ».
- Seleccione un proyecto de la lista de proyectos disponibles. También puede crear uno nuevo. Debe seleccionar un proyecto para crear una función.
- Selecciona « Función ».
- Introduce un nombre para la función; por ejemplo, «
myfunction». Utiliza un nombre para tu función que sea único dentro del proyecto. - Seleccione una Imagen de tiempo de ejecución para el código de función. Para obtener más información, consulte Tiempos de ejecución.
- Seleccione Utilizar un paquete de códigos existente.
- Especifique la ubicación del paquete de códigos en el formato
registry/namespace/repository:tag. - Si el paquete de códigos está en la cuenta o en un registro público, no es necesario que especifique un secreto de registro. Si el paquete de códigos está en un registro privado, debe añadir el secreto de registro. Para obtener ayuda adicional, pulse Ayuda para especificar el paquete de códigos. Para obtener más información, consulte Acceso a registros de contenedores.
- Especifique la información de recursos, incluidas las combinaciones de CPU y memoria y Retardo de reducción de escala.
- Opcionalmente, especifique un dominio personalizado o variables de entorno.
- Pulse Crear.
- Una vez que el estado de la función pase a «Listo», podrás probarla. Pulse Probar función y, a continuación, pulse Enviar solicitud. Para abrir la función en una página web, haz clic en «Función» URL.
Despliegue de una función con un paquete de código existente con la CLI
Crea una función que utilice un paquete de código almacenado en IBM Cloud® Container Registry mediante la CLI con el ibmcloud ce fn create comando. Para obtener una lista completa de opciones, consulta el ibmcloud ce fn create comando.
Antes de empezar
- Configure su entorno de CLI de Code Engine.
- Cree y trabaje con un proyecto.
- Antes de poder trabajar con una función de « Code Engine » que haga referencia a un paquete de código en Container Registry, primero debes añadir acceso al registro para que Code Engine pueda recuperar el paquete de código cuando se cree la función. Para obtener información sobre los permisos necesarios para acceder a los registros, consulte Configuración de autorizaciones para registros de imágenes.
Despliegue de una función desde un registro público con la CLI
Si el paquete de código existente está en la cuenta o en un registro público, puede utilizar el mandato ibmcloud ce fn create.
Por ejemplo, ejecute el mandato siguiente para extraer un paquete de código existente del registro público y crear una función.
ibmcloud ce fn create --name myhellofun --code-bundle icr.io/codeengine/samples/function-nodejs-codebundle --runtime nodejs
Ejecuta el fn get comando para localizar el archivo « URL ». A continuación, puedes utilizar el comando « curl » para llamar a ese « URL ».
Salida de ejemplo del paquete de código existente.
<html><body><h3>Hello, Functions on CodeEngine!</h3></body></html>
Despliegue de una función desde un registro privado con la CLI
Para acceder a un paquete de código existente desde un registro privado, debe configurar el acceso al registro, crear un secreto de registro y, a continuación, proporcionar dicho secreto al ejecutar el mandato ibmcloud ce fn create.
-
Para añadir acceso a Container Registry, cree una clave de API de IAM. Para crear una clave de API de IBM Cloud IAM con la CLI, ejecute el mandato
iam api-key-create. Por ejemplo, para crear una clave API llamada «cliapikey» con la descripción «My CLI API key» y guardarla en un archivo llamado «key_file», ejecuta el siguiente comando :ibmcloud iam api-key-create cliapikey -d "My CLI API key" --file key_fileSi elige no guardar la clave en un archivo, debe registrar la clave de API que se visualiza durante la creación. No la podrá recuperarla más adelante.
-
Después de crear la clave de API, cree un secreto de registro en Code Engine. Para crear un secreto de registro, utilice el mandato
ibmcloud ce secret create --format registry. Por ejemplo, el siguiente comando crea una entrada en el Registro para una instancia de Container Registry denominadamyregistry. Fíjese que aunque se hayan especificado las opciones--servery--usernameen el mandato de ejemplo, el valor predeterminado de la opción--serveresus.icr.ioy la opción--usernametoma como valor predeterminadoiamapikeycuando el servidor esus.icr.io.ibmcloud ce secret create --format registry --name myregistry --server us.icr.io --username iamapikey --password APIKEYSalida de ejemplo
Creating registry secret 'myregistry'... OK -
Cree la función y haga referencia a un paquete de códigos en un registro privado en Container Registry. Por ejemplo, utiliza el
ibmcloud ce fn createcomando crear la funciónmyhellofun, que hace referencia aicr.io/codeengine/samples/function-nodejs-codebundleutilizando la información de acceso demyregistry.ibmcloud ce fn create --name myhellofun --code-bundle icr.io/NAMESPACE/REGISTRY:TAG --registry-secret myregistryEl formato del nombre del paquete de código para esta función es
REGISTRY/NAMESPACE/REGISTRY:TAG, dondeREGISTRYyTAGson opcionales. Si no se especificaREGISTRY, el valor por defecto esicr.io. Si no se especificaTAG, el valor predeterminado eslatest. -
Una vez creada la función, puede invocarla. Para averiguar el « URL » de tu función, ejecuta el comando «
ibmcloud ce fn get» que se proporciona. A continuación, puedes utilizar el comando «curl» para llamar a ese « URL ».
Próximos pasos
-
Una vez creada la función, puedes acceder a ella haciendo clic en «Probar función» en la consola o buscando la URL URL correspondiente a tu función mediante el
function getcomando. -
Puede crear una correlación de dominios personalizada y asignarla a la función.
-
Después de crear y desplegar la función, puede actualizar la función para que se ajuste a sus necesidades desde la consola o utilizando el mandato
ibmcloud ce function update. Si quieres actualizar tu código fuente para utilizarlo con tu función, debes especificar la opción «--build-source» en elfunction updatecomando.
Una vez creada la función, puedes actualizarla, así como el código al que hace referencia, mediante cualquiera de las siguientes formas, independientemente de cómo la hayas creado o de cómo la hayas actualizado anteriormente:
-
Si tiene un paquete de código existente, solo debe proporcionar una referencia a la imagen, que apunta a la ubicación del registro de contenedor al desplegar la app. Para obtener más información, consulte Creación de cargas de trabajo de función a partir de paquetes de código existentes.
Si ha creado la función utilizando el mandato
function createy ha especificado la opción--build-sourcepara crear el paquete de códigos a partir del origen local o de repositorio, y desea cambiar la función para que apunte a un paquete de códigos diferente, primero debe eliminar la asociación de la compilación de la función. Por ejemplo, ejecuteibmcloud ce function update -n FUN_NAME --build-clear. Después de eliminar la asociación de la compilación de la función, puede actualizar la función para que haga referencia a una imagen diferente. -
Si empiezas con código fuente que se encuentra en un repositorio de Git, puedes optar por dejar que Code Engine compile el paquete de código a partir de tu código fuente y cree tu función en una sola operación. En este caso, Code Engine sube tu paquete de código a IBM Cloud® Container Registry. Para obtener más información, consulte Creación de la función a partir del código fuente del repositorio.
-
Si está empezando con código fuente que reside en una estación de trabajo local, puede elegir Code Engine para crear el paquete de código a partir del origen y crear la función con un único mandato de CLI. En este escenario, Code Engine carga el código fuente y el paquete de código en IBM Cloud® Container Registry.
Por ejemplo, podrías optar por que Code Engine compile tu código fuente local mientras sigues desarrollando el código para la función. A continuación, después de que el paquete de códigos haya madurado, puede actualizar la función para que haga referencia al paquete de códigos específico que desee. Puede repetir este proceso según sea necesario.
¿Desea ver más ejemplos de código? Echa un vistazo a Ejemplos para el repositorio « IBM Cloud Code Engine GitHub ».