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/kubediagramsE também pode ser usado como plugin nativo do kubectl, permitindo comandos como:
kubectl diagrams all -o diagram.pngOutras 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 KubeDiagramsRecomenda-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.ymlGerando um diagrama de um diretório do Kustomize:
kubectl kustomize path_to_a_kustomize_folder | kube-diagrams - -o diagram.pngGerando um diagrama de um Helmfile descriptor:
helmfile template -f helmfile.yaml | kube-diagrams - -o diagram.pngGerando 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-managerExemplo 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-cdJá para um Helm chart ‘meu-chart’ disponível localmente
helm-diagrams meu-path/meu-chartDeploy 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-namespaceAgora 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.pngPodemos 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
About author
Você pode gostar também
Guia Rápido: Como Fazer Deploy de uma API Python na Cloud Usando Containers
Está aprendendo a programar e gostaria e publicar sua primeira aplicação? Neste post faremos o deploy de uma API python em cloud de maneira simples e rápida utilizando containers!
Tutorial: Configurando o Traefik no Docker Swarm com arquivos YAML
Neste tutorial, você aprenderá como configurar o Traefik no Docker Swarm usando arquivos YAML, uma forma fácil e eficiente de gerenciar seus aplicativos de contêineres em larga escala. Ao seguir
Curso 4Linux: Domine a orquestração de microsserviços em nuvem!
Quer se tornar mestre na orquestração de microsserviços nas duas maiores plataformas de nuvem, Google Cloud e Amazon Web Services? Temos o curso perfeito para você! A 4Linux acaba de













