Um guia rápido para o Knative Serverless Framework para iniciantes

Os frameworks sem servidor estão em demanda nos últimos anos e têm testemunhado uma crescente adoção entre os desenvolvedores.

No entanto, os aplicativos baseados em contêiner já são populares, assim como o Kubernetes entre as empresas.

O Kubernetes, sem dúvida, é uma ótima ferramenta com bom potencial. Seu ecossistema também está crescendo com uma variedade de novas ferramentas e as mais recentes tecnologias, como o Knative, que tem o poder de tornar o Kubernetes ainda melhor.

O Knative foi introduzido para superar situações que levam a falhas e estabelecer um padrão básico para plataformas de nuvem e orquestração nativa de nuvem.

Em outras palavras, a estrutura sem servidor Knative pode atender às necessidades de uma empresa muito melhor do que outras implantações sem servidor baseadas em nuvem.

Neste guia, falarei sobre o Knative, seus benefícios, casos de uso, procedimento de instalação, procedimento de trabalho e muito mais.

Aqui vamos nós!

O que é Knative?

Knative é um framework sem servidor baseado em Kubernetes que foi desenvolvido pela primeira vez pelo Google. Ele carrega e executa funções sem servidor com base nos requisitos de uma empresa, minimizando assim o desperdício. É um projeto de código aberto que adiciona componentes para implantar, executar e gerenciar aplicativos sem servidor no Kubernetes.

O objetivo principal da estrutura serverless Knative é gerenciar os padrões para orquestração entre plataformas. Isso é implementado integrando a função de criação de contêiner, dimensionamento automático, modelos de eventos e gerenciamento de carga de trabalho.

Anteriormente, havia uma variedade de soluções de código aberto além do Knative. Cada solução tem sua forma de implantação, o que pode causar fragmentação do mercado, pois faltam práticas padronizadas. Isso significa que a escolha de um provedor específico é necessária se você deseja um recurso específico do sistema.

No entanto, os problemas de migração começaram a aparecer. E para evitar tais problemas, o framework serverless Knative foi introduzido. Portanto, se você se esforçar para incorporar qualquer tarefa, o Knative pode fazê-lo com eficiência no pipeline baseado em Kubernetes.

Knative tem três peças:

  • Knative Build: Cria imagens de contêiner e as disponibiliza a partir do código-fonte.
  • Knative Serving: ele usa Istio e Kubernetes para conectar e implantar essas imagens de contêiner por meio dos recursos de infraestrutura atribuídos.
  • Knative Eventing: Permite que os usuários definam os acionadores de eventos e permite que os usuários associem os acionadores de eventos a funções em contêiner.

Sempre que o Knative identifica um evento, ele define o processo associado para executá-lo sob demanda. Com o Knative, não há necessidade de alocar nós de contêiner, clusters e pods para trabalho, pois o Knative confirma recursos de hospedagem apenas quando um determinado processo é executado. Dessa forma, o Knative equilibra os benefícios sem servidor e de contêiner.

Conceitos Fundamentais do Knative

Vamos discutir os principais conceitos do Knative Serverless Framework e como eles se relacionam com as primitivas do Knative.

Construir

O Knative-building ajuda a utilizar e estender os primitivos existentes do Kubernetes, permitindo que você execute em compilações de contêiner desde a origem. Ele habilita o código fonte das dependências e repositório, construindo imagens de container e registrando-as.

Eventos

O evento ajuda você a criar uma melhor comunicação entre consumidores e produtores de eventos de acoplamento flexível para construir a arquitetura orientada a eventos. O Knative coloca esses eventos em uma fila que precisava ser executada automaticamente sem o script dos desenvolvedores.

  Um guia de introdução ao AWS Fargate

Posteriormente, esses eventos são entregues aos contêineres. Em seguida, ele envia feeds para os produtores de eventos para executar tarefas. Isso reduzirá a carga de trabalho do desenvolvedor na criação de código para estabelecimento de conexão.

Funções

Uma função é uma unidade de implantação independente e um serviço de serviço Knative, como um microsserviço. Seu código é escrito para executar uma única tarefa, como:

  • Processando um arquivo em um banco de dados
  • Salvando um usuário em um banco de dados
  • Executando um trabalho programado

A estrutura serverless Knative foi projetada para permitir que você desenvolva e implante funções de forma eficaz e gerencie-as.

Plug-ins

Estenda ou substitua facilmente a funcionalidade da estrutura sem servidor Knative usando plug-ins. Cada arquivo serverless.yml contém uma propriedade de plug-in que apresenta vários plug-ins.

Recursos

Os recursos são os componentes de infraestrutura sem servidor Knative que sua função usa, incluindo:

  • Origem do evento AWS SQS
  • Uma tarefa agendada (executada a cada 5 minutos, 10 minutos, etc.)
  • Uma fonte de eventos Kafka

E mais.

Serviços

Os serviços são como um projeto. Portanto, um serviço é a unidade de organização do framework sem servidor Knative. Embora você possa ter muitos serviços para um aplicativo, você pode pensar no serviço como um arquivo de projeto.

É onde você será capaz de definir as funções, eventos e recursos, tudo em um único arquivo intitulado serverless.yml, serverless.json ou serverless.js. Quando você implanta os serviços com a estrutura sem servidor, tudo no arquivo é implantado de uma só vez.

Servindo

O Knative-serving é construído no Istio e no Kubernetes que oferece suporte à implantação de aplicativos. Ele permite o desenvolvimento rápido de contêineres sem servidor, programação de rede e dimensionamento automático para componentes do Istio. O Knative-serving considera os contêineres como um serviço escalável que pode variar de uma instância a várias instâncias de contêiner.

Características do Knative

Vamos discutir alguns dos recursos do framework serverless Knative:

  • Knative é uma estrutura sem servidor baseada em Kubernetes que permite implantar serviços no Kubernetes.
  • Ele integra facilmente o Knative com o ambiente suportado
  • Os desenvolvedores podem usar diretamente a API do Kubernetes com a ajuda do Knative para implantar serviços sem servidor
  • Ele permite que os usuários acionem serviços sem servidor com a ajuda do sistema de eventos do Knative

Como o Knative funciona?

O framework serverless Knative funciona como um segmento de direcionamento de eventos e conecta o Istio e o Kubernetes. O Kubernetes funciona como orquestrador para microsserviços e contêineres. O Istio, por outro lado, é uma tecnologia de malha de código aberto que reúne vários componentes para interagir com o usuário e com eles mesmos.

O Knative oferece aos usuários vários componentes direcionados para realizar o trabalho básico do dia-a-dia. Esses componentes são usados ​​repetidamente em uma variedade de aplicações. Um desenvolvedor pode usar qualquer linguagem de programação. Portanto, você não precisa de conhecimento específico de idiomas, pois o Knative reconhece apenas imagens de contêiner.

Existem três componentes da estrutura serverless Knative que são as chaves para seu funcionamento.

Construindo Novos Contêineres

O componente de construção é responsável por construir novos contêineres. Ele pode converter códigos-fonte em um contêiner. O Knative pode ser configurado para atender às necessidades específicas de negócios.

Primeiro, o Knative extrai o código-fonte da biblioteca como o Github. Em seguida, as dependências subjacentes são adicionadas para que o código seja executado com eficiência. As imagens de contêiner são então construídas e colocadas em arquivos que a plataforma Kubernetes pode acessar.

  O que aparece em uma verificação de antecedentes?

O contêiner é disponibilizado para desenvolvedores usando Kubernetes e Knative. Assim, os contêineres são construídos desde que a origem do código seja conhecida.

Servindo ou executando a plataforma

O componente de serviço é responsável pelo funcionamento da plataforma. Envolve:

  • Configuração: A configuração é certa no gerenciamento de várias versões do serviço. Cada vez que há uma implantação do novo recurso de um contêiner, o Knative salva a versão existente e cria uma nova com as alterações e recursos mais recentes. Além disso, Knative define o estado de um serviço.
  • Escalonamento automático: para trabalhar melhor os contêineres sem servidor, você deve ser capaz de escalonar automaticamente os contêineres para cima ou para baixo. O Knative pode dimensionar automaticamente os serviços para muitos, se necessário.
  • Roteamento de serviço inteligente: é uma parte importante do mecanismo de trabalho do Knative. Ele permite que os desenvolvedores direcionem o fluxo e a quantidade de tráfego para diferentes versões existentes dos microsserviços. Ao introduzir novos recursos e estratégias de implantação azul-verde, o roteamento de serviço inteligente pode ser usado.

Ele permite que você exponha uma fração de usuários aos testes e versões recentes e roteie gradualmente um grande tráfego para a nova versão.

Eventos para definir funções

O componente de eventos do Knative é responsável por descrever a função do Knative. Permite definir a execução dos contêineres com base em eventos. Diferentes eventos acionam funções específicas de contêineres.

Os desenvolvedores podem definir os acionadores de eventos e os contêineres associados para permitir que o Knative faça seu trabalho. O Knative lida com a lista de eventos e entrega dos eventos.

Benefícios do Knative

O Knative fornece serviços como gerenciamento de rotas, liberação em fases e conexão de serviço. Possui uma vasta comunidade. Vamos discutir como a Knative influencia as empresas a adotarem essa tecnologia.

  • Diferente de outras soluções, o Knative possui eventos padrão e é compatível com a solução FaaS. Ele oferece uma estrutura padrão CloudEvent que ajuda a projetar a arquitetura sem servidor.
  • Embora o Knative não seja um PaaS, ele permite que você crie um PaaS sem servidor com a plataforma de orquestração sem servidor.
  • O Knative possui um design sem servidor completo e maduro.
  • Ele suporta multiplataforma e oferece um padrão universal entre provedores de nuvem para eliminar a chance de vincular fornecedores a uma solução específica.

  • O Knative fornece uma estrutura flexível.
  • Ele suporta liberações em fases proporcionais.
  • Você pode experimentar o ecossistema sem servidor em um ambiente em contêiner.
  • Knative remove a confiabilidade no gerenciamento e ferramentas.
  • Você pode migrar rapidamente para outros provedores de nuvem integrados ao Knative implementando o Kubernetes.
  • Ele oferece um modelo de computação orientado a solicitações.
  • Ele permite que você gerencie fluxos de trabalho como um serviço.
  • Com o Knative, você pode processar dados de IoT, executar verificações de acessibilidade e validar configurações de seus grupos de segurança.
  • Ele permite que os desenvolvedores se concentrem na codificação e criem código iterativo rapidamente.
  • Isso garante que os desenvolvedores incorporem novas versões.
  • O modelo baseado em eventos do Knative ajuda a implementar projetos, incluindo assinatura, conexão com o sistema externo e registro.

Desafios do Knative (e algumas soluções)

Desafios de eficiência

Um Knative Framework que oferece suporte a aplicativos adequados oferece melhor desempenho a um custo mínimo. No entanto, uma combinação inadequada de aplicativos pode resultar em custos mais altos e recursos de contêiner subutilizados. Isso pode levar a um desempenho ruim do aplicativo, que é o maior desafio da implantação sem servidor do Knative.

Assim, um pool de recursos mal dimensionado ou aplicativos errados podem destruir muitos benefícios do Knative.

Você pode superar esse desafio realizando testes para verificar as quantidades de recursos e a combinação de aplicativos no Knative. Meça as cargas de eventos dimensionando as cargas média e máxima para cada uma e estime o consumo total de recursos. Repita isso para vários aplicativos para criar e executar uma configuração de teste para validar as estimativas.

  (RESOLVIDO) Exportação de vídeo travada no aplicativo Microsoft Photos

Desafios Funcionais

Os desafios funcionais do Knative podem ser:

  • O Knative depende de funções que se encaixam em um modelo sem estado. Isso significa que nenhum dado está sendo armazenado no próprio componente. O desenvolvimento das funções não é uma fase difícil, mas requer uma pequena mudança na abordagem, o que significa que um único erro pode arruinar o desempenho do software.
  • Os dados de negócios consistem em transações de várias etapas e as funções sem estado mantêm o contexto em todas as etapas. O Knative não tem esse recurso como as ferramentas sem servidor de nuvem pública podem fazer.

O monitoramento regular e a correção de problemas podem ajudá-lo a manter seu desempenho em pontuações decentes.

Desafios operacionais

Em comparação com as ofertas sem servidor em uma nuvem pública, há um desafio de operações com o Knative. Os administradores não controlam os servidores subjacentes com a nuvem pública. Mas eles precisarão gerenciar servidores junto com Kubernetes, contêineres, Knative e o próprio Istio.

O Knative estende minimamente a complexidade de operações e desenvolvimento para as empresas que já se comprometeram com Kubernetes e contêineres. Aqueles comprometidos com service mesh e microsserviços acharão o Knative uma extensão natural.

Casos de uso do Knative

Para aplicativos que dão origem a um número variável de eventos que permanecem dentro ou acima dos limites estabelecidos no tempo, o Knative é o melhor para eles. Os casos de uso específicos da estrutura sem servidor Knative incluem:

A orientação do evento é essencial. Se as equipes de TI não conseguem imaginar um aplicativo como uma série de eventos em vez de transações, o Knative pode não ser uma boa escolha por motivos funcionais e de eficiência.

Pré-requisitos e instalação do Knative

Como vemos nas seções acima, o Knative é um conjunto de componentes como eventos e serviços executados em uma malha de serviço e cluster de orquestração de carga de trabalho. Existem utilitários de linha de comando que precisamos instalar para uma operação direta. Assim, precisamos de algumas dependências para garantir que possamos prosseguir com a instalação.

Pré-requisitos

Existem várias opções para instalar o Kubernetes. O Docker Desktop vem para habilitar um cluster Kubernetes fácil que serve a vários propósitos. A abordagem simples é usar o Kubernetes no Docker para executar o cluster do Kubernetes junto com os nós de contêiner do Docker. A maneira conveniente de trabalhar com o cluster é usar a ferramenta de linha de comando Knative.

O Knative CLI oferece uma interface fácil e rápida para criar seus recursos. Ele ajuda em tarefas complexas, como divisão de tráfego e dimensionamento automático. A maneira conveniente é baixar o binário compatível da página do GitHub.

Instalação

Uma vez que tenhamos todos os pré-requisitos, podemos prosseguir com a instalação dos componentes. Para o ambiente de desenvolvimento, existe um plugin de início rápido. O plug-in ajuda na instalação de um cluster Knative local usando o cliente Knative. Você pode baixar o plug-in de início rápido na página oficial de lançamento.

Conclusão: O Futuro do Knative

O Knative substituiu a computação sem servidor, fornecendo dimensionamento automático de aplicativos. Isso causa um impacto significativo no sistema interoperável e modular.

No futuro, espera-se que o Knative cubra as deficiências atuais e se torne uma das tecnologias mais eficientes para executar a arquitetura serverless.

A tecnologia Knative é mais influente para os desenvolvedores ao observar seus benefícios em relação às alternativas sem servidor. O Knative ajudará você a economizar muito tempo, substituindo a necessidade de criar e manter as extensões do Kubernetes. Os desenvolvedores estão muito felizes com a tecnologia Knative, pois é fácil de usar e uma ótima alternativa para soluções sem servidor.

Portanto, se você deseja maximizar o poder do ambiente Kubernetes em seus fluxos de trabalho na nuvem, adote a tecnologia Knative e testemunhe os benefícios por conta própria.