BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Google lança Knative: Framework Kubernetes para Build, Deploy e Gerenciar de Serverless Workloads

Google lança Knative: Framework Kubernetes para Build, Deploy e Gerenciar de Serverless Workloads

No Google Cloud Next 2018 o Knative foi anunciado como "uma plataforma baseada em Kubernetes para build, deploy e gerenciamento de serverless workloads modernos". O framework de código aberto busca codificar as melhores práticas de build, serving requests, e eventos. O Knative foi desenvolvido pelo Google em parceria com a Pivotal, a IBM, a Red Hat e a SAP.

O Knative (pronunciado kei-nei-tiv) disponibiliza um conjunto de componentes middleware que são "essenciais para construir aplicações modernas, focadas no código fonte, e baseadas em containers" que podem rodar em premissas, na nuvem ou em um data center de terceiros. O framework é o mesmo conjunto de componentes de código aberto que advém da mesma tecnologia utilizada no novo GKE serverless add-on.

De acordo com o post "Bringing the best of serverless to you" do blog Google Cloud Platform, o Knative foca nas tarefas comuns de construção e execução de aplicações em plataformas cloud native, como orquestrar builds de código-fonte-para-container, vincular serviços a ecossistemas de eventos, roteamento e gerenciamento de tráfego durante o deploy, e auto-escalabilidade de workloads. O framework disponibiliza um "suporte de linguagem familiar e idiomático, além de padrões necessários para fazer deploy de qualquer workload, seja uma aplicação tradicional, uma função, ou um container".

O Knative foi construído em cima do Kubernetes e do Istio, uma plataforma aberta para conectar e proteger microservices (efetivamente um plano de controle de service mesh para Envoy proxy), e foi desenhado para contabilizar personas interagindo com o framework, incluindo desenvolvedores, operadores e provedores de plataforma.

Knative personas
Pessoas envolvidas com o Knative (imagem retirada do Knative GitHub repo)

 

O Knative tem como objetivo disponibilizar implementações reutilizáveis de "padrões e melhores práticas de codificação", os seguintes componentes estão disponíveis:

  • Build - Orquestração de builds de fontes-para-container
  • Eventing - Gerenciamento e entrega de eventos
  • Serving - Computação request-driven que pode escalar para zero

O componente de build do Knative é uma extensão do Kubernetes e utiliza primitivas existentes para permitir a execução de builds de container no cluster, a partir do código fonte (baseado no Kaniko, lançado anteriormente). O objetivo é utilizar os recursos nativos do Kubernetes para obter código fonte de um repositório, fazer o build dentro de uma imagem de container, e então rodar esta imagem. Porém, a documentação diz que o usuário final do framework ainda é responsável por desenvolver os componentes correspondentes que executam a maioria destas funções.

Até o momento, um build de Knative não possui uma solução CI/CD completa, mas por outro lado possui um building block de baixo nível que foi desenhado para permitir integração e utilização em sistemas maiores.

O sistema de eventos foi desenhado para resolver uma série de necessidades comuns do desenvolvimento de software cloud native: os serviços são fracamente pareados durante o desenvolvimento e seus deploys são feitos de forma independente; um produtor pode gerar eventos antes que haja um consumidor ouvindo, e um consumidor pode expressar interesse em um evento ou classe de eventos que ainda não está sendo produzida; e serviços podem ser conectados para criar novas aplicações sem modificar o produtor ou o consumidor, com a habilidade de selecionar um subconjunto específico de eventos de um produtor específico.

A documentação mostra que estes objetivos de design são consistentes com os objetivos de design do CloudEvents, uma especificação comum para interoperabilidade cross-service que está sendo desenvolvida pelo CNCF Serverless WG. A documentação dentro do repositório de Eventing deixa claro que ainda é um trabalho em andamento, e que existe uma lista de problemas conhecidos.

A documentação do Knative Serving mostra que esta parte do framework foi feita sobre o Kubernetes e Istio para suportar deploy e disponibilização de aplicações e funções serverless. O objetivo é prover primitivas middleware que permitem: o deploy rápido de containers serverless; scaling automático "up and down to zero"; roteamento e programação de redes para componentes Istio; e snapshots point-in-time de código e configurações que foram utilizadas durante o deploy.

Joe Beda, fundador e CTO na Heptio, escreveu no twitter os potenciais beneficios do componente de serving:

Uma das partes mais interessantes do KNative é o "scale to zero". Isto é feito roteando as requisições para um "atuador" que guarda requests, escala o backend e então prossegue. Eu estava esperando que alguém construísse isto.

A thread do twitter continua com sua observação de que o componente de serving está manipulando regras do Istio diretamente, e que ter múltiplos "donos" dessas regras é "interessante e leva o Istio a um detalhe de implementação, de certa forma." Outros, incluíndo Gabe Monroy, gerente de projetos líder de Containers na Azure, foi cético sobre a integração do Istio no framework:

Minha maior preocupação sobre o Knative é a dependência do Istio. Isso realmente era necessário?

Oren Teich, diretor de gerenciamento de produtos no Google, trouxe mais contexto sobre o release do Knative em uma série de tweets. Ele começou dizendo que o time do Google vê o serverless como o início de duas mudanças chave em desenvolvimento de software: o modelo operacional, e o modelo de programação. O modelo operacional de serverless é sobre pagar pelo que se usa, escalabilidade, atualizações de segurança e nenhuma manutenção. O modelo de programação serverless é sobre deploys source-driven, microservices, primitivas reutilizáveis, e modelos reativos/dirigido a eventos. Teich continuou sobre o papel que o Knative deve ter:

O Knative é infraestrutura para permitir que os modelos de programação sejam executados em qualquer modelo operacional. Claro, agora você está gerenciando o K8S (ou GKE ou qualquer outro), porém você pode programar no mesmo modelo.

Como você pode ver na base de código (http://github.com/knative ) o Knative está só começando. As três primitivas de hoje permitem vincular fonte -> container, execução do container, e evento -> execução.

Ele também disse que apesar de não haver uma boa experiência de usuário no momento, o Knative é "a infraestrutura para construir produtos serverless incríveis, e garantir a portabilidade do modelo de programação entre eles", e que o Google está investindo nisso.

O time da Pivotal também é um grande contribuidor do Knative, e a postagem em seu blog, "Knative: Powerful Building Blocks for a Portable Function Platform", descreve como seu framework serverless existente Project Riff está sendo re-arquitetado para aproveitar os recursos do Knative:

Nosso time dedicou uma quantidade de empregados em tempo integral para melhorar o projeto Serving dentro do Knative, o qual executa os workloads dinâmicos. Nós utilizamos o modelo de eventos do Project Riff e ajudamos a implantá-lo no Knative também. E nós contribuímos para o projeto Build, incluindo a adição de suporte para Cloud Foundry Buildpack. O primeiro pull-request que não era do Google veio de nós, e nosso investimento transmite nossa crença que esta iniciativa é importante.

Informações adicionais sobre Knative podem ser encontradas em seu repositório do GitHub, e também pode se encontrar mais informações no envolvimento com com a comunidade.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT