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.