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).
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 ).
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:
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.
O Knative é implementado sobre o Kubernetes e adiciona três componentes principais ou primários: compilação, serviço e eventos.
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:
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.
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:
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".
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.
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.
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 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.
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.
Uma nova pesquisa da IBM documenta a expansão atual da adoção de contêineres e do Kubernetes.
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.
Os contêineres fazem parte de uma estratégia de cloud híbrida que permite criar e gerenciar cargas de trabalho de qualquer lugar.