4 min de leitura

Gitaly GA no Kubernetes: o fim do modelo híbrido no GitLab

Gitaly GA no Kubernetes: o fim do modelo híbrido no GitLab

Até ontem, gerenciar GitLab em Kubernetes significava manter duas realidades paralelas: um cluster para a aplicação e um exército de VMs só para o Gitaly. Esse modelo híbrido, repleto de complexidade operacional e custos extras, acaba de se tornar obsoleto.

O fim do modelo híbrido no GitLab

Por anos, o Gitaly — serviço de repositório Git do GitLab — foi oficialmente suportado apenas em máquinas virtuais ou bare‑metal. Rodá-lo em Kubernetes era uma gambiarra: workarounds manuais, falhas imprevisíveis e uma manutenção heróica que consumia tempo e recursos das equipes DevOps.

Com o GitLab 18.11, essa era termina. O Gitaly agora está disponível em disponibilidade geral (GA) para execução nativa em Kubernetes. Isso significa que times podem consolidar toda a stack GitLab em um único cluster K8s, com desempenho validado por benchmarks e uma arquitetura projetada para ambientes cloud‑native.

O impacto é direto: redução de custos de infraestrutura, simplificação de monitoramento e eliminação da necessidade de gerenciar duas plataformas distintas — VMs e Kubernetes.

O que mudou — e por que isso importa

Até a versão 18.10, a equipe do GitLab Engineering resolveu os dois maiores gargalos técnicos que impediam a execução nativa em K8s.

Isolamento de processos Git via cgroups

O containerd não expõe o sistema de cgroups de forma completa para containers comuns. Para que o Gitaly gerencie corretamente o isolamento de processos Git — fundamental para segurança e performance — um init container monta /sys/fs/cgroup com as opções corretas antes do Gitaly iniciar.

Mecanismo de retry inteligente no cliente Rails

Quando um Pod do Gitaly é reiniciado (upgrade, eviction, etc.), o cliente Rails automaticamente retenta a operação. Isso garante zero downtime em operações como clone, fetch e push, desde que o número de réplicas seja maior que 1.

“Nenhuma requisição é perdida — graças à lógica de retry embutida no Rails.”

O resultado? Uma operação transparente que elimina a necessidade de gerenciar um parque separado de VMs.

Benchmarks que falam por si

Para validar a abordagem, a equipe do GitLab executou testes controlados de upgrade do cluster K8s, comparando as taxas de sucesso com um ambiente de VMs tradicional.

Operação VM Kubernetes
git clone 100% 100%
git pull 100% 99,16%
git push 99,66% 100%

Os números mostram equivalência prática entre os dois ambientes, mesmo durante o momento mais crítico — a atualização dos Pods. A pequena degradação no git pull (99,16%) é atribuída à latência adicional dos retries do cliente, um custo aceitável para ganhar resiliência em malhas dinâmicas.

Nota técnica: Durante upgrades, o Gitaly em K8s pode apresentar latência ligeiramente maior nas primeiras requisições após a substituição de Pods, mas nenhuma requisição é perdida.

Implicações técnicas: como funciona por baixo dos panos

1. Cgroups e o init container

O init container monta /sys/fs/cgroup com as opções corretas, contornando as limitações do containerd. Isso garante isolamento adequado dos processos Git, essencial para segurança e performance.

2. Retry do cliente

Quando um Pod do Gitaly é reiniciado, o cliente Rails automaticamente retenta a operação. Isso garante zero downtime em operações como clone, fetch e push, desde que o número de réplicas seja maior que 1.

3. Ausência de suporte para Gitaly Cluster (HA)

O componente de alta disponibilidade do Gitaly Cluster — o Praefect — ainda não é suportado em Kubernetes. Para cenários que exigem replicação síncrona e failover automático, a recomendação oficial permanece usar VMs.

✅ Perfeito para: ambientes com single-node Gitaly ou replicação assíncrona.

❌ Não indicado para: workloads que exigem HA com zero perda de dados (enquanto o suporte ao Praefect não chega).

O que isso significa para o mercado de DevOps

Consolidação total da stack

Equipes que já operam GitLab em Kubernetes podem remover completamente as VMs dedicadas ao Gitaly. Isso reduz custos de infraestrutura, simplifica o monitoramento (um único cluster, um único pipeline de upgrade) e elimina a complexidade de manter duas plataformas distintas.

Atração de novos usuários cloud‑native

A barreira para adotar GitLab em ambientes Kubernetes acaba de cair. Startups e empresas que já investem em K8s como padrão agora podem ter um GitLab totalmente nativo, sem precisar de conhecimento especializado em VMs.

Aceleração da adoção de GitLab

Com a promessa de desempenho equivalente e operação simplificada, o GitLab se torna ainda mais atraente para times que priorizam infraestrutura como código e GitOps.

Visualização da stack GitLab consolidada em um único cluster Kubernetes

Limitações e riscos a considerar

  • Gitaly Cluster (Praefect) ainda não suportado. Se sua arquitetura exige alta disponibilidade com replicação síncrona, aguarde.
  • Latência adicional durante upgrades. Os retries adicionam alguns milissegundos; em workloads extremamente sensíveis, pode ser perceptível.
  • Configuração correta de cgroups. A montagem via init container precisa ser feita exatamente como documentado; erros podem causar falhas de isolamento.

Recomendação: Para ambientes de produção que não exigem HA síncrona, a migração pode começar agora. Para cenários com Praefect, aguarde a próxima release.

Visão Metatron

O GA do Gitaly no Kubernetes representa um marco na democratização da infraestrutura Git em ambientes cloud‑native. Não se trata apenas de mover um workload para containers — é a eliminação de uma ponte híbrida que forçava times a dominar duas plataformas.

Acreditamos que, nos próximos seis meses, veremos:

  • O surgimento de Helm charts otimizados para Gitaly, com tuning automático de cgroups.
  • A rápida adoção por plataformas de DevOps que já usam GitLab e K8s como padrão.
  • A chegada do suporte ao Gitaly Cluster em K8s, fechando o ciclo para HA.

Resumo prático: Para equipes que buscam simplicidade operacional sem abrir mão de performance, este é o momento de migrar. O futuro do GitLab em Kubernetes é sólido — e já chegou.

Quer testar na prática? Acesse a documentação oficial do GitLab 18.11 e configure seu primeiro Gitaly nativo em K8s hoje mesmo.