O que é Knative?

O que é Knative?

O Knative permite que cargas de trabalho serverless sejam executadas em clusters do Kubernetes. Ele torna a criação e a orquestração de contêineres com o Kubernetes mais rápidas e fáceis.

O Knative (pronuncia-se Kay-NAY-tive) é uma extensão da plataforma de orquestração de contêineres Kubernetes . Ele fornece ferramentas e utilitários que tornam a criação, implementação e gerenciamento de aplicações conteinerizadas no Kubernetes uma experiência mais simples e "nativa do Kubernetes" (daí o nome, "K" para "Kubernetes" + "native").

Como o Kubernetes, o Knative é um software de código aberto . Inicialmente, o Google o desenvolveu em colaboração com a IBM®, Pivotal, Red Hat®, SAP e quase 50 outras empresas. Atualmente, a Cloud Native Computing Foundation (CNCF) hospeda o projeto de código aberto Knative.

Vista aérea de rodovias

Fique por dentro da nuvem 


Receba o boletim informativo semanal do Think para ver orientações especializadas sobre a otimização das configurações multinuvem na era da IA.

Por que o Kubernetes precisa do Knative

O Kubernetes automatiza e agenda a implementação, o gerenciamento e o escalonamento de contêineres—componentes de aplicações leves e executáveis que combinam o código-fonte com todas as bibliotecas e dependências do sistema operacional (SO) necessárias para executar o código em qualquer ambiente.

Os contêineres permitem que os componentes de aplicações compartilhem os recursos de uma única instância de um sistema operacional, da mesma forma que as máquinas virtuais (VMs) permitem que as aplicações compartilhem os recursos de um único computador físico. Menores e mais eficientes em termos de recursos do que as VMs e mais adequados para os ciclos de liberação incrementais das metodologias de desenvolvimento ágil e DevOps, os contêineres se tornaram as unidades de computação de fato das modernas aplicações nativas da nuvem. Empresas que usam contêineres relatam outros benefícios, como melhoria na qualidade dos aplicativos, maiores níveis de inovação e muito mais:

À medida que o desenvolvimento nativo da nuvem se torna mais popular e os contêineres proliferam em uma organização, os recursos de orquestração de contêineres do Kubernetes, que incluem agendamento, balanceamento de carga, integridade e muito mais, facilitam muito o gerenciamento dessa proliferação. No entanto, o Kubernetes é uma ferramenta complexa que exige que os desenvolvedores executem ou modelem muitas tarefas repetitivas, como extrair o código-fonte da aplicação de repositórios, criar e provisionar uma imagem de contêiner em torno do código e configurar conexões de rede fora do Kubernetes usando diferentes ferramentas. A incorporação de contêineres gerenciados pelo Kubernetes em um pipeline automatizado de integração contínua/entrega contínua (CI/DC) requer ferramentas especiais e programação personalizada.

O Knative elimina essa complexidade com ferramentas que automatizam essas tarefas de dentro do Kubernetes. Um desenvolvedor pode definir o conteúdo e a configuração do contêiner em um único arquivo de manifesto YAML , e o Knative faz o resto, criando o contêiner e executando a programação de rede para configurar uma rota, entrada, balanceamento de carga e muito mais. O Knative também oferece uma interface de linha de comando, Knative CLI, que permite aos desenvolvedores acessar as funcionalidades do Knative sem editar arquivos YAML .

AI Academy

Preparando-se para a IA com a nuvem híbrida

Liderada pelos principais líderes da IBM, o currículo dessa experiência foi desenvolvido para ajudar líderes empresariais a terem o conhecimento necessário para priorizar os investimentos em IA capazes de estimular o crescimento.

Tornando os contêineres serverless

A computação serverless é um modelo de execução nativo da nuvem que torna as aplicações mais fáceis de desenvolver e mais econômicas. O modelo de computação serverless 

  • fornece recursos de computação sob demanda, escalando de forma transparente com base nas solicitações e escalando para zero quando as solicitações não são mais feitas;

  • descarrega todas as tarefas de gerenciamento de infraestrutura (escalonamento, agendamento, aplicação de patches, provisionamento e muito mais) para o provedor de nuvem, permitindo que os desenvolvedores concentrem seu tempo e esforço no desenvolvimento e na inovação; e

  • permite que os clientes da nuvem paguem somente pelos recursos usados; eles nunca pagam pela capacidade ociosa.

Por si só, o Kubernetes não consegue executar aplicações serverless sem um software especializado que integre o Kubernetes à plataforma serverless de um provedor de nuvem específico. O Knative permite que qualquer contêiner seja executado como uma carga de trabalho serverless em qualquer cluster, independentemente de o contêiner ser criado em torno de uma função serverless ou outro código de aplicação (por exemplo, microsserviço), abstraindo o código e manipulando o roteamento de rede, gatilhos de eventos e autoescalonamento.

Como o Knative funciona: componentes do Knative

O Knative fica no Kubernetes e adiciona três componentes principais ou primativos: Build, Serving e Eventing.

Build

O componente Build do Knative automatiza a conversão do código-fonte em um contêiner. Normalmente, esse processo envolve várias etapas, incluindo:

  • Extrair o código-fonte de um repositório de código, como o GitHub
  • Instalar as dependências subjacentes, como variáveis de ambiente e bibliotecas de software, de que o código precisa para ser executado
  • Construir imagens de contêineres
  • Colocar imagens de contêineres em um registro onde o Kubernetes e outros desenvolvedores possam encontrá-las.

O Knative usa APIs do Kubernetes e outras ferramentas para seu processo de construção. Um desenvolvedor pode criar um único manifesto (normalmente um arquivo YAML ), que especifica todas as variáveis — localização do código-fonte, dependências necessárias e muito mais — e o Knative usa o manifesto para automatizar a criação de contêineres.

Serving

O componente Serving implementa e executa contêineres como serviços escaláveis do Knative . O Serving fornece os seguintes recursos essenciais:

  • A configuração define e mantém o estado de um serviço. Ela também oferece gerenciamento de versões: cada modificação na configuração cria uma nova versão do serviço, e as versões anteriores são salvas.

  • O roteamento de serviço inteligente permite que os desenvolvedores roteiem o tráfego para diferentes versões do serviço. Suponha que você criou uma nova versão de serviço, mas deseja implementá-la em um subconjunto de usuários antes de migrar todos os usuários. O roteamento de serviço inteligente permite que você direcione um percentual das solicitações dos usuários para o novo serviço e o restante, para uma versão anterior; à medida que você se torna mais confiante no novo serviço, pode direcionar mais tráfego para ele.

  • Autoescalonamento. O Knative pode aumentar o escalonamento de serviços para milhares de instâncias; e também pode reduzir seu escalonamento até zero, ou seja, nenhuma instância de contêineres, o que é crítico para compatibilidade com aplicações serverless .

O Knative Serving usa o roteamento inteligente de serviços do Istio, outra aplicação no ecossistema Kubernetes. Uma malha de serviços de código aberto para o Kubernetes, o Istio também fornece autenticação para solicitações de serviços, criptografia automática de tráfego para comunicação segura entre serviços, métricas detalhadas sobre microsserviços e operações de funções serverless e outras ferramentas para desenvolvedores e administradores otimizarem a infraestrutura. 

Eventing

O componente Eventing do Knative permite que diferentes eventos acionem seus serviços e funções baseados em contêineres. O Knative enfileira e entrega esses eventos aos contêineres apropriados; portanto, não há necessidade de escrever scripts ou implementar middleware para a funcionalidade. O Knative também lida com canais, que são filas de eventos entre as quais os desenvolvedores podem escolher, e com o ônibus, uma plataforma de mensagens que entrega eventos a contêineres. Ele também permite que os desenvolvedores configurem feeds, que conectam um evento a uma ação para seus contêineres executarem.

As fontes de eventos do Knative tornam mais fácil para os desenvolvedores criar conexões para produtores de eventos de terceiros. O Eventing do Knative cria automaticamente a conexão com o produtor de eventos e roteia os eventos gerados. Não é necessário descobrir como fazer isso programaticamente — o Knative faz todo o trabalho.

Casos de uso do Knative

Para recapitular, o Knative é compatível com vários casos de uso para usuários do Kubernetes que desejam simplificar o desenvolvimento de aplicativos conteinerizados ou levar o uso de contêineres para o próximo nível.

Simplificação do Kubernetes. Ao eliminar tarefas repetitivas de compilação e configuração, o Knative torna os desenvolvedores que trabalham com o Kubernetes mais produtivos. Qualquer equipe de desenvolvimento que luta para gerenciar um número crescente de clusters do Kubernetes é um candidato ideal para o Knative.

Aceleração da jornada para serverless. Ambientes serverless podem ser assustadores para configurar e gerenciar manualmente. O Knative permite que as organizações configurem cargas de trabalho serverless rapidamente. No que diz respeito aos desenvolvedores, eles estão apenas construindo um contêiner — é o Knative que o executa como uma função serverless nos bastidores.

Compatibilidade com ciclos de vida ágeis e de DevOps . Ao possibilitar que os desenvolvedores criem novos contêineres e versões de contêineres com mais rapidez, o Knative facilita a implementação de aplicações conteinerizadas em etapas pequenas, rápidas e iterativas, como parte de um fluxo de trabalho ágil ou de DevOps . Os serviços do Knative integram-se facilmente a pipelines de CI/CD automatizados sem a necessidade de software especial ou programação personalizada.

Suavização do lançamento de novas funcionalidades. O lançamento de novas versões para os clientes pode expor problemas de software que podem afetar os processos de negócios. A configuração e o roteamento do Knative permitem que os desenvolvedores exponham novas revisões de contêineres a um subconjunto da base de usuários. Em seguida, eles aumentam gradualmente essa audiência ao longo do tempo à medida que solucionam problemas ou revertem rapidamente para versões mais antigas, se necessário.

Como manter os desenvolvedores focados em programação e inovação. O DevOps pode capacitar os desenvolvedores a administrar seus próprios ambientes. Mas, no final das contas, os desenvolvedores querem se concentrar na criação de software sem bugs e em novas funcionalidades inovadoras, e não na configuração de filas de barramentos de mensagens para acionamento de eventos ou no gerenciamento da escalabilidade de contêineres. O Knative permite que os desenvolvedores passem mais tempo fazendo o que fazem de melhor.

Soluções relacionadas
IBM Red Hat OpenShift

O Red Hat OpenShift on IBM Cloud é uma plataforma de contêineres OpenShift (OCP) totalmente gerenciada.

Explore o Red Hat OpenShift
Soluções de contêiner

As soluções de contêineres executam e escalam cargas de trabalho conteinerizadas com segurança, inovação de código aberto e implementação rápida.

Explore contêineres
Serviços de consultoria em nuvem 

Libere novos recursos e aumente a agilidade dos negócios com os serviços de consultoria em nuvem da IBM. Descubra como cocriar soluções, acelerar a transformação digital e otimizar o desempenho por meio de estratégias de nuvem híbrida e parcerias especializadas.

Serviço de nuvem
Dê o próximo passo

Modernize sua infraestrutura com as soluções de contêineres da IBM. Execute, escale e gerencie cargas de trabalho conteinerizadas em todos os ambientes com flexibilidade, segurança e eficiência usando a abrangente plataforma de contêineres da IBM.

Explore soluções de contêineres Crie sua conta gratuita na IBM Cloud