Ao atualizar uma função no Function Compute, o novo código e as novas configurações substituem imediatamente a versão LATEST, e todas as invocações subsequentes passam a usar essa versão atualizada. Liberar alterações diretamente para todo o tráfego representa um risco em ambientes de produção.
O plugin @serverless-cd/fc-canary, fornecido pela comunidade, permite executar uma liberação canário. Com ele, você direciona apenas uma porcentagem específica do tráfego para a nova versão antes de promovê-la totalmente.
Como funciona
O Function Compute utiliza aliases para separar implantações de liberações. Em produção, você aponta um alias para uma versão publicada específica. Ao implantar um novo código, a versão LATEST é atualizada, mas o alias continua apontando para a versão estável anterior. O tráfego segue fluindo para a versão antiga até que você atualize explicitamente o alias.
O plugin fc-canary automatiza esse processo:
Publica uma nova versão com base no código e nas configurações atuais da versão
LATEST.Atualiza o alias para dividir o tráfego entre a versão estável anterior e a recém-publicada. Caso o alias ainda não exista, o plugin o cria automaticamente.
Ao direcionar apenas uma porcentagem definida das invocações para a nova versão, é possível monitorar erros ou regressões de desempenho antes de concluir a liberação.
Pré-requisitos
Instale o Serverless Devs e configure suas credenciais do Alibaba Cloud.
Implante uma função no Function Compute.
Instale o plugin
@serverless-cd/fc-canaryna configuração do seu pipeline.
Parâmetros
A tabela a seguir descreve os parâmetros compatíveis com o plugin fc-canary.
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
|
String |
Sim (FC 2.0) |
Nome do serviço do Function Compute 2.0 que contém a função de destino. |
|
|
String |
Sim (FC 3.0) |
Nome da função. Usado no Function Compute 3.0, que remove o agrupamento no nível de serviço. |
|
|
String |
Sim |
Nome do alias a ser criado ou atualizado. Por exemplo, |
|
|
String |
Sim |
ID da região onde a função está implantada. Por exemplo, |
|
|
Number |
Sim |
Porcentagem de tráfego a ser roteada para a nova versão. Valores válidos: 0 a 100. |
Uso
Function Compute 2.0
No Function Compute 2.0, os aliases são configurados no nível de serviço. O exemplo abaixo atualiza o alias de um serviço e roteia 50% do tráfego para a nova versão:
- plugin: @serverless-cd/fc-canary
inputs:
serviceName: web-framework-kzbp
aliasName: prod
regionId: cn-hangzhou
canaryPercent: 50
Function Compute 3.0
No Function Compute 3.0, o agrupamento no nível de serviço foi removido. Use o parâmetro functionName em vez de serviceName:
- plugin: @serverless-cd/fc-canary
inputs:
functionName: my-function
aliasName: prod
regionId: cn-hangzhou
canaryPercent: 10
Concluir a liberação
Após verificar que a nova versão funciona conforme o esperado, atualize canaryPercent para 100 ou aponte o alias inteiramente para a nova versão para concluir a liberação.