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
-
Você deve ter um pacote configurável de códigos no IBM Cloud® Container Registry. Para obter mais informações, consulte Introdução ao Container Registry. Ou, é possível construir uma imagem por meio da origem do repositório ou da origem do local.
-
Verifique se é possível acessar o registro. Consulte Configurando autoridades para registros de contêiner.
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.
- Abra o console do Code Engine
- Selecione “Começar a criar ”.
- 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
- Selecione “Função ”.
- Digite um nome para a função; por exemplo,
myfunction. Use um nome para sua função que seja exclusivo dentro do projeto. - 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
- Selecione para Usar um pacote configurável de códigos existente.
- Especifique o local de seu pacote configurável de códigos no formato
registry/namespace/repository:tag - 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.
- Especifique suas informações de recurso, incluindo combinações de CPU e memória e Atraso de redução de capacidade
- Opcionalmente, especifique um domínio customizado ou variáveis de ambiente
- Clique em Criar.
- 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
- Configure o seu ambiente da CLI do Code Engine.
- Criar e trabalhar com um projeto.
- Antes de poder trabalhar com uma função do Code Engine que faça referência a um pacote de código em Container Registry, é necessário primeiro adicionar acesso ao registro para que Code Engine possa baixar o pacote de código quando a função for criada. Para obter informações sobre as permissões necessárias para acessar registros, consulte Configurando autoridades para registros de imagens.
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..
-
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 chamadacliapikeycom a descriçãoMy CLI API keye salvá-la em um arquivo chamadokey_file, execute o seguinte comando:ibmcloud iam api-key-create cliapikey -d "My CLI API key" --file key_fileSe 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.
-
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 registryPor exemplo, o comando a seguir cria um acesso no Registro para uma instância do Container Registry chamadamyregistry. Observe que mesmo que as opções--servere--usernamesejam especificadas no comando de exemplo, o valor padrão da opção--serverseráus.icr.ioe a opção--usernameserá padronizada comoiamapikeyquando o servidor forus.icr.io.ibmcloud ce secret create --format registry --name myregistry --server us.icr.io --username iamapikey --password APIKEYSaída de exemplo
Creating registry secret 'myregistry'... OK -
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 createcomando para criar a funçãomyhellofun, que faz referência aoicr.io/codeengine/samples/function-nodejs-codebundleutilizando as informações de acessomyregistry.ibmcloud ce fn create --name myhellofun --code-bundle icr.io/NAMESPACE/REGISTRY:TAG --registry-secret myregistryO formato do nome do pacote de código para esta função é
REGISTRY/NAMESPACE/REGISTRY:TAG, em queREGISTRYeTAGsão opcionais. SeREGISTRYnão for especificado, o padrão éicr.io. SeTAGnão for especificado, o padrão serálatest. -
Depois que sua função é criada, é possível chamá-la, Para descobrir o URL da sua função, execute o comando
ibmcloud ce fn getfornecido. Você pode então usar o comandocurlpara chamar esseURL.
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 getcomando. -
É 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-sourcenofunction updatecomando.
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 createe especificou a opção--build-sourcepara 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, executeibmcloud 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 Enginepara 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.