Criando cargas de trabalho de função a partir de pacotes configuráveis de códigos existentes

Crie sua função “ Code Engine ” com um pacote de código em IBM Cloud® Container Registry. Você pode criar uma função a partir do console ou usando a CLI.

Um pacote configurável de código é uma coleção de arquivos que representa seu código de função. Este pacote configurável de códigos é injetado no contêiner de tempo de execução Seu pacote configurável de códigos é criado pelo Code Engine e armazenado no registro do contêiner ou sequencial com a função. Um pacote configurável de código não é uma imagem de contêiner padrão do Open Container Initiative (OCI)

Não é possível baixar pacotes de código de um local diferente de Container Registry.

Antes de Iniciar

Gostaria de configurar seu projeto de forma que todos os usuários possam armazenar e acessar imagens no Container Registry sem precisar criar manualmente segredos de registro? Com permissões suficientes, é possível configurar esse acesso de registro padrão por local (região). Se você não tiver permissões suficientes para executar essas ações, poderá usar essa página para ajudar a entender as permissões necessárias. Consulte Definindo as configurações do projeto.

Criando uma função que referencia um pacote configurável de códigos no Container Registry com o console

Crie uma função que utilize um pacote de código existente por meio do console do Code Engine.

Code Engine pode extrair automaticamente pacotes configuráveis de código do Container Registry.

  1. Abra o console do Code Engine
  2. Selecione “Começar a criar ”.
  3. Selecione um projeto na lista de projetos disponíveis. Também é possível criar um novo. Deve-se selecionar um projeto para criar uma função
  4. Selecione “Função ”.
  5. Digite um nome para a função; por exemplo, myfunction. Use um nome para sua função que seja exclusivo dentro do projeto.
  6. Selecione uma Imagem de tempo de execução para seu código de função. Para obter mais informações, consulte Tempos de execução
  7. Selecione para Usar um pacote configurável de códigos existente.
  8. Especifique o local de seu pacote configurável de códigos no formato registry/namespace/repository:tag
  9. Se o pacote configurável de código estiver em sua conta ou em um registro público, não será necessário especificar um segredo de registro.. Se o pacote configurável de códigos estiver em um registro privado, deve-se incluir o segredo de registro Para obter ajuda adicional, clique em Ajude-me a especificar o pacote configurável de código Para obter mais informações, consulte Acessando registros de contêiner.
  10. Especifique suas informações de recurso, incluindo combinações de CPU e memória e Atraso de redução de capacidade
  11. Opcionalmente, especifique um domínio customizado ou variáveis de ambiente
  12. Clique em Criar.
  13. Depois que o status da função mudar para “Pronto”, você poderá testá-la. Clique em Função de teste, em seguida, clique em Enviar solicitação. Para abrir a função em uma página da web, clique em Função URL.

Implementando uma função com um pacote configurável de código existente com a CLI

Crie uma função que utilize um pacote de código armazenado em IBM Cloud® Container Registry por meio da CLI, usando o ibmcloud ce fn create. Para obter uma lista completa das opções, consulte o ibmcloud ce fn create comando.

Antes de Iniciar

Implementando uma função por meio de um registro público com a CLI

Se o pacote configurável de código existente estiver em sua conta ou em um registro público, será possível usar o comando ibmcloud ce fn create

Por exemplo, execute o comando a seguir para extrair um pacote configurável de códigos existente do registro público e criar uma função...

ibmcloud ce fn create --name myhellofun --code-bundle icr.io/codeengine/samples/function-nodejs-codebundle --runtime nodejs

Execute o fn get para localizar o arquivo URL. Você pode então usar o comando curl para chamar esse URL.

Saída de exemplo do pacote configurável de códigos existente.

<html><body><h3>Hello, Functions on CodeEngine!</h3></body></html>

Implementando uma função por meio de um registro privado com a CLI

Para acessar um pacote configurável de código existente a partir de um registro privado, deve-se configurar o acesso ao registro, criar um segredo de registro e, em seguida, fornecer esse segredo ao executar o comando ibmcloud ce fn create..

  1. Para incluir acesso ao Container Registry, crie uma chave de API do IAM. Para criar uma chave de API do IBM Cloud IAM com a CLI, execute o comando iam api-key-create. Por exemplo, para criar uma chave de API chamada cliapikey com a descrição My CLI API key e salvá-la em um arquivo chamado key_file, execute o seguinte comando:

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

    Se você optar por não salvar sua chave em um arquivo, deverá registrar a chave de API que é exibida ao criá-la. Não será possível recuperá-la mais tarde.

  2. Depois de criar sua chave de API, crie um segredo de registro para Code Engine. Para criar um segredo de registro, use o comando ibmcloud ce secret create --format registry Por exemplo, o comando a seguir cria um acesso no Registro para uma instância do Container Registry chamada myregistry. Observe que mesmo que as opções --server e --username sejam especificadas no comando de exemplo, o valor padrão da opção --server será us.icr.io e a opção --username será padronizada como iamapikey quando o servidor for us.icr.io.

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

    Saída de exemplo

    Creating registry secret 'myregistry'...
    OK
    
  3. Crie sua função e faça referência a um pacote configurável de código em um registro privado no Container Registry. Por exemplo, use o ibmcloud ce fn create comando para criar a função myhellofun, que faz referência ao icr.io/codeengine/samples/function-nodejs-codebundle utilizando as informações de acesso myregistry.

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

    O formato do nome do pacote de código para esta função é REGISTRY/NAMESPACE/REGISTRY:TAG, em que REGISTRY e TAG são opcionais. Se REGISTRY não for especificado, o padrão é icr.io. Se TAG não for especificado, o padrão será latest.

  4. Depois que sua função é criada, é possível chamá-la, Para descobrir o URL da sua função, execute o comando ibmcloud ce fn get fornecido. Você pode então usar o comando curl para chamar esse URL.

Próximas etapas

  • Depois que sua função for criada, você poderá acessá-la clicando em “Testar função” no console ou localizando o endereço URL da sua função com o function get comando.

  • É possível criar um mapeamento de domínio customizado e designá-lo à sua função.

  • Após sua função ser criada e implementada, é possível atualizar a função para atender às suas necessidades por meio do console ou usando o comando ibmcloud ce function update. Se você quiser atualizar seu código-fonte para usá-lo com sua função, é necessário especificar a opção --build-source no function update comando.

Depois que sua função for criada, você poderá atualizá-la e o código ao qual ela faz referência usando qualquer uma das seguintes formas, independentemente de como você a criou ou atualizou anteriormente:

  • Se você tiver um pacote configurável de códigos existente, será necessário fornecer apenas uma referência à imagem, que aponta para o local de seu registro de contêiner ao implementar seu app. Para obter mais informações, consulte Criando cargas de trabalho de função de pacotes configuráveis de código existentes.

    Se você criou sua função usando o comando function create e especificou a opção --build-source para construir o pacote configurável de códigos a partir da origem local ou do repositório e desejar alterar sua função para apontar para um pacote configurável de código diferente, primeiro você deve remover a associação da construção de sua função. Por exemplo, execute ibmcloud ce function update -n FUN_NAME --build-clear.. Após remover a associação da construção de sua função, é possível atualizar a função para fazer referência a uma imagem diferente.

  • Se você estiver começando com um código-fonte que está em um repositório do Git, pode optar por deixar que o Code Engine compile o pacote de código a partir do seu código-fonte e crie sua função em uma única operação. Nesse cenário, o Code Engine envia seu pacote de código para IBM Cloud® Container Registry. Para saber mais, consulte Criando sua função a partir do código-fonte do repositório.

  • Se você estiver começando com o código de origem que reside em uma estação de trabalho local, será possível escolher Code Engine para construir o pacote configurável de código a partir de sua origem e criar sua função com um comando da CLI único. Neste cenário, o Code Engine faz upload de seu código de origem e pacote configurável de código para IBM Cloud® Container Registry.

    Por exemplo, você pode optar por usar o Code Engine para compilar seu código-fonte local enquanto avança no desenvolvimento desse código para a função. Em seguida, após o pacote configurável de código ser amadurecido, é possível atualizar sua função para referenciar o pacote configurável de código específico que você deseja. É possível repetir esse processo conforme necessário.

Procurando mais exemplos de código? Confira os exemplos no repositório “ IBM Cloud Code Engine ” GitHub.