CloudMonitoramento de SegurançaSegurança

Utilizando a tecnologia Retina da Microsoft para supervisionar redes Kubernetes.

A iniciativa de código aberto Retina visa proporcionar maior visibilidade às redes de contêineres no Kubernetes por meio da utilização de eBPF.

ethernet cables internet networking
Imagem: TomasHa73/GettyImages

Kubernetes tem uma função crucial na Microsoft, sendo essencial para diversas plataformas da empresa, desde o Microsoft 365 e Xbox até o Azure, além de ser utilizado por parceiros como o OpenAI para a hospedagem de seus serviços.

A Microsoft criou várias ferramentas de gerenciamento de Kubernetes próprias, como o Kaito para implementar cargas de trabalho de inteligência artificial e o Frota para lidar com clusters Kubernetes em larga escala. Essas ferramentas estão disponíveis nos serviços gerenciados de Kubernetes da Microsoft, o Azure Kubernetes Service e o Azure Container Service, que permitem implantar e orquestrar aplicações baseadas em containers sem a necessidade de construir a infraestrutura de gerenciamento. Todos esses recursos são oferecidos gratuitamente, com APIs, portais e interfaces de linha de comando disponíveis.

Antigamente, essa teria sido a abordagem da Microsoft. A empresa teria aproveitado essas características para se destacar de suas concorrentes e de suas plataformas de Kubernetes. No entanto, a Microsoft abraçou o conceito de código aberto, com muitos dos principais responsáveis por suas iniciativas no Kubernetes vindo de um ambiente de código aberto. Em vez de manter suas ferramentas Kubernetes em segredo, a Microsoft optou por disponibilizá-las como projetos de código aberto, permitindo que qualquer pessoa as utilize e contribua com novas implementações.

Introduzindo a plataforma de monitoramento Retina.

Uma das novas ferramentas do Azure que foi disponibilizada como projeto de código aberto é o Retina. Trata-se de uma ferramenta de observação de rede criada para auxiliar na compreensão do tráfego de rede em todos os clusters, independentemente de suas configurações ou tecnologias utilizadas. Além disso, não há restrições de funcionalidade no Azure, pois o Retina pode ser executado em qualquer instância de Kubernetes, seja localmente ou em plataformas como AWS, Azure ou GCP.

No centro da Retina, semelhante à ferramenta de segurança Falco, estão os Berkeley Packet Filters (eBPF), que possibilitam a execução de código no kernel do sistema operacional hospedeiro, fora dos contêineres de aplicativos, permitindo o uso de sondas eBPF sem impactar significativamente o código em execução. Não é necessário adicionar agentes aos contêineres ou incluir bibliotecas de monitoramento no código, e uma sonda eBPF pode monitorar todos os nós em execução em um host, seja uma máquina virtual na nuvem ou um hardware físico local.

Realizar sondas Retina no kernel facilita a supervisão da rede, sem necessidade de conhecer as placas de rede do servidor ou a configuração de rede do Kubernetes. Em vez disso, é possível observar o desempenho da pilha de rede do sistema operacional em relação aos pacotes, permitindo o monitoramento da latência, perda de pacotes e outros dados utilizando recursos de baixo nível do TCP/IP que podem não ser acessíveis em níveis mais altos.

RELACIONADO:  Observar mudará a segurança na nuvem.

Ao enfocar na criação de conexões nativas em nuvem observáveis, o Retina foi desenvolvido para se adequar a qualquer conjunto de ferramentas de monitoramento e a qualquer instalação de Kubernetes. A compatibilidade com Linux e Windows facilita o monitoramento e a depuração de aplicativos híbridos que combinam serviços desses sistemas operacionais. Como as sondas eBPF são codificadas, é possível considerá-las como plugins personalizáveis, o que permite que o Retina se adapte a novas funcionalidades do Kubernetes e ofereça suporte às métricas necessárias para os requisitos de monitoramento.

Os dados são enviados para o serviço de registro Prometheus conhecido em um nível de nó. As informações coletadas abrangem DNS, operações de camada 4 e capturas de pacotes. Com a devida rotulagem dos dados, é possível criar um mapeamento das operações no ambiente Kubernetes, facilitando a identificação de problemas, como um microsserviço travado, enquanto o Retina registra os padrões de fluxo dentro e ao redor das instâncias Kubernetes.

Iniciar com a Retina.

Comece por fazer uma cópia do repositório Retina no GitHub e, em seguida, utilize os gráficos pré-empacotados do Helm para realizar a instalação. Pode ser necessário configurar o Prometheus também, para garantir que o Retina esteja registrando os dados corretamente. Para utilizar o Retina CLI, é necessário que esteja em execução em um ambiente Kubernetes hospedado em um sistema Linux. O CLI opera com o kubectl, o que facilita sua utilização junto com outras ferramentas de linha de comando do Kubernetes. Como alternativa, é possível empregar definições personalizadas em formato YAML para configurar e executar uma captura de rede.

No Linux, o plugin de monitoramento de rede eBPF é uma adaptação da ferramenta Inspektor Gadget de código aberto. Esta ferramenta foi inicialmente criada pela equipe Kinvolk, que agora faz parte da Azure e continua com seu foco na engenharia de contêineres. Inspektor Gadget consiste em uma coleção de ferramentas baseadas em eBPF para o Kubernetes, sendo capaz de lidar com aplicações Kubernetes de diversos tamanhos, desde simples nós a grandes clusters. O Retina utiliza os recursos de rastreamento do Inspektor Gadget para monitorar eventos de rede do sistema.

RELACIONADO:  Aprimorar a eficiência nas implementações de ambientes de nuvem híbrida.

Observar redes de recipientes de carga.

O site Retina disponibiliza orientações detalhadas sobre como utilizar sua ferramenta, a qual oferece três modos de operação distintos: métricas simples por nó, métricas mais detalhadas com suporte para agregação por fonte e destino de pod, e uma opção que permite selecionar as vagens a serem monitoradas.

O texto destaca a importância de não visualizar todas as informações de uma vez, a fim de evitar sobrecarga. Em vez disso, diferentes métricas são disponibilizadas por meio de plugins específicos. Por exemplo, ao desejar monitorar chamadas de DNS, é recomendado ativar o plugin específico para esse fim. Todas as métricas contêm informações detalhadas sobre o cluster e a instância, permitindo filtrar e relatar com base em etiquetas que identificam os nós e as instâncias de destino. As opções de contexto local e remoto adicionam rótulos que acompanham a origem e o destino das informações.

Configurar Retina envolve também configurar um alvo Prometheus para os dados, juntamente com um painel de controle Grafana adequado. A Microsoft disponibiliza exemplos de configurações para ambos no GitHub, no repositório Retina. As configurações padrão mostram dados de rede e DNS do cluster. Ao ter os dados no Prometheus, é possível utilizar outras ferramentas para manipular os dados do Retina, como por exemplo, enviar dados para um mecanismo de políticas para acionar alertas ou automatizar operações específicas.

Com a instalação do Retina e a configuração do Prometheus e Grafana, é possível expandir as funcionalidades ao personalizar o agente Retina e os plugins por meio de arquivos YAML. A adição de métricas extras é realizada por meio de definições de recursos personalizados no Kubernetes.

Avaliação das atividades de rede no ambiente Kubernetes.

A Retina não é adequada para monitoramento constante em nível de pacotes, pois gerará muitos dados em um cluster movimentado, a menos que seja utilizada em conjunto com uma ferramenta baseada em políticas para identificar situações anômalas. Em vez disso, é mais eficaz empregar a Retina para investigar as causas principais de problemas em um cluster em operação. Por exemplo, se houver suspeitas de falhas na comunicação entre componentes ou se houver indícios de erros devido a latência em uma interação de serviço específica, é possível ativar a captura de pacotes necessária com um único comando para coletar os dados essenciais para um diagnóstico preciso.

A operação em curso é monitorada por meio de medidas estatísticas que fornecem dados essenciais sobre os aspectos críticos da rede. Essas informações podem ser utilizadas com o Prometheus para criar alertas e com o Grafana para oferecer uma visão abrangente do desempenho global do seu conjunto de servidores, juntamente com dados de outras ferramentas de monitoramento.

RELACIONADO:  Os progressos da inteligência artificial estão impulsionando os investimentos em infraestrutura na nuvem.

Uma métrica importante fornecida pela Retina, mas muitas vezes negligenciada, é a latência da API. No entanto, ao trabalhar no desenvolvimento nativo em nuvem, é comum lidar com APIs de terceiros, que podem ser provenientes de provedores de serviços em nuvem ou fontes de dados cruciais de negócios, como Salesforce ou SAP Hana. A latência do servidor da API da Retina pode ser utilizada para obter métricas que permitem monitorar os tempos de resposta do servidor.

Possuir essas informações possibilita iniciar um procedimento de diagnóstico com o provedor de API, facilitando a identificação da origem de eventuais atrasos. Os atrasos na utilização da API podem representar um obstáculo importante em seus aplicativos, por isso, ter esses dados pode contribuir para oferecer um aplicativo mais confiável e ágil.

Um ecossistema de Kubernetes bem desenvolvido.

A Microsoft disponibilizou uma versão de teste de uma ferramenta de monitoramento baseada em Retina para o Azure Kubernetes Service como um suplemento de Observabilidade de Rede. Essa ferramenta é compatível com o Prometheus gerenciado e o Grafana do Azure. Embora a documentação liste as métricas pré-configuradas, atualmente ela oferece apenas um conjunto limitado de funcionalidades da Retina, focando principalmente em métricas de nível de nó.

Um aspecto importante a se ter em mente sobre o Retina é que ele se fundamenta na experiência do Azure com o Kubernetes. As métricas pré-definidas são aquelas que a equipe do Azure considera relevantes, permitindo assim a construção sobre o conhecimento sustentado em um dos maiores e mais dinâmicos ambientes Kubernetes do mundo. Caso necessite de outras métricas, é possível criar suas próprias sondas eBPF para o Retina, as quais podem ser compartilhadas com a extensa comunidade Kubernetes.

O código aberto requer que o conhecimento seja compartilhado para ter sucesso. Ao disponibilizar o código-fonte, a Microsoft está encorajando os desenvolvedores da Retina a contribuir com seus conhecimentos para a plataforma, com a expectativa de que os usuários da AWS, GCP e outros serviços Kubernetes em larga escala compartilhem suas experiências de rede com o mundo. À medida que o Kubernetes evolui, ferramentas como a Retina e o Falco, baseadas em eBPF, se tornarão cada vez mais essenciais, fornecendo os dados necessários para oferecer aplicações nativas na nuvem seguras e confiáveis em grande escala.

Artigos relacionados

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button