KubeDiagrams – Como gerar diagramas das suas arquiteturas Kubernetes

KubeDiagrams – Como gerar diagramas das suas arquiteturas Kubernetes

Se você é um Engenheiro, Analista, Consultor, Operador ou qualquer outro cargo que o valha das carreiras DevOps, certamente já efetuou um deploy de uma aplicação super complexa, com vários componentes de software e de infraestrutura abstraídos em um diretório cheio de arquivos de manifestos Yaml ou um Chart do Helm. Também certamente, fez isso com um comando curto e mais rápido do que soletrar a palavra cabalística parangaricutirimírruaro.

Quando se lida com aplicações ultra-modernas, desenvolvidas para se utilizarem de toda a pilha de tecnologias cloud-native, muitas das vezes o processo de implantação é simplificado. Devido a todas as abstrações envolvidas em ambientes como clusteres Kubernetes, o processo de visualização e documentação das camadas que envolvem a implantação destas aplicações já não é tão simples assim. Para amenizar essa dor, habemus KubeDiagrams.

O KubeDiagrams é uma ferramenta simples e inovadora que está transformando a forma como os profissionais de tecnologia conseguem visualizar e compreender suas arquiteturas Kubernetes. Desenvolvida por Philippe Merle, essa solução open-source tem ganhado cada vez mais visibilidade pela sua funcionalidade, simplicidade e facilidade de uso.

Desenvolvida sobre um código Python, o KubeDiagrams gera automaticamente diagramas de arquitetura Kubernetes a partir de diversos tipos de entrada como arquivos de manifesto Yaml, arquivos do kustomize, charts Helm, Helmfile Descriptors e até mesmo do estado atual de clusters em produção.

Abaixo temos um diagrama de exemplo da arquitetura do tutorial oficial de WordPress e MySQL na documentação do Kubernetes:

Mesmo simples, o KubeDiagrams possui um suporte abrangente de Recursos como a maioria dos recursos built-in do Kubernetes (47 tipos suportados), compatibilidade com qualquer recurso customizado do Kubernetes (como ArgoCD, Cert-Manager, Istio e Prometheus) e mapeamento dos relacionamentos entre os recursos do cluster Kubernetes.

Além do já mencionado suporte a múltiplos formatos de entrada o KubeDiagrams também oferece suporte a diversos formatos de saída como arquivos DOT, GIF, JPEG, PDF, PNG, SVG e TIFF além de uma extensa coleção de exemplos em sua documentação para facilitar o aprendizado da ferramenta.

Hands-On – Instalação do KubeDiagrams

O KubeDiagrams pode ser instalado de múltiplas formas para atender diferentes necessidades como através de um container Docker:

docker pull philippemerle/kubediagrams

E também pode ser usado como plugin nativo do kubectl, permitindo comandos como:

kubectl diagrams all -o diagram.png

Outras Opções também incluem utilização através de Pacote Nix, ação do GitHub Action para integração de CI/CD ou instalação direta do código-fonte. Vamos instalar o KubeDiagrams através do PIP:

pip install KubeDiagrams

Recomenda-se atenção ao path de instalação dos scripts. Enquanto realizava os testes, meus scripts foram instalados pelo pip em `$HOME/.local/bin` sendo necessário a adição do diretório à variável PATH conforme abaixo:

export PATH="$HOME/.local/bin:$PATH"

Uma vez instalado o KubeDiagrams, a ferramenta irá prover dois comandos nativos: kube-diagrams e helm-diagrams.

O Comando kube-diagrams é capaz de gerar diagramas arquiteturais de um ou vários arquivos de manifestos.

Aqui temos alguns exemplos gerando um diagrama de um único arquivo de manifesto:

kube-diagrams -o cassandra.png examples/cassandra/cassandra.yml

Gerando um diagrama de um diretório do Kustomize:

kubectl kustomize path_to_a_kustomize_folder | kube-diagrams - -o diagram.png

Gerando um diagrama de um Helmfile descriptor:

helmfile template -f helmfile.yaml | kube-diagrams - -o diagram.png

Gerando um diagrama do estado atual do namespace default:

kubectl get all -o yaml | kube-diagrams -o default-namespace.png -

Gerando um diagrama de todas as cargas de trabalho e serviços de todos os namespaces:

kubectl get all --all-namespaces -o yaml | kube-diagrams -o all-namespaces.png -

Já o comando helm-diagrams é capaz de gerar diagramas arquiteturais de Charts do Helm locais ou remotos porém depende que o binário do Helm já esteja instalado e pode ser utilizado para charts locais ou remotos:

Exemplo de como gerar um diagrama do Helm chart ‘cert-manager’ disponível no repositório HTTP ‘charts.jetstack.io’

helm-diagrams https://charts.jetstack.io/cert-manager

Exemplo de criação de diagrama do Helm chart do ‘argo-cd’ disponível no repositório OCI ‘ghcr.io’

helm-diagrams oci://ghcr.io/argoproj/argo-helm/argo-cd

Já para um Helm chart ‘meu-chart’ disponível localmente

helm-diagrams meu-path/meu-chart

Deploy da aplicação e geração do Diagrama

Neste artigo iremos utilizar como exemplo de um ambiente de produção, a instalação via Helm Chart da Boutique Online, uma aplicação para exeplo de funcionamento de microsserviços do Google. A Boutique Online é uma demonstração de microsserviços, que se comunicam através de chamadas gRPC, projetada para a nuvem. A aplicação é um e-commerce baseado na web, onde os usuários podem navegar pelos itens, adicioná-los ao carrinho e simular a realização de compras.

O Google utiliza esta aplicação para demonstrar como os desenvolvedores podem modernizar aplicações corporativas usando produtos do Google Cloud, incluindo: Google Kubernetes Engine (GKE), Cloud Service Mesh (CSM), gRPC, Cloud Operations, Spanner, Memorystore, AlloyDB e Gemini. Esta aplicação funciona em qualquer cluster Kubernetes.

Vamos realizar o deploy da nossa Boutique Online em um cluster do Kind – Kubernetes In Docker. Caso tenha alguma dúvida sobre como utilizar o Kind, aqui mesmo no blog da 4Linux temos um excelente tutorial de instalação da ferramenta no artigo Kubernetes – Criando um cluster local com Kind.

helm upgrade onlineboutique oci://us-docker.pkg.dev/online-boutique-ci/charts/onlineboutique --install --namespace=online-boutique -- create-namespace

Agora que temos nossa aplicação podemos gerar o nosso diagrama de duas formas:

Utilizando o helm-diagrams para gerar o diagrama do Chart remoto (antes da instalação):

helm-diagrams oci://us-docker.pkg.dev/online-boutique-ci/charts/onlineboutique -o online-boutique-remote-chart.png

Podemos também gerar o nosso diagrama través do plugin diagrams para o kubectl. Neste exemplo vamos gerar um diagrama de todos os recursos no nosso namespace online-boutique, que criamos ao aplicar o Helm Chart da Boutique Online:

kubectl get all -n online-boutique -o yaml | kube-diagrams -o online-boutique.png -

Conclusão

O KubeDiagrams representa uma revolução na forma como documentamos e comunicamos arquiteturas Kubernetes, especialmente a times não técnicos. Ao automatizar a geração de diagramas visuais precisos e atualizados, elimina-se um dos maiores desafios enfrentados por equipes DevOps: manter a documentação técnica sincronizada com a realidade dos ambientes em produção.

Mais do que uma ferramenta de visualização, o KubeDiagrams é um catalisador para melhor colaboração entre equipes, documentações mais eficazes e compreensão arquitetural aprimorada – elementos fundamentais para o sucesso de qualquer iniciativa cloud-native moderna.

Fontes:

  • https://github.com/philippemerle/KubeDiagrams
  • https://kubernetes.io/docs/home/
  • https://github.com/GoogleCloudPlatform/microservices-demo

Anterior Backups Lógicos rápidos? pg_dump e pg_restore com Paralelismo no PostgreSQL
Próxima IA para maiores - Amazon aponta a direção do não-emprego

About author

Você pode gostar também