Implante o Lambda no DigitalOcean

Bin Zhao Blocked Unblock Seguir Seguindo 8 de janeiro

Neste artigo, gostaria de mostrar como implantar o Lambda no DigtialOcean e persistir o código de função no DigitalOcean Spaces, aproveitando Refunc e Kubernetes .

Refunc é uma plataforma sem servidor nativa de kubernetes de código aberto. Ao contrário de outras plataformas semelhantes, o Refunc não tenta criar algo novo, ele permite que o desenvolvedor continue usando ferramentas familiares para funções sem servidor do DevOps (atualmente, a API do AWS Lambda é suportada), evitando o bloqueio do fornecedor.

Já se sabe há algum tempo que a DigitalOcean é amigável e simples para pequenas empresas. Recentemente, ele lançou o Kubernetes gerenciado para o público, para que possamos usar o Kubernetes para construir e implementar aplicativos nativos da nuvem e adotar a arquitetura de microsserviços em Gotas de água muito mais fácil. Com o Refunc , podemos implementar as funções do Lambda nativamente sozinhas com outras cargas de trabalho que maximizam o uso do cluster.

Criar Cluster

Em primeiro lugar, precisamos criar um cluster do kubernetes e adicionar um nó de trabalho a ele. É muito simples criar um novo cluster no DigitalOcean . Tudo que você precisa fazer é apenas 4 cliques.

Durante o processo de construção, podemos seguir o tutorial na página de espera para configurar nosso acesso ao cluster. O importante é baixar e salvar o “Config File”:

Depois de um minuto ou menos, devemos ver nossas gotículas verdes:

Vamos usar o kubectl para verificar se nosso cluster está pronto:

Implantar Refunc

O Refunc pode ser facilmente implementado usando os seguintes comandos:

isso criará um namespace de refunc-play e instalará os componentes necessários sem estado nele com o RBAC ativado (por padrão).

Acesso Refunc

O Refunc usa um gateway compatível com AWS API para fornecer serviços do Lambda e S3, o que torna possível usar o AWS CLI para gerenciar funções localmente.

Antes de iniciar, precisamos encaminhar o gateway para seu host local, digite o seguinte comando em um terminal separado:

 Implantação do port-forward do kubectl / aws-api-gw 9000: 80 -n refunc-play 

Lançar uma função lambda

podemos seguir qualquer tutorial ou documento oficial para construir um código de função, para simplificar usamos um código pré-empacotado de lambda-python3.7-example .

Baixe a função pré-construída por conveniência:

 cd / tmp 
wget https://github.com/refunc/lambda-python3.7-example/releases/download/v0.0.1/lambda.zip

Criar função

 aws --endpoint-url = http: //127.0.0.1: 9000  
lambda create-function --function-name localtest
--handler lambda_function.lambda_handler
--zip-file fileb: ///tmp/lambda.zip
--runtime python3.7
--role arn: aws: iam :: XXXXXXXXXXXXX: papel / sua_lambda_execução_role

Invocar Função

 aws --endpoint-url = http: //127.0.0.1: 9000  
lambda invoke --function-name localtest /tmp/output.json && cat /tmp/output.json

Código de Função Persistente

Como mencionado anteriormente, o refunc play gera uma implementação stateless do Refunc , quando a atualização do código de funções será perdida.

Na verdade, o Refunc depende do Minio para fornecer um serviço compatível com S3, o DigitalOcean Spaces também possui uma API do S3, portanto, podemos simplesmente corrigir a configuração para persistir o código de função.

Na página Espaços , criamos um novo espaço com um nome exclusivo, o space em DO é idêntico ao Bucket em outras nuvens.

Depois que o espaço é criado, podemos encontrar o endpoint na página de configuração do espaço

Gere access_key e secrete_key na página da API

Crie um recurso secret usando o kubectl , substituindo key e secret por valor na página da API

 kubectl cria espaço genérico secreto -n refunc-play  
--from-literal = tecla de acesso = <key>
--from-literal = chave secreta = <segredo>

Regenere os modelos do k8s com o nome do space e o prefixo da folder e o space-endpoint :

Repita o processo da função de criação mencionado acima e verifique através da Página do Explorador Espacial , o código de função deve ser colocado em <folder-prefix>/<namespace>/<function-name>/blobs

Conclusão

Startups são sempre batalhas sobre tempo e dinheiro. No começo, queremos ter recursos de nuvem de baixo custo e rápido desenvolvimento. O Kubernetes da DigitalOcean é um bom ponto para começar a aproveitar as tecnologias nativas avançadas da nuvem. Com o Refunc , os desenvolvedores podem gerenciar as funções do Lambda no Kubernetes. À medida que as empresas continuam crescendo, as equipes de TI podem transferir ou dimensionar os aplicativos Lambda para infraestruturas de nuvem mais sofisticadas sem problemas.