O que significa Kubernetes no browser
Rodar o Kubernetes diretamente no navegador sempre pareceu uma ideia improvável. O orquestrador de containers e conhecido pela sua complexidade de instalação e pelos recursos que consome. Mas engenheiros da ngrok conseguiram portar um cluster Kubernetes funcional para o browser, e o resultado chamou muita atenção na comunidade.
A ideia central e compilar os componentes do Kubernetes para WebAssembly (WASM), que é um formato binário que roda dentro de qualquer navegador moderno. Isso permite executar um cluster completo sem instalar nada no sistema operacional, sem Docker, sem kubectl, sem configurar nada localmente.
O projeto demonstra que a fronteira entre o que roda no servidor e o que roda no browser esta ficando cada vez mais ténue. E uma conquista técnica relevante mesmo que os casos de uso práticos ainda estejam sendo explorados.
Como funciona: WebAssembly e Kubernetes
O WebAssembly e uma especificação de bytecode que permite compilar código escrito em linguagens como Go, Rust ou C++ para um formato que roda dentro do browser com performance próximo ao nativo. O Kubernetes e escrito em Go, o que torna a compilação para WASM tecnicamente possível.
O processo envolve compilar o binário do Kubernetes (especificamente o servidor de API, o scheduler e o controller manager) usando o alvo de compilação do Go para WebAssembly. Em paralelo, os processos que normalmente rodaríamos como containers Linux precisam ser adaptados para rodar como workloads WASM no browser.
A parte mais complexa e a rede. O Kubernetes precisa de comunicação entre pods, entre o plano de controle e os nodes. No browser, isso foi resolvido usando comunicação interna via service workers e a API de WebSockets para comunicação com o mundo externo quando necessário.
Principais recursos da implementação
A versão browser do Kubernetes, apesar de experimental, já oferece recursos funcionais:
- Cluster local: você pode criar um cluster Kubernetes completo abrindo uma aba do browser. Nenhuma instalação local necessária.
- kubectl funcional: e possível rodar comandos kubectl diretamente na interface, aplicar manifestos YAML e inspecionar recursos como pods e deployments.
- Workloads básicos: e possível criar Deployments, Services e ConfigMaps. A maioria dos recursos básicos do Kubernetes funciona na versão browser.
- Persistência via localStorage: o estado do cluster pode ser salvo no armazenamento local do browser, permitindo retomar onde parou.
- Zero configuração: não e preciso configurar kubeconfig, instalar minikube ou criar clusters em cloud. O cluster sobe em segundos.
A performance não e equivalente a um cluster real em metal ou em cloud, mas e mais que suficiente para aprendizado, testes de manifestos e prototipagem.
Como começar a usar
Para explorar o Kubernetes no browser, você pode acessar a demonstração disponibilizada pelos engenheiros da ngrok diretamente no blog deles. Não e necessário criar conta nem instalar nada.
Passo 1: Abra o link da demonstração no blog da ngrok (disponível no site ngrok.com/blog). O cluster Kubernetes vai iniciar automaticamente.
Passo 2: Use o terminal embutido na interface para rodar comandos kubectl. Tente kubectl get nodes para ver o node do cluster e kubectl get pods -A para ver os pods do sistema que já estão rodando.
Passo 3: Crie um Deployment simples aplicando um manifesto YAML. Use kubectl apply -f - e cole o YAML de um Deployment básico. Você vai ver os pods sendo criados em tempo real.
Exemplo prático: criando um Deployment no browser
Para criar um deployment simples de nginx no cluster browser, você pode usar um manifesto básico como este:
apiVersion: apps/v1, kind: Deployment, com selector e template apontando para a imagem nginx:alpine. O comando kubectl get pods vai mostrar o pod subindo, e kubectl describe pod vai dar detalhes sobre o estado atual.
A experiência e surpreendentemente próxima de usar um cluster real. Os comandos respondem rápido, os logs funcionam e você pode criar Services para expor as aplicações internamente dentro do cluster browser.
Comparação com alternativas locais
vs. minikube: O minikube e a forma mais popular de rodar Kubernetes localmente. Ele exige instalação, Docker e razoável quantidade de RAM. O Kubernetes no browser não exige nada disso, mas tem limitações de recursos e persistência.
vs. kind (Kubernetes in Docker): O kind e rápido e leve, mas ainda exige Docker instalado. Para quem esta em uma máquina sem permissões de admin ou quer experimentar sem instalar nada, o browser e mais acessível.
vs. k3s: O k3s e uma distribuição leve de Kubernetes para edge. Roda bem em máquinas com pouca RAM, mas ainda exige um sistema operacional Linux. O browser vai um nível a mais: nem sistema operacional precisa ser configurado.
Pontos positivos e limitações
O ponto mais forte e o uso educacional. Para aprender Kubernetes sem gastar com cloud e sem batalhar com instalações locais, o browser e ideal. A curva de aprendizado de Kubernetes já e alta sem adicionar problemas de configuração de ambiente.
As limitações são reais. Performance e muito menor que um cluster real. Workloads que precisam de volumes persistentes externos, acesso a GPU ou comunicação com serviços externos são complicados ou impossíveis na versão atual.
A persistência e limitada ao localStorage do browser, o que não e adequado para nada além de experimentos rápidos. Ao limpar o cache ou trocar de browser, o cluster some.
Casos de uso reais
Aprendizado de Kubernetes: para quem esta estudando para a certificação CKA ou CKAD, ter um cluster disponível instantaneamente no browser elimina a barreira inicial de configuração.
Validação de manifestos: antes de aplicar um YAML em um cluster de staging, você pode testar a sintaxe e o comportamento básico no browser sem risco.
Demos e apresentações: para mostrar conceitos de Kubernetes em workshops ou aulas, usar o browser garante que a demo funciona em qualquer máquina sem depender de configuração do ambiente.
Experimentação rápida: para testar um novo Operator ou uma configuração de RBAC, o browser permite iterar rápido sem custo de cloud.
Dicas e boas práticas
- Use o Chrome ou Edge: WebAssembly tem melhor suporte e performance nesses browsers comparado ao Firefox para uso intensivo.
- Limite o número de pods: como os recursos são compartilhados com o browser, criar muitos pods vai degradar a performance. Foque em testar conceitos, não em escala.
- Salve seus manifestos externamente: o localStorage pode ser limpo facilmente. Mantenha seus YAML de teste em um repositório ou arquivo local.
- Combine com a documentação oficial: use o browser Kubernetes para praticar enquanto le a documentação oficial em Kubernetes.io. A combinação acelera o aprendizado.
O maior erro e tentar usar o Kubernetes no browser para workloads de produção ou testes de carga. Ele foi feito para aprendizado e prototipagem, não para produção.
Vale a pena explorar?
Para quem esta aprendendo Kubernetes, definitivamente sim. A barreira de entrada diminui drasticamente quando você pode abrir o browser e começar a praticar em segundos, sem instalar nada.
Para times que precisam de uma forma rápida de validar manifestos ou fazer demos, também é valido. E mais uma ferramenta no arsenal do dev, não uma substituta para clusters reais.
A iniciativa da ngrok e importante porque mostra que WebAssembly esta maduro o suficiente para rodar sistemas complexos como o Kubernetes. Isso abre portas para outros projetos que antes seriam inviáveis no browser.
Comentários
Deixar um comentárioVocê precisa ter uma conta no CuritibaBlog para comentar.