O que é o Knative?
O Knative permite que cargas de trabalho sem servidor sejam executadas em clusters Kubernetes e agiliza e facilita a criação e a orquestração de contêineres com Kubernetes.
plano de fundo azul e preto
O que é o Knative?

Knative (pronunciado Kay-NAY-tive) é uma extensão da plataforma de orquestração de contêineres Kubernetes que permite às cargas de trabalho sem servidor executar clusters Kubernetes, além de disponibilizar ferramentas e utilitários que tornam a criação, a implementação e o gerenciamento de aplicativos conteinerizados no Kubernetes uma experiência mais simples e mais 'nativa do Kubernetes ' (por isso o nome, 'K' para 'Kubernetes' + native).

Assim como o Kubernetes, Knative é  uma plataforma de software  livre. Foi originalmente desenvolvido pela Google em colaboração com a IBM, Pivotal, Red Hat, SAP e cerca de 50 outras empresas. Hoje, o projeto de software livre Knative é hospedado pela Cloud Native Computing Foundation (CNCF). 

Por que o Kubernetes precisa do Knative?

O Kubernetes automatiza e programa a implementação, o gerenciamento e o ajuste de escala de contêineres, ou seja, componentes de aplicativos leves e executáveis que combinam código-fonte  com todas as bibliotecas de sistema operacional (SO) e dependências necessárias para executar a codificar em qualquer ambiente. 

Os contêineres permitem que componentes de aplicativos compartilhem os recursos a partir de uma única instância de um sistema operacional, da mesma forma que máquinas virtuais (VMs)  permitem que aplicativos compartilhem os recursos a partir de um único computador físico. Menor e mais eficiente em termos de recursos do que as máquinas virtuais e mais adequado para os ciclos incrementais de lançamento de metodologias de desenvolvimento Agile e DevOps, os contêineres se tornaram as unidades de computação dos de aplicativos modernos e nativos da cloud. As empresas que usam contêineres relatam outros benefícios, incluindo melhor qualidade dos aplicativos, melhores níveis de inovação  e muito mais:

Faça o download do relatório completo: contêineres corporativos (PDF, 1,4 MB)

À medida que o desenvolvimento  nativo da cloud torna-se mais conhecido e os contêineres são distribuídos por toda a organização, os recursos de  orquestração de contêiner do Kubernetes, planejamento,  balanceamento de carga, monitoramento de integridade e muito mais, facilitam o gerenciamento dessa distribuição. No entanto, o Kubernetes é uma ferramenta complexa que exige que os desenvolvedores executem ou criem modelos de muitas tarefas repetitivas, como a extração de código-fonte de aplicativos de repositórios, a criação e o fornecimento de uma imagem de contêiner com base em um código, a configuração de conexões de rede, fora do Kubernetes, usando diferentes ferramentas. E a incorporação de contêineres gerenciados pelo Kubernetes em um pipeline de integração contínua/entrega contínua (CI/DC) requer ferramentas especiais e programação customizada.

O Knative elimina esta complexidade com ferramentas que automatizam estas tarefas, de  dentro do Kubernetes. Um desenvolvedor pode definir o conteúdo e a configuração do contêiner em um único arquivo manifest YAML e o Knative faz o resto, criando o contêiner e realizando a programação da rede para configurar a rota, a  entrada, o balanceamento de carga e mais. (O Knative oferece também uma interface de linha de comandos, a CLI do Knative, que permite aos desenvolvedores acessar funções do Knative sem precisar editar arquivos  YAML ).

Fazendo contêineres sem servidor

A computação sem servidor é um modelo de execução nativa de cloud que facilita o desenvolvimento dos aplicativos e reduz o custo de execução. O modelo de computação sem servidor:

  • oferece recursos de computação sob demanda, ajuste de escala de forma transparente com base em solicitações e ajuste de escala para zero quando as solicitações não são mais feitas;

  • transfere todas as tarefas de gerenciamento de infraestrutura, como ajuste de escala, agendamento, correções, fornecimento, entre outros, para o provedor de cloud, permitindo que os desenvolvedores concentrem seu tempo e esforço no desenvolvimento e inovação; e

  • permite que aos clientes da cloud pagar apenas pelos recursos que estão sendo usados, e nunca pela capacidade ociosa.

Sozinho, o Kubernetes não pode executar aplicativos sem servidor  sem um software especializado que integra o  Kubernetes com a plataforma sem servidor de um provedor de cloud específico. O Knative permite que qualquer contêiner seja executado como uma carga de trabalho sem servidor em qualquer cluster Kubernetes, seja o contêiner construído em torno de uma função sem servidor ou outro código de aplicativo (por exemplo, microsserviços), abstraindo o código e manipulando o  roteamento da rede, acionadores de eventos e o ajuste automático de escala.

Como o Knative funciona: componentes do Knative

O Knative é implementado sobre o Kubernetes e adiciona três componentes principais ou primários: compilação, serviço e eventos. 

Compilação


O componente de compilação do Knative  automatiza o processo de conversão do código-fonte em um contêiner. Esse processo geralmente 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, que o código precisa para ser executado
  • Compilar imagens de contêiner
  • Colocar as imagens de contêiner em um registro onde o Kubernetes, e outros desenvolvedores, pode encontrá-lo.

O Knative usa APIs de Kubernetes e outras ferramentas em seu processo de Compilação. Um desenvolvedor pode criar um único manifest (normalmente um arquivo  YAML ) que especifica todas as variáveis, como localização do  código-fonte, dependências necessárias, entre outros, e o Knative usa o manifest para automatizar a compilação do contêiner. 

Serviço


O componente de Serviço implementa e executa contêineres como serviços escaláveis do  Knative.  O Serviço oferece os recursos importantes a seguir:

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

  • O roteamento de serviço inteligente permite que os desenvolvedores façam o roteamento do tráfego para diferentes versões do serviço. Suponha que você criou uma nova versão de um 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 encaminhar uma porcentagem das solicitações do usuário para o novo serviço e o restante das solicitações para uma versão anterior. À medida que você se torna mais confiante com o novo serviço, será possível direcionar mais tráfego para ele.

  • Ajuste automático de escala. O Knative  pode escalar serviços para milhares de instâncias. Ele também pode escalá-los a zero, ou seja, nenhuma instância do contêiner, o que é crítico para o suporte de aplicativos  sem servidor .
O Serviço do

Knative  empresta o roteamento de serviço inteligente do Ístio, outro aplicativo do ecossistema do Kubernetes. uma  malha de serviço  de código aberto  para  Kubernetes. O Ístio também oferece autenticação  para solicitações de serviço, criptografia de tráfego automática para comunicação segura entre serviços e métricas detalhadas de microsserviços e operações de função sem servidor que desenvolvedores e administradores podem usar para otimizar a infraestrutura. Para obter mais detalhes sobre como o Knative usa o Ístio, consulte "Ístio e Knative: usando o Kubernetes para uma nova Experiência do Desenvolvedor".

Eventos


O componente de Eventos do Knative permite que diferentes eventos acionem seus serviços e funções baseados em contêiner. O Knative enfileira e entrega esses eventos para os contêineres adequados, então, não há necessidade de gravar scripts ou implementar  middleware para a funcionalidade. O Knative também lida com canais, que são filas de eventos que os desenvolvedores podem escolher, e o barramento, uma plataforma de mensagens que entrega eventos para contêineres. Ele permite também que os desenvolvedores configurem feeds, que conectar um evento a uma ação para que seus contêineres sejam executados.

As fontes de Eventos do Knative facilitam a criação de conexões à produtores de eventos de terceiros para os desenvolvedores. A criação de eventos do Knative criará automaticamente a conexão com o produtor de eventos e encaminhará os eventos gerados. Não há necessidade de descobrir como fazer isso de maneira programática, o Knative  faz todo o trabalho.

Casos de uso do Knative

Para recapitular, o Knative suporta vários casos de uso para usuários do Kubernetes que desejam simplificar o desenvolvimento de aplicativos conteinerizados ou aprimorar o uso de seus contêineres.

Simplificando o Kubernetes. Ao eliminar tarefas repetitivas de compilação e configuração, o Knative faz com que os desenvolvedores trabalhem com o Kubernetes de maneira mais produtiva. Qualquer equipe de desenvolvimento que busca gerenciar um número crescente de clusters  Kubernetes é uma candidata ideal para o Knative.

Acelerando a jornada para um ambiente  sem servidor. Os ambientes sem servidor podem ser complexos para configurar e gerenciar manualmente. O Knative permite que as organizações configurem rapidamente as cargas de trabalho  sem servidor.  No que diz respeito aos desenvolvedores, eles estão apenas compilando um contêiner, é o Knative que o executa como uma função sem servidor nos bastidores.

Suporte a ciclos de vida Agile e DevOps.  Ao permitir que os desenvolvedores criem novos contêineres e versões de contêineres rapidamente, o  Knative  facilita a implementação de aplicativos conteinerizados em etapas pequenas, rápidas e iterativas como parte de um fluxo de trabalho Agile ou  DevOps . E os serviços do Knative integram-se facilmente aos pipelines CI/CD automatizados sem exigir software específico ou programação customizada.

Lançamentos mais tranquilos de novos recursos. O lançamento de novas liberações aos clientes pode expor problemas de software que podem afetar os processos de negócios. A configuração do Knative e o roteamento permitem que os desenvolvedores apresentem novas revisões de contêiner a um subconjunto da base de usuários e, em seguida, aumentem gradualmente esse público ao longo do tempo à medida que solucionam  problemas ou retrocedem rapidamente para versões mais antigas, se necessário.

Mantenha os desenvolvedores focados em programação e inovação. O DevOps possibilita que os desenvolvedores administrem seus próprios ambientes. Mas, no final das contas, os desenvolvedores desejam se concentrar em criar software sem bugs e novos recursos inovadores, não em configurar filas de barramento de mensagens para acionamento de eventos ou gerenciar o ajuste de escala de contêineres. O Knative  permite que os desenvolvedores gastem mais tempo aplicando seu conhecimento da melhor maneira possível.

Soluções relacionadas
Red Hat OpenShift on IBM Cloud

Com o Red Hat OpenShift on IBM Cloud, os desenvolvedores do OpenShift têm uma maneira rápida e segura de conteinerizar e implementar cargas de trabalho corporativas em clusters Kubernetes.

Conheça o Red Hat OpenShift
IBM Cloud Satellite

Implemente e execute os aplicativos de maneira consistente em ambientes locais, de computação de borda e de cloud pública a partir de qualquer fornecedor de cloud, usando um conjunto comum de serviços de cloud, incluindo cadeias de ferramentas, bancos de dados e IA.

Conheça o IBM Cloud Satellite
IBM Cloud Code Engine

O IBM Cloud Code Engine, uma plataforma sem servidor completamente gerenciada, permite executar contêineres, código de aplicativos e tarefas em lote em um tempo de execução de contêiner totalmente gerenciado.

Conheça o IBM Cloud Code Engine
Recursos Contêineres na empresa

Uma nova pesquisa da IBM documenta a expansão atual da adoção de contêineres e do Kubernetes.

O que é sem servidor?

O modelo de execução e o desenvolvimento de aplicativos de cloud sem servidor permite que os desenvolvedores criem e executem códigos sem gerenciar servidores ou pagar por infraestrutura de cloud ociosa.

TI flexível, resiliente e segura para a sua cloud híbrida

Os contêineres fazem parte de uma estratégia de cloud híbrida que permite criar e gerenciar cargas de trabalho de qualquer lugar.

Dê o próximo passo

Com o Red Hat OpenShift on IBM Cloud, os desenvolvedores do OpenShift têm uma maneira rápida e segura de conteinerizar e implementar cargas de trabalho corporativas em clusters Kubernetes. Implemente clusters Kubernetes altamente disponíveis e completamente gerenciados para seus aplicativos conteinerizados com um único clique.Como a IBM gerencia o OpenShift Container Platform (OCP) você terá mais tempo para se concentrar em suas principais tarefas.

Conheça o Red Hat OpenShift on IBM Cloud