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.