<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Magalu Cloud</title>
    <description>The latest articles on Forem by Magalu Cloud (@magalu_cloud).</description>
    <link>https://forem.com/magalu_cloud</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3435910%2F69a34646-650a-4ef8-8d43-12cd44a3d4b6.png</url>
      <title>Forem: Magalu Cloud</title>
      <link>https://forem.com/magalu_cloud</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/magalu_cloud"/>
    <language>en</language>
    <item>
      <title>Regiões e Zonas de Disponibilidade na Magalu Cloud: como pensar resiliência desde o início</title>
      <dc:creator>Magalu Cloud</dc:creator>
      <pubDate>Fri, 30 Jan 2026 16:30:39 +0000</pubDate>
      <link>https://forem.com/magalucloud/regioes-e-zonas-de-disponibilidade-na-magalu-cloud-como-pensar-resiliencia-desde-o-inicio-3lmj</link>
      <guid>https://forem.com/magalucloud/regioes-e-zonas-de-disponibilidade-na-magalu-cloud-como-pensar-resiliencia-desde-o-inicio-3lmj</guid>
      <description>&lt;p&gt;Ao criar uma aplicação na nuvem, é comum focar primeiro no código, no sistema operacional ou no tipo de máquina virtual. No entanto, muitas indisponibilidades em produção não estão ligadas à aplicação em si, mas à forma como a infraestrutura foi planejada.&lt;/p&gt;

&lt;p&gt;Pensar em &lt;strong&gt;resiliência desde o início&lt;/strong&gt; significa entender onde seus recursos estão rodando fisicamente e como eles se comportam diante de falhas. Na &lt;a href="https://magalu.cloud/?utm_source=site&amp;amp;utm_medium=organico&amp;amp;utm_campaign=artigos+comunidade&amp;amp;utm_id=artigos+comunidade" rel="noopener noreferrer"&gt;Magalu Cloud&lt;/a&gt;, esse planejamento começa com dois conceitos fundamentais: &lt;strong&gt;Regiões&lt;/strong&gt; e &lt;strong&gt;Zonas de Disponibilidade (Availability Zones)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Neste artigo, você vai entender como esses conceitos funcionam na prática e, ao final, aplicar esse conhecimento em um &lt;strong&gt;hands-on técnico&lt;/strong&gt;, criando uma VM já preparada para cenários de falha e recuperação.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conceito
&lt;/h2&gt;

&lt;p&gt;Uma &lt;strong&gt;Região&lt;/strong&gt; é uma área geográfica que concentra um ou mais datacenters. Na Magalu Cloud, as regiões estão localizadas no Brasil, o que garante menor latência, conformidade com a legislação nacional e maior previsibilidade operacional.&lt;/p&gt;

&lt;p&gt;Dentro de cada região existem as &lt;strong&gt;Zonas de Disponibilidade (AZs)&lt;/strong&gt;. Cada AZ é um ambiente físico independente, com energia, refrigeração e conectividade próprias. Mesmo estando na mesma região, as zonas são isoladas entre si para reduzir o impacto de falhas físicas ou operacionais.&lt;/p&gt;

&lt;p&gt;De forma simples, a região define &lt;em&gt;onde&lt;/em&gt; sua aplicação está localizada, enquanto as zonas definem &lt;em&gt;como&lt;/em&gt; ela pode se manter disponível mesmo quando algo não sai como esperado.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quando pensar em Zonas de Disponibilidade
&lt;/h2&gt;

&lt;p&gt;A escolha correta de região e zona é especialmente importante quando:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sua aplicação não pode ficar indisponível por longos períodos&lt;/li&gt;
&lt;li&gt;Você quer reduzir o impacto de falhas de infraestrutura&lt;/li&gt;
&lt;li&gt;O ambiente tende a crescer com o tempo&lt;/li&gt;
&lt;li&gt;Existe necessidade de recuperação rápida após erros ou manutenções&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mesmo em projetos pequenos ou ambientes de teste, entender essas decisões desde o início evita retrabalho e limitações futuras.&lt;/p&gt;




&lt;h2&gt;
  
  
  Como funciona na Magalu Cloud
&lt;/h2&gt;

&lt;p&gt;Na Magalu Cloud, cada recurso é criado dentro de uma &lt;strong&gt;Zona de Disponibilidade específica&lt;/strong&gt;. Máquinas virtuais, por exemplo, pertencem a uma única AZ, assim como seus volumes de Block Storage, que precisam estar obrigatoriamente na mesma zona da VM.&lt;/p&gt;

&lt;p&gt;Isso significa que, se uma aplicação estiver concentrada em apenas uma AZ, ela ficará indisponível caso aquela zona enfrente problemas. Por outro lado, serviços como Object Storage já contam com &lt;strong&gt;replicação automática entre zonas&lt;/strong&gt;, oferecendo maior durabilidade sem configuração adicional.&lt;/p&gt;

&lt;p&gt;Essa diferença de comportamento entre os serviços é o que orienta as estratégias de resiliência.&lt;/p&gt;




&lt;h2&gt;
  
  
  Hands-on: criando uma VM resiliente desde o início
&lt;/h2&gt;

&lt;p&gt;Para tornar esse conceito mais prático, vamos construir um cenário simples, mas extremamente comum: &lt;strong&gt;uma VM única, criada de forma consciente, com um plano claro de recuperação&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Passo 1: identificar as Zonas de Disponibilidade disponíveis
&lt;/h3&gt;

&lt;p&gt;Antes de criar qualquer recurso, é importante saber quais AZs estão disponíveis para sua conta. Isso pode ser feito via CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mgc profile availability-zones list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O resultado mostrará as zonas disponíveis na região, como &lt;code&gt;br-se1-a&lt;/code&gt;, &lt;code&gt;br-se1-b&lt;/code&gt; e &lt;code&gt;br-se1-c&lt;/code&gt;. Esse passo é essencial, pois nem todos os serviços estão disponíveis em todas as zonas.&lt;/p&gt;




&lt;h3&gt;
  
  
  Passo 2: criar a VM em uma Zona de Disponibilidade específica
&lt;/h3&gt;

&lt;p&gt;Ao criar a VM pelo Console da Magalu Cloud, selecione explicitamente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A região desejada&lt;/li&gt;
&lt;li&gt;Uma Zona de Disponibilidade específica&lt;/li&gt;
&lt;li&gt;Uma imagem Linux oficial&lt;/li&gt;
&lt;li&gt;Uma chave SSH para acesso&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nesse momento, a VM passa a existir fisicamente dentro daquela AZ. Essa decisão é importante porque define o nível inicial de resiliência da aplicação.&lt;/p&gt;




&lt;h3&gt;
  
  
  Passo 3: acessar a VM e validar o ambiente
&lt;/h3&gt;

&lt;p&gt;Após a criação, acesse a VM via SSH:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh usuario@ip-publico-da-vm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dentro da VM, crie um arquivo simples para representar o estado da aplicação:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"VM criada na AZ br-se1-a"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; ambiente.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse arquivo servirá como referência para validar a recuperação posteriormente.&lt;/p&gt;




&lt;h3&gt;
  
  
  Passo 4: criar um snapshot como ponto de recuperação
&lt;/h3&gt;

&lt;p&gt;Com a VM funcionando corretamente, crie um &lt;strong&gt;snapshot do disco&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Esse snapshot representa um estado conhecido e seguro da aplicação. Mais do que um backup, ele se torna um &lt;strong&gt;ponto estratégico de recuperação&lt;/strong&gt;, permitindo recriar a VM rapidamente em caso de falhas, erros de configuração ou indisponibilidade da zona original.&lt;/p&gt;




&lt;h3&gt;
  
  
  Passo 5: recriar a VM a partir do snapshot em outra AZ
&lt;/h3&gt;

&lt;p&gt;Agora vem o ponto-chave do hands-on. A partir do snapshot criado, crie uma nova VM escolhendo &lt;strong&gt;outra Zona de Disponibilidade da mesma região&lt;/strong&gt; e utilize o snapshot como base do disco.&lt;/p&gt;

&lt;p&gt;Após acessar a nova VM via SSH, valide o conteúdo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat &lt;/span&gt;ambiente.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se o arquivo estiver presente, você confirmou na prática que o ambiente pôde ser recriado com sucesso em outra AZ, reduzindo a dependência de um único ponto físico.&lt;/p&gt;




&lt;h2&gt;
  
  
  O que esse hands-on demonstra
&lt;/h2&gt;

&lt;p&gt;Ao final desse exercício, fica claro que:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Zonas de Disponibilidade impactam diretamente a arquitetura&lt;/li&gt;
&lt;li&gt;Uma VM em uma única AZ é funcional, mas vulnerável&lt;/li&gt;
&lt;li&gt;Snapshots são fundamentais para recuperação e continuidade&lt;/li&gt;
&lt;li&gt;Resiliência pode ser pensada desde o primeiro recurso criado&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tudo isso sem exigir arquiteturas complexas ou serviços adicionais.&lt;/p&gt;




&lt;h2&gt;
  
  
  Boas práticas e cuidados
&lt;/h2&gt;

&lt;p&gt;Ao planejar sua infraestrutura, sempre verifique previamente as AZs disponíveis e a compatibilidade dos serviços. Para máquinas virtuais, trate snapshots como parte do desenho da arquitetura, e não como um recurso opcional.&lt;/p&gt;

&lt;p&gt;Lembre-se também de que volumes de Block Storage precisam estar na mesma AZ da VM, enquanto dados que exigem maior durabilidade podem se beneficiar do uso de Object Storage, que já possui replicação automática entre zonas.&lt;/p&gt;

&lt;p&gt;Essas decisões simples, quando tomadas desde o início, aumentam significativamente a confiabilidade do ambiente.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;Regiões e Zonas de Disponibilidade são pilares fundamentais para construir aplicações resilientes na Magalu Cloud. Entender como esses conceitos funcionam e aplicá-los desde o primeiro recurso criado permite reduzir riscos, facilitar a recuperação e preparar o ambiente para crescer com segurança.&lt;/p&gt;

&lt;p&gt;Pensar resiliência desde o início não significa complicar a arquitetura, mas sim fazer escolhas conscientes que farão diferença quando sua aplicação realmente precisar.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>cloud</category>
      <category>devops</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>Acessando e protegendo sua VM: SSH, snapshots e boas práticas iniciais</title>
      <dc:creator>Magalu Cloud</dc:creator>
      <pubDate>Fri, 23 Jan 2026 18:44:54 +0000</pubDate>
      <link>https://forem.com/magalucloud/acessando-e-protegendo-sua-vm-ssh-snapshots-e-boas-praticas-iniciais-1iph</link>
      <guid>https://forem.com/magalucloud/acessando-e-protegendo-sua-vm-ssh-snapshots-e-boas-praticas-iniciais-1iph</guid>
      <description>&lt;p&gt;Criar uma máquina virtual é apenas o primeiro passo para rodar aplicações na nuvem. Logo após o provisionamento, surgem duas necessidades fundamentais: &lt;strong&gt;acessar a VM com segurança&lt;/strong&gt; e &lt;strong&gt;garantir proteção contra falhas, erros ou perdas de dados&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Na &lt;a href="https://magalu.cloud/?utm_source=site&amp;amp;utm_medium=organico&amp;amp;utm_campaign=artigos+comunidade&amp;amp;utm_id=artigos+comunidade" rel="noopener noreferrer"&gt;Magalu Cloud&lt;/a&gt;, esses dois pontos são atendidos de forma nativa por meio do uso de &lt;strong&gt;chaves SSH&lt;/strong&gt; para acesso seguro e &lt;strong&gt;snapshots&lt;/strong&gt; para recuperação rápida. Combinados a algumas boas práticas iniciais, esses recursos ajudam a criar um ambiente mais confiável desde o primeiro dia.&lt;/p&gt;

&lt;p&gt;Neste artigo, você vai entender como acessar sua VM via SSH, como e por que usar snapshots e quais cuidados iniciais adotar para proteger seu ambiente.&lt;/p&gt;




&lt;h2&gt;
  
  
  Acesso seguro a VMs
&lt;/h2&gt;

&lt;p&gt;Em ambientes Linux, o acesso remoto a uma máquina virtual é feito via &lt;strong&gt;SSH (Secure Shell)&lt;/strong&gt;. Diferente do uso de senhas, o SSH utiliza &lt;strong&gt;criptografia por chave pública e privada&lt;/strong&gt;, reduzindo drasticamente o risco de acessos não autorizados.&lt;/p&gt;

&lt;p&gt;Na Magalu Cloud, o acesso inicial às VMs Linux é realizado exclusivamente por &lt;strong&gt;chaves SSH&lt;/strong&gt;, sem senhas padrão embutidas no sistema.&lt;/p&gt;




&lt;h2&gt;
  
  
  Proteção do estado da máquina
&lt;/h2&gt;

&lt;p&gt;Já os &lt;strong&gt;snapshots&lt;/strong&gt; funcionam como uma “fotografia” do estado atual de uma VM ou de um volume de armazenamento. Eles permitem restaurar o ambiente exatamente como estava em um determinado momento, sendo fundamentais para:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recuperação após falhas&lt;/li&gt;
&lt;li&gt;Reversão de alterações problemáticas&lt;/li&gt;
&lt;li&gt;Criação de ambientes clonados&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Acesso via SSH
&lt;/h2&gt;

&lt;p&gt;Durante a criação de uma VM Linux na Magalu Cloud, você define uma &lt;strong&gt;chave SSH&lt;/strong&gt;, que pode ser:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gerada no próprio processo de criação da instância&lt;/li&gt;
&lt;li&gt;Reutilizada a partir de uma chave já existente na sua conta&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essa chave pública é automaticamente configurada na VM por meio do &lt;code&gt;cloud-init&lt;/code&gt;, permitindo que apenas quem possui a chave privada correspondente consiga acessar o servidor.&lt;/p&gt;

&lt;p&gt;Após a VM estar em execução, o acesso é feito diretamente pelo terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh usuario@ip-publico-da-vm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O nome do usuário depende da imagem escolhida (por exemplo, &lt;code&gt;ubuntu&lt;/code&gt; em imagens Ubuntu).&lt;/p&gt;




&lt;h2&gt;
  
  
  Snapshots de máquinas virtuais
&lt;/h2&gt;

&lt;p&gt;Os snapshots podem ser criados a partir do disco da VM ou de volumes de Block Storage associados. Eles capturam o estado do disco no momento da criação e ficam disponíveis para restauração posterior.&lt;/p&gt;

&lt;p&gt;Na prática, os snapshots permitem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Restaurar uma VM após falha ou erro humano&lt;/li&gt;
&lt;li&gt;Criar uma nova VM baseada em um estado conhecido&lt;/li&gt;
&lt;li&gt;Preservar um ponto seguro antes de mudanças importantes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Os snapshots são especialmente importantes em ambientes criados em uma única Zona de Disponibilidade, pois facilitam a recuperação rápida em caso de problemas.&lt;/p&gt;




&lt;h2&gt;
  
  
  Exemplo prático
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Fluxo recomendado após criar uma VM
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Criar a VM definindo uma chave SSH&lt;/li&gt;
&lt;li&gt;Acessar a VM via SSH a partir do seu computador&lt;/li&gt;
&lt;li&gt;Aplicar atualizações básicas do sistema operacional&lt;/li&gt;
&lt;li&gt;Criar um snapshot inicial da VM&lt;/li&gt;
&lt;li&gt;Prosseguir com a instalação de aplicações e serviços&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Esse snapshot inicial funciona como um “ponto de retorno” limpo e confiável.&lt;/p&gt;




&lt;h2&gt;
  
  
  Boas práticas e cuidados
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Acesso e autenticação
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Utilize sempre chaves SSH fortes e protegidas&lt;/li&gt;
&lt;li&gt;Nunca compartilhe sua chave privada&lt;/li&gt;
&lt;li&gt;Evite conceder acesso desnecessário a usuários da conta&lt;/li&gt;
&lt;li&gt;Revise periodicamente as permissões de acesso&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Snapshots e recuperação
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Crie snapshots antes de qualquer atualização crítica&lt;/li&gt;
&lt;li&gt;Mantenha snapshots periódicos em ambientes importantes&lt;/li&gt;
&lt;li&gt;Não dependa de um único snapshot antigo&lt;/li&gt;
&lt;li&gt;Combine snapshots com uma estratégia de organização e limpeza&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Segurança inicial da VM
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Atualize o sistema logo após o primeiro acesso&lt;/li&gt;
&lt;li&gt;Remova serviços que não serão utilizados&lt;/li&gt;
&lt;li&gt;Limite a exposição de portas de rede apenas ao necessário&lt;/li&gt;
&lt;li&gt;Utilize VPC e regras de segurança para isolar o ambiente&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essas práticas reduzem a superfície de ataque e aumentam a estabilidade do ambiente.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;A segurança e a confiabilidade de uma máquina virtual começam nos primeiros minutos após sua criação. Ao utilizar &lt;strong&gt;chaves SSH para acesso seguro&lt;/strong&gt;, &lt;strong&gt;snapshots para proteção do estado da VM&lt;/strong&gt; e &lt;strong&gt;boas práticas iniciais&lt;/strong&gt;, você constrói uma base sólida para suas aplicações na Magalu Cloud.&lt;/p&gt;

&lt;p&gt;Esses recursos, aliados à infraestrutura local no Brasil, preços em reais e suporte em português, permitem que desenvolvedores tenham controle, previsibilidade e tranquilidade desde o início do projeto.&lt;/p&gt;

&lt;p&gt;Antes de avançar para configurações mais complexas, garantir esse básico bem feito faz toda a diferença no dia a dia.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>cloud</category>
      <category>magalucloud</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Máquinas virtuais na Magalu Cloud: conceitos essenciais e criação</title>
      <dc:creator>Magalu Cloud</dc:creator>
      <pubDate>Thu, 15 Jan 2026 19:23:18 +0000</pubDate>
      <link>https://forem.com/magalucloud/maquinas-virtuais-na-magalu-cloud-conceitos-essenciais-e-criacao-296k</link>
      <guid>https://forem.com/magalucloud/maquinas-virtuais-na-magalu-cloud-conceitos-essenciais-e-criacao-296k</guid>
      <description>&lt;p&gt;&lt;a href="https://docs.magalu.cloud/docs/computing/virtual-machine/overview?utm_source=site&amp;amp;utm_medium=organico&amp;amp;utm_campaign=artigos+comunidade+documentacao&amp;amp;utm_id=artigos+comunidade+documentacao" rel="noopener noreferrer"&gt;Máquinas virtuais&lt;/a&gt; (VMs) são a base da computação em nuvem para execução de aplicações, serviços e ambientes de desenvolvimento com isolamento, previsibilidade e controle total do sistema operacional.&lt;/p&gt;

&lt;p&gt;Na &lt;a href="https://magalu.cloud/?utm_source=site&amp;amp;utm_medium=organico&amp;amp;utm_campaign=artigos+comunidade&amp;amp;utm_id=artigos+comunidade" rel="noopener noreferrer"&gt;Magalu Cloud&lt;/a&gt;, a criação de VMs é feita por meio de uma interface gráfica simples e objetiva no Console, permitindo que desenvolvedores configurem todos os aspectos essenciais da instância como sistema operacional, capacidade de processamento, rede e acesso em poucos passos.&lt;/p&gt;

&lt;p&gt;Neste artigo, você vai entender os conceitos fundamentais por trás das VMs e acompanhar, passo a passo, como criar uma VM Linux usando a interface de criação de instâncias.&lt;/p&gt;




&lt;h2&gt;
  
  
  O que são máquinas virtuais?
&lt;/h2&gt;

&lt;p&gt;Uma máquina virtual é um servidor definido por software que executa sobre a infraestrutura física da nuvem. Ela funciona como um computador completo, com recursos dedicados e isolamento garantido, mesmo compartilhando o mesmo datacenter com outras VMs.&lt;/p&gt;

&lt;p&gt;Cada VM possui:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sistema operacional próprio (Linux ou Windows)&lt;/li&gt;
&lt;li&gt;vCPUs (processadores virtuais)&lt;/li&gt;
&lt;li&gt;Memória RAM dedicada&lt;/li&gt;
&lt;li&gt;Disco de armazenamento&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esse modelo permite criar e remover servidores sob demanda, ajustando recursos conforme a necessidade da aplicação. &lt;/p&gt;

&lt;p&gt;Na Magalu Cloud, a criação de uma VM é feita a partir de imagens, que são modelos prontos de sistemas operacionais mantidos pela plataforma. Essas imagens já vêm preparadas para inicialização automática e configuração inicial.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quando usar máquinas virtuais?
&lt;/h2&gt;

&lt;p&gt;As máquinas virtuais são indicadas quando é necessário controle total sobre o sistema operacional e previsibilidade de recursos, sendo adequadas para executar aplicações web, APIs, serviços de back-end e sistemas legados.&lt;/p&gt;

&lt;p&gt;Elas também são uma boa escolha para ambientes de desenvolvimento, teste e homologação, além de cenários que exigem isolamento entre aplicações e integração direta com recursos de computação, armazenamento e conectividade da nuvem.&lt;/p&gt;




&lt;h2&gt;
  
  
  Criando uma VM Linux no Console
&lt;/h2&gt;

&lt;p&gt;A seguir, vamos percorrer cada seção da tela Criar instância, considerando a interface apresentada no Console da Magalu Cloud.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Escolha da zona de disponibilidade
&lt;/h3&gt;

&lt;p&gt;O primeiro passo é selecionar a Zona de Disponibilidade (AZ), como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;br-se1-a&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;br-se1-b&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;br-se1-c&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe6pun0ktm5y9cz55i6xv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe6pun0ktm5y9cz55i6xv.png" alt="Seleção de zona de disponibilidade" width="800" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A zona representa uma unidade física independente dentro da região. Para ambientes simples, qualquer zona disponível atende bem. Em arquiteturas mais avançadas, a distribuição de VMs entre zonas ajuda a aumentar a resiliência.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Escolha da imagem
&lt;/h3&gt;

&lt;p&gt;Na seção Escolha uma imagem, você define o sistema operacional da VM. A Magalu Cloud oferece imagens oficiais, prontas para uso, como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ubuntu&lt;/li&gt;
&lt;li&gt;Oracle Linux&lt;/li&gt;
&lt;li&gt;Rocky Linux&lt;/li&gt;
&lt;li&gt;Debian&lt;/li&gt;
&lt;li&gt;Fedora&lt;/li&gt;
&lt;li&gt;openSUSE&lt;/li&gt;
&lt;li&gt;Windows Server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft1piqg14p2bd7wg1ufnb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft1piqg14p2bd7wg1ufnb.png" alt="Seleção de imagens" width="800" height="218"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para este exemplo, selecione uma distribuição Linux, como Ubuntu. As imagens Linux utilizam cloud-init para aplicar automaticamente configurações iniciais, como a chave SSH.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. GPU (opcional)
&lt;/h3&gt;

&lt;p&gt;Caso a aplicação exija aceleração gráfica ou processamento para IA, é possível marcar a opção Habilitar GPU, sujeita à disponibilidade na zona selecionada.&lt;/p&gt;

&lt;p&gt;Se não houver essa necessidade, essa opção pode ser mantida desabilitada.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Escolha do tipo de instância
&lt;/h3&gt;

&lt;p&gt;Na seção Escolha um tipo de instância, as VMs são organizadas por perfil de memória e classe de performance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Low Memory&lt;/li&gt;
&lt;li&gt;Standard Memory&lt;/li&gt;
&lt;li&gt;High Memory&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cada opção exibe claramente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quantidade de vCPUs&lt;/li&gt;
&lt;li&gt;Memória RAM&lt;/li&gt;
&lt;li&gt;Valor por hora&lt;/li&gt;
&lt;li&gt;Estimativa mensal&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Por exemplo, um perfil equilibrado pode ser indicado para:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aplicações gerais&lt;/li&gt;
&lt;li&gt;Servidores web&lt;/li&gt;
&lt;li&gt;Ambientes de desenvolvimento e teste&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqmq6t3ajnqcna00oyrgt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqmq6t3ajnqcna00oyrgt.png" alt="Seleção de instância" width="800" height="284"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Também é possível ajustar o tamanho do disco local, como 10 GB, diretamente nessa etapa.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Conectividade e acesso público
&lt;/h3&gt;

&lt;p&gt;Na seção Conectividade, você define como a VM será acessada pela rede:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O IPv6 público é gerado automaticamente após a criação&lt;/li&gt;
&lt;li&gt;É possível marcar a opção Atribuir IPv4 público para essa instância, caso seja necessário acesso direto via internet&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7bdx0artm09zcq6oxz2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7bdx0artm09zcq6oxz2.png" alt="Seleção de IP" width="800" height="158"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Essa escolha depende do cenário da aplicação e dos requisitos de conectividade.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Chave SSH
&lt;/h3&gt;

&lt;p&gt;Para VMs Linux, o acesso é feito exclusivamente por chave SSH.&lt;/p&gt;

&lt;p&gt;Na seção Chave SSH, você pode:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Selecionar uma chave já utilizada anteriormente&lt;/li&gt;
&lt;li&gt;Inserir uma nova chave pública SSH&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F30ir1qicatxv9jad2kz2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F30ir1qicatxv9jad2kz2.png" alt="Seção de chave SSH" width="800" height="151"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Essa chave será configurada automaticamente no sistema operacional durante a inicialização da VM. Não há senha padrão para acesso.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Nome da instância
&lt;/h3&gt;

&lt;p&gt;Por fim, informe o Nome da instância, seguindo as regras indicadas no Console:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Entre 3 e 50 caracteres&lt;/li&gt;
&lt;li&gt;Letras minúsculas, números, hífen (-) e underline (_)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esse nome ajuda na organização e identificação das VMs no ambiente.&lt;/p&gt;

&lt;p&gt;Após preencher todos os campos obrigatórios, clique em Criar instância. A Magalu Cloud inicia automaticamente o provisionamento da VM, que em poucos minutos estará pronta para uso.&lt;/p&gt;




&lt;h2&gt;
  
  
  Boas práticas e cuidados
&lt;/h2&gt;

&lt;p&gt;Ao trabalhar com VMs na Magalu Cloud, priorize o uso de chaves SSH seguras, escolha tipos de instância compatíveis com a carga da aplicação e utilize snapshots antes de alterações relevantes no sistema.&lt;/p&gt;

&lt;p&gt;Também é importante limitar o acesso de rede ao mínimo necessário e revisar periodicamente as instâncias em execução, removendo recursos ociosos para manter o ambiente seguro, organizado e com custos sob controle.&lt;/p&gt;




&lt;p&gt;As VMs da Magalu Cloud oferecem uma base sólida para executar aplicações com controle, simplicidade e previsibilidade. A interface de criação de instâncias foi pensada para guiar o desenvolvedor por todas as decisões técnicas essenciais, sem complexidade desnecessária.&lt;/p&gt;

&lt;p&gt;Ao entender cada etapa da criação de uma VM Linux, você ganha autonomia para montar ambientes confiáveis, escaláveis e alinhados às necessidades reais da sua aplicação, aproveitando uma infraestrutura local, com preços em reais e suporte próximo do ecossistema brasileiro.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>cloud</category>
      <category>cloudcomputing</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>O que é a Magalu Cloud e como usar o Console e a CLI no dia a dia</title>
      <dc:creator>Magalu Cloud</dc:creator>
      <pubDate>Thu, 08 Jan 2026 19:01:16 +0000</pubDate>
      <link>https://forem.com/magalucloud/o-que-e-a-magalu-cloud-e-como-usar-o-console-e-a-cli-no-dia-a-dia-4l63</link>
      <guid>https://forem.com/magalucloud/o-que-e-a-magalu-cloud-e-como-usar-o-console-e-a-cli-no-dia-a-dia-4l63</guid>
      <description>&lt;p&gt;A computação em nuvem deixou de ser um tema restrito a grandes empresas e passou a fazer parte do cotidiano de desenvolvedores, startups e times técnicos de todos os tamanhos. Nesse contexto, não basta saber &lt;em&gt;o que é&lt;/em&gt; nuvem: é fundamental entender &lt;strong&gt;como uma plataforma funciona na prática&lt;/strong&gt; e &lt;strong&gt;como interagir com ela no dia a dia&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Neste artigo, você vai conhecer a &lt;strong&gt;&lt;a href="https://magalu.cloud/?utm_source=site&amp;amp;utm_medium=organico&amp;amp;utm_campaign=artigos+comunidade&amp;amp;utm_id=artigos+comunidade" rel="noopener noreferrer"&gt;Magalu Cloud&lt;/a&gt;&lt;/strong&gt;, entender seu posicionamento como nuvem pública brasileira e aprender, de forma prática, como trabalhar com a plataforma usando o &lt;strong&gt;Console&lt;/strong&gt; e a &lt;strong&gt;CLI&lt;/strong&gt;. Ao final, a ideia é simples: você deve saber onde está, como navegar e como executar ações básicas com segurança e previsibilidade.&lt;/p&gt;

&lt;h2&gt;
  
  
  Entendendo o que é a Magalu Cloud
&lt;/h2&gt;

&lt;p&gt;A Magalu Cloud é uma nuvem pública desenvolvida para oferecer serviços de computação, armazenamento, rede e governança com foco direto no mercado brasileiro. A plataforma foi pensada desde o início para operar com infraestrutura localizada no Brasil, preços em reais e total aderência à legislação nacional.&lt;/p&gt;

&lt;p&gt;Na prática, isso se reflete em alguns pontos importantes para quem desenvolve e opera sistemas. A proximidade física dos datacenters reduz a latência de aplicações voltadas ao público brasileiro. A cobrança em moeda local traz previsibilidade financeira e facilita o planejamento de custos. O suporte técnico acontece em português e a plataforma adota uma abordagem aberta, com APIs, CLI e integração com ferramentas de automação amplamente utilizadas no mercado.&lt;/p&gt;

&lt;p&gt;Mais do que abstrair a complexidade da nuvem, a proposta da Magalu Cloud é torná-la &lt;strong&gt;compreensível e controlável&lt;/strong&gt;, permitindo que o desenvolvedor entenda claramente o que está criando, como os recursos se relacionam e quais impactos técnicos e operacionais isso traz.&lt;/p&gt;

&lt;h2&gt;
  
  
  Console e CLI: duas formas de usar a plataforma
&lt;/h2&gt;

&lt;p&gt;Toda interação com a Magalu Cloud acontece, basicamente, de duas maneiras: pelo Console, que é a interface web gráfica, e pela CLI, que é a interface de linha de comando. Essas duas abordagens não competem entre si. Elas atendem a momentos diferentes da jornada técnica e, na prática, costumam ser usadas de forma complementar.&lt;/p&gt;

&lt;p&gt;O Console é o caminho mais natural para o primeiro contato. Ele facilita a exploração da plataforma, ajuda a entender como os serviços estão organizados e permite criar recursos manualmente com mais segurança visual. Já a CLI entra em cena quando surge a necessidade de repetição, automação ou maior controle sobre o fluxo de operações.&lt;/p&gt;

&lt;h2&gt;
  
  
  Usando o Console da Magalu Cloud no dia a dia
&lt;/h2&gt;

&lt;p&gt;O Console é a interface gráfica da Magalu Cloud, acessada pelo navegador. É por ele que muitos desenvolvedores têm o primeiro contato com a plataforma e começam a entender como os serviços se organizam.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa36wap34d0lg98cil3qp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa36wap34d0lg98cil3qp.png" alt="Console da Magalu Cloud" width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ao acessar o Console, você encontra um painel central que agrupa os serviços. Antes de criar qualquer recurso, vale dedicar alguns minutos apenas para navegar. Explore os menus, leia as descrições dos serviços e observe como eles se relacionam.&lt;/p&gt;

&lt;p&gt;O Console é especialmente útil para esse momento de aprendizado e para criações pontuais, quando você quer validar opções, entender campos de configuração e visualizar o impacto das escolhas que está fazendo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trabalhando com a CLI da Magalu Cloud de forma prática
&lt;/h2&gt;

&lt;p&gt;A CLI da Magalu Cloud é a ferramenta que permite interagir com a plataforma diretamente pelo terminal. Ela é essencial para quem busca produtividade, automação e consistência nos ambientes.&lt;/p&gt;

&lt;p&gt;Para instalar a CLI, você pode seguir os passos da &lt;a href="https://docs.magalu.cloud/docs/devops-tools/cli-mgc/how-to/download-and-install/" rel="noopener noreferrer"&gt;documentação&lt;/a&gt;. Após a instalação, o primeiro passo é autenticar sua conta, com o comando &lt;code&gt;mgc auth login&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Esse processo cria uma sessão local vinculada à sua identidade na Magalu Cloud e permite que os comandos executados no terminal tenham efeito real sobre os recursos da sua conta.&lt;/p&gt;

&lt;p&gt;Um bom ponto de partida é confirmar qual conta (tenant) está ativa no seu ambiente local. Para isso, você pode executar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mgc auth tenant current
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse comando retorna informações sobre o tenant autenticado, incluindo um identificador único. Conferir esse dado antes de criar ou alterar recursos é uma boa prática, especialmente se você trabalha com mais de uma conta ou ambiente.&lt;/p&gt;

&lt;p&gt;A partir daí, a CLI passa a ser uma forma objetiva de consultar e operar recursos. Por exemplo, listar zonas de disponibilidade disponíveis ajuda a entender onde seus recursos podem ser criados:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mgc profile availability-zones list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A saída desses comandos geralmente vem em formato estruturado, o que facilita tanto a leitura quanto o uso em scripts. Com o tempo, é comum combinar a CLI com ferramentas de automação, mas mesmo em uso manual ela já traz ganhos importantes: menos cliques, mais previsibilidade e facilidade para repetir operações.&lt;/p&gt;

&lt;p&gt;Mesmo que você ainda prefira o Console, usar a CLI desde cedo para consultas simples e validações ajuda a criar familiaridade com a ferramenta e prepara o terreno para cenários mais avançados, como automação e infraestrutura como código.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como escolher entre Console e CLI
&lt;/h2&gt;

&lt;p&gt;Na prática, a escolha entre Console e CLI não é uma questão de certo ou errado. O Console costuma ser mais indicado para exploração, aprendizado inicial e criações manuais pontuais. A CLI, por outro lado, se destaca quando você precisa repetir tarefas, automatizar fluxos ou garantir que operações sejam executadas sempre da mesma forma.&lt;/p&gt;

&lt;p&gt;No dia a dia, muitos times usam o Console para entender e validar configurações e recorrem à CLI para executar e manter ambientes. Essa combinação oferece equilíbrio entre clareza visual e eficiência operacional.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;Antes de pensar em arquiteturas complexas, é essencial compreender a plataforma, as ferramentas disponíveis e a forma correta de interagir com elas. A Magalu Cloud oferece uma interface gráfica acessível e uma CLI poderosa, permitindo que desenvolvedores escolham a abordagem mais adequada para cada momento.&lt;/p&gt;

&lt;p&gt;Dominar essas duas formas de uso desde o início torna a experiência em nuvem mais segura, previsível e eficiente, além de preparar o caminho para soluções mais robustas no futuro.&lt;/p&gt;

</description>
      <category>magalucloud</category>
      <category>cloud</category>
      <category>braziliandevs</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Como ter um modelo de IA utilizando GPU na Magalu Cloud</title>
      <dc:creator>Magalu Cloud</dc:creator>
      <pubDate>Thu, 16 Oct 2025 17:14:03 +0000</pubDate>
      <link>https://forem.com/magalucloud/como-ter-um-modelo-de-ia-utilizando-gpu-na-magalu-cloud-75b</link>
      <guid>https://forem.com/magalucloud/como-ter-um-modelo-de-ia-utilizando-gpu-na-magalu-cloud-75b</guid>
      <description>&lt;p&gt;&lt;strong&gt;Autor:&lt;/strong&gt; &lt;a href="https://www.linkedin.com/in/cleverson-gallego-mcp-psm-i-55814a19/" rel="noopener noreferrer"&gt;Cleverson Gallego&lt;/a&gt; - Sr. Technical Product Manager&lt;/p&gt;

&lt;p&gt;Os modelos de linguagem (LLMs e SLMs) estão cada vez mais acessíveis, mas configurá-los em ambientes otimizados de GPU e armazenamento ainda pode ser um desafio.&lt;/p&gt;

&lt;p&gt;Com a &lt;a href="https://magalu.cloud/?utm_source=site&amp;amp;utm_medium=organico&amp;amp;utm_campaign=artigos+comunidade&amp;amp;utm_id=artigos+comunidade" rel="noopener noreferrer"&gt;Magalu Cloud&lt;/a&gt;, é possível criar &lt;strong&gt;em poucos minutos&lt;/strong&gt; uma instância com GPU, anexar &lt;strong&gt;volumes NVMe via Block Storage&lt;/strong&gt; e executar &lt;strong&gt;inferência com alta performance e baixa latência&lt;/strong&gt;, tudo isso com &lt;strong&gt;privacidade e previsibilidade de custos&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Neste guia, vamos demonstrar passo a passo como configurar um ambiente para inferência com modelos como Gemma 3 27B, Mistral 7B, dentre outros.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pré-requisitos
&lt;/h2&gt;

&lt;p&gt;Antes de iniciar, será necessário:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Um tenant ativo na Magalu Cloud;&lt;/li&gt;
&lt;li&gt;CLI instalada e autenticada;&lt;/li&gt;
&lt;li&gt;Conhecimento básico em Linux, Ansible e Ollama.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Escolhendo o modelo certo
&lt;/h2&gt;

&lt;p&gt;Entender essa relação é essencial para dimensionar corretamente o ambiente, &lt;strong&gt;evitando custos desnecessários e garantindo o máximo desempenho por GPU&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;Antes de selecionarmos a Virtual Machine e a GPU que iremos utilizar é importante termos em mente alguns pontos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Qual será o caso de uso para o modelo?&lt;/li&gt;
&lt;li&gt;Qual modelo irei utilizar?&lt;/li&gt;
&lt;li&gt;Qual a quantidade ideal de parâmetros para meu caso de uso?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Os parâmetros de um modelo (por exemplo, 27 bilhões do Gemma 3, da Google) são os valores numéricos aprendidos durante o treinamento do modelo e definem o comportamento interno da rede neural do modelo.  &lt;/p&gt;

&lt;p&gt;Eles incluem:   &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pesos (weights): coeficientes que determinam a força entre neurônios artificiais;&lt;/li&gt;
&lt;li&gt;Biases: ajustes adicionais usados para deslocar as ativações das camadas.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para simplificar: &lt;strong&gt;&lt;em&gt;“Parâmetros são o ‘conhecimento condensado’ que o modelo aprendeu ao ser treinado sobre grandes volumes de dados.”&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Um modelo com mais parâmetros é, em geral, &lt;strong&gt;mais expressivo e capaz de lidar&lt;/strong&gt; &lt;strong&gt;com contextos complexos&lt;/strong&gt;, mas isso &lt;strong&gt;não o torna automaticamente o melhor&lt;/strong&gt; para todos os tipos de tarefas; portanto, é necessário escolher o modelo com sabedoria, de acordo com o hardware e o caso de uso.&lt;/p&gt;

&lt;p&gt;Modelos de linguagem como o Gemma 3 27B, Mistral 7B ou Llama 3 70B são redes neurais massivas compostas por bilhões de parâmetros, e cada parâmetro ocupa espaço em memória da GPU durante a inferência.  &lt;/p&gt;

&lt;p&gt;Essa relação é direta!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quanto maior o modelo, maior a memória VRAM necessária, maior a GPU (ou o número de GPUs) exigida(s).&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Para estimar corretamente o consumo de memória vamos utilizar uma prática da comunidade:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;memória VRAM necessária = [ N Parâmetros ] x [ 2 bytes ] x [ fator de otimização ]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;O fator de otimização depende da quantização utilizada no modelo. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quantização é o processo de reduzir a precisão numérica dos parâmetros&lt;/strong&gt;, normalmente convertendo números em ponto flutuante (FP) de 16 ou 32 bits que ocupam mais memória em versões compactadas como 8, 4 ou até 2 bits.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tipo de quantização&lt;/th&gt;
&lt;th&gt;Descrição&lt;/th&gt;
&lt;th&gt;Fator aproximado&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;FP16&lt;/td&gt;
&lt;td&gt;2 bytes por parâmetro&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2,0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;INT8&lt;/td&gt;
&lt;td&gt;1 byte por parâmetro&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1,0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Q4_K_M&lt;/td&gt;
&lt;td&gt;4 bits ( ~0,5 bytes por parâmetro )&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0,5&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A quantização é o que permite rodar modelos grandes em GPUs menores — sem sacrificar qualidade de forma perceptível.&lt;/p&gt;

&lt;p&gt;Por exemplo, um modelo de 27 bilhões de parâmetros ( Gemma 3 27B ) quantizado em Q4_K_M exigirá: &lt;code&gt;27 B x 0,5 = ~ 13.5 GB de VRAM&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Em resumo, utilizando uma NVIDIA L40 ou L40S, que são as GPUs disponíveis nesta data na Magalu Cloud é seguro dizer que são confortáveis:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;FP16: modelos de 14-19B; &lt;/li&gt;
&lt;li&gt;INT8: modelos de 29-38B;&lt;/li&gt;
&lt;li&gt;Q4: modelos de 58-76B (70B fica no limite com 1 GPU somente (batch=1 e contexto curto)). Para uso confortável prefira 2xL40/L40S.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Recomendações práticas:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Modelos de até 7B: uma GPU L40 ou L40S é suficiente mesmo em FP16;
&lt;/li&gt;
&lt;li&gt;Modelos de 20-30B: use quantização (Q4 ou INT8) em uma GPU L40 ou L40S;&lt;/li&gt;
&lt;li&gt;Modelos acima de 40B: prefira usar 2 GPUs L40S.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Criando a Virtual Machine com GPU e Block Storage
&lt;/h2&gt;

&lt;p&gt;A criação da VM com GPU é o ponto de partida do nosso ambiente de inferência.  &lt;/p&gt;

&lt;p&gt;Neste exemplo, vamos provisionar uma &lt;strong&gt;instância com GPU L40&lt;/strong&gt; (flavor &lt;code&gt;L40x1-DP8-64-100&lt;/code&gt;) e anexar um &lt;strong&gt;volume de Block Storage NVMe 20K IOPS&lt;/strong&gt; de 500 GB para armazenar os modelos. &lt;/p&gt;

&lt;p&gt;Para maiores detalhes dos passos necessários para a criação da VM, consulte nossa &lt;a href="https://docs.magalu.cloud/docs/docs/?utm_source=site&amp;amp;utm_medium=organico&amp;amp;utm_campaign=artigos+comunidade+documentacao&amp;amp;utm_id=artigos+comunidade+documentacao" rel="noopener noreferrer"&gt;documentação oficial&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Agora, para a criação do volume, é importante levar em consideração a quantidade de modelos e, conforme já comentamos, a quantidade de parâmetros. Quanto mais parâmetros, mais espaço o modelo irá ocupar no volume, então maior precisará ser o mesmo. Para o exemplo vamos criar um volume de 500GB com 20K IOPS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mgc block-storage volumes create &lt;span class="nt"&gt;--type&lt;/span&gt;.name&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"cloud_nvme20k"&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"modelos"&lt;/span&gt; &lt;span class="nt"&gt;--size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;500 &lt;span class="nt"&gt;--availability-zone&lt;/span&gt; br-se1-c
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O próximo passo é anexar o volume criado a VM:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mgc block-storage volumes attach &lt;span class="nt"&gt;--id&lt;/span&gt; b74d1968-dd43-4136-ab63-193fcc1111111 &lt;span class="nt"&gt;--virtual-machine-id&lt;/span&gt; 278e412d-af9a-4348-ab76-bfc111111111
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Comandos úteis
&lt;/h3&gt;

&lt;p&gt;Para verificar o id da instância desejada:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mgc vm instances list 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para verificar o id do volume desejado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mgc block-storage volumes list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pronto, agora você já tem sua VM criada com GPU e armazenamento. Agora é hora de instalarmos e configurarmos o modelo.&lt;/p&gt;




&lt;h2&gt;
  
  
  Configurando o ambiente com Ansible
&lt;/h2&gt;

&lt;p&gt;Serão executados os seguintes passos na VM, com auxílio do Ansible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instalação e configuração de pacotes de sistema;&lt;/li&gt;
&lt;li&gt;Instalação de CUDA e NVIDIA Drivers;&lt;/li&gt;
&lt;li&gt;Instalação e configuração Ollama;&lt;/li&gt;
&lt;li&gt;Deploy do modelo &lt;strong&gt;Gemma 3 7B&lt;/strong&gt;;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Observação&lt;/strong&gt;: deve-se realizar a instalação do Ansible em uma máquina com acesso à internet antes da execução dos passos. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dica de segurança:&lt;/strong&gt; para ambientes de produção, recomenda-se usar chaves SSH com acesso restrito e limitar as portas abertas.&lt;br&gt;&lt;br&gt;
Consulte a &lt;a href="https://docs.magalu.cloud/docs/docs/?utm_source=site&amp;amp;utm_medium=organico&amp;amp;utm_campaign=artigos+comunidade+documentacao&amp;amp;utm_id=artigos+comunidade+documentacao" rel="noopener noreferrer"&gt;documentação oficial da Magalu Cloud&lt;/a&gt; para boas práticas de segurança.&lt;/p&gt;

&lt;p&gt;Após a instalação do ansible alterar o arquivo inventory.ini:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;inference]
&lt;span class="o"&gt;[&lt;/span&gt;ip da vm] &lt;span class="nv"&gt;ansible_user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;ubuntu &lt;span class="nv"&gt;ansible_ssh_private_key_file&lt;/span&gt;&lt;span class="o"&gt;=[&lt;/span&gt;~/.ssh/id_rsa.pem]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Onde:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;[ip da vm]&lt;/code&gt; deve ser substituído pelo ip público da sua VM;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;[~/.ssh/id_rsa.pem]&lt;/code&gt; deve ser substituído pelo arquivo que contém a chave privada configurada para acessoa a sua VM.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Você pode conferir o Ansible necessário para a instalação clicando &lt;a href="https://github.com/marketing-mgc/dev-to/blob/main/exemplos-ansible-ia/playbook_gemma_3_27b_ollama_GPU2.yaml" rel="noopener noreferrer"&gt;aqui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Logo após, executar no terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ansible-playbook &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;inventory.ini] &lt;span class="o"&gt;[&lt;/span&gt;playbook_gemma_3_27b_ollama_GPU.yaml]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Onde &lt;code&gt;inventory.ini&lt;/code&gt; é o arquivo modificado com o ip e chave privada ssh e &lt;code&gt;playbook_gemma_3_27b_ollama_GPU.yaml&lt;/code&gt; é o arquivo Ansible com o conteúdo acima.&lt;/p&gt;

&lt;p&gt;Após a execução a saída do terminal deve ser algo parecido com o texto abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;magalu@WNLEC-GSLR6Q3 ~/i/ansible&amp;gt; ansible-playbook &lt;span class="nt"&gt;-i&lt;/span&gt; inventory.ini playbook_gemma_3_27b_ollama_GPU.yaml

PLAY &lt;span class="o"&gt;[&lt;/span&gt;Setup llama.cpp CPU inference environment with external access] &lt;span class="k"&gt;************************************************************************************************************************&lt;/span&gt;

TASK &lt;span class="o"&gt;[&lt;/span&gt;Gathering Facts] &lt;span class="k"&gt;***********************************************************************************************************************************************************************&lt;/span&gt;
The authenticity of host &lt;span class="s1"&gt;'ip (ip)'&lt;/span&gt; can&lt;span class="s1"&gt;'t be established.
ED25519 key fingerprint is SHA256:.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
ok: [ip]

TASK [Install system packages] ***************************************************************************************************************************************************************
changed: [ip]

TASK [Clone llama.cpp repository] ************************************************************************************************************************************************************
changed: [ip]

...
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Testando a inferência
&lt;/h2&gt;

&lt;p&gt;Após finalizado, testar com &lt;a href="http://[ip]:8000" rel="noopener noreferrer"&gt;http://[ip]:8000&lt;/a&gt;. O resultado deve ser algo parecido com:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Ollama is running
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para confirmar vamos invocar usando curl o modelo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl http://[IP_VM]:8000/v1/chat/completions     &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt;     &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
                                    "model": "gemma3",
                                    "messages": [
                                        {
                                            "role": "system",
                                            "content": "You are a helpful assistant."
                                        },
                                        {
                                            "role": "user",
                                            "content": "Hello!"
                                        }
                                    ]
                                }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O resultado deve ser:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"id"&lt;/span&gt;:&lt;span class="s2"&gt;"chatcmpl-640"&lt;/span&gt;,&lt;span class="s2"&gt;"object"&lt;/span&gt;:&lt;span class="s2"&gt;"chat.completion"&lt;/span&gt;,&lt;span class="s2"&gt;"created"&lt;/span&gt;:1760036029,&lt;span class="s2"&gt;"model"&lt;/span&gt;:&lt;span class="s2"&gt;"gemma3:27b"&lt;/span&gt;,&lt;span class="s2"&gt;"system_fingerprint"&lt;/span&gt;:&lt;span class="s2"&gt;"fp_ollama"&lt;/span&gt;,&lt;span class="s2"&gt;"choices"&lt;/span&gt;:[&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"index"&lt;/span&gt;:0,&lt;span class="s2"&gt;"message"&lt;/span&gt;:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"role"&lt;/span&gt;:&lt;span class="s2"&gt;"assistant"&lt;/span&gt;,&lt;span class="s2"&gt;"content"&lt;/span&gt;:&lt;span class="s2"&gt;"Hello there! 👋 &lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;It's nice to meet you! I'm here to help in any way I can. Just let me know what you need – whether it's answering a question, brainstorming ideas, writing something, or just having a conversation. &lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;What can I do for you today?&lt;/span&gt;&lt;span class="se"&gt;\n\n\n\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;,&lt;span class="s2"&gt;"finish_reason"&lt;/span&gt;:&lt;span class="s2"&gt;"stop"&lt;/span&gt;&lt;span class="o"&gt;}]&lt;/span&gt;,&lt;span class="s2"&gt;"usage"&lt;/span&gt;:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"prompt_tokens"&lt;/span&gt;:22,&lt;span class="s2"&gt;"completion_tokens"&lt;/span&gt;:66,&lt;span class="s2"&gt;"total_tokens"&lt;/span&gt;:88&lt;span class="o"&gt;}}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;Agora você tem um ambiente completo de inferência com GPU, Block Storage NVMe e Ollama configurado automaticamente via Ansible.&lt;/p&gt;

&lt;p&gt;Acesse o &lt;a href="https://portal.magalu.cloud?utm_source=site&amp;amp;utm_medium=organico&amp;amp;utm_campaign=comunidade+artigos&amp;amp;utm_id=comunidade+artigos" rel="noopener noreferrer"&gt;console da Magalu Cloud&lt;/a&gt; e teste seu primeiro modelo Gemma ou Mistral com aceleração total.&lt;/p&gt;

&lt;p&gt;Queremos saber o que você vai criar com seu modelo! Compartilhe seu projeto conosco. &lt;/p&gt;

</description>
      <category>magalucloud</category>
      <category>ai</category>
      <category>cloud</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Como fazer deploy com Dokku na Magalu Cloud</title>
      <dc:creator>Magalu Cloud</dc:creator>
      <pubDate>Wed, 08 Oct 2025 17:43:27 +0000</pubDate>
      <link>https://forem.com/magalucloud/como-fazer-deploy-com-dokku-na-magalu-cloud-4kad</link>
      <guid>https://forem.com/magalucloud/como-fazer-deploy-com-dokku-na-magalu-cloud-4kad</guid>
      <description>&lt;p&gt;&lt;strong&gt;Autor:&lt;/strong&gt; Junior Carvalho (&lt;a href="https://www.linkedin.com/in/juniorcarvalho-dev/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://dev.to/junior_carvalho"&gt;Dev.to&lt;/a&gt;)&lt;br&gt;
&lt;strong&gt;Repositório:&lt;/strong&gt; &lt;a href="https://github.com/juniorcarvalho/python-django-example/" rel="noopener noreferrer"&gt;python-django-example&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se você trabalha com &lt;strong&gt;Python/Django&lt;/strong&gt;, já deve ter sentido o atrito que pode ser levar sua aplicação do ambiente de desenvolvimento para um servidor de produção. Você quer focar no código, mas se vê preso em um mar de configurações de servidor.&lt;/p&gt;

&lt;p&gt;É aqui que o &lt;a href="https://dokku.com/docs/getting-started/installation/" rel="noopener noreferrer"&gt;&lt;strong&gt;Dokku&lt;/strong&gt;&lt;/a&gt;  entra em ação, transformando um processo complicado em algo rápido e eficiente. Dokku é uma &lt;strong&gt;PaaS (Platform as a Service)&lt;/strong&gt; minimalista que permite que você faça o deploy de suas aplicações via Git Push, de forma semelhante ao &lt;strong&gt;Heroku&lt;/strong&gt;, mas em sua própria máquina virtual.&lt;/p&gt;

&lt;p&gt;Este artigo apresenta um tutorial passo a passo para que você possa fazer o deploy de seu projeto Python/Django em uma &lt;strong&gt;máquina virtual da &lt;a href="https://magalu.cloud/?utm_source=site&amp;amp;utm_medium=organico&amp;amp;utm_campaign=artigos+comunidade&amp;amp;utm_id=artigos+comunidade" rel="noopener noreferrer"&gt;Magalu Cloud&lt;/a&gt;&lt;/strong&gt; utilizando o Dokku. Você aprenderá a configurar o ambiente, instalar o Dokku, gerenciar chaves SSH, configurar o banco de dados PostgreSQL e as variáveis de ambiente necessárias para ter sua aplicação rodando em produção de forma elegante e descomplicada.&lt;/p&gt;
&lt;h2&gt;
  
  
  Pré-requisitos
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Conta ativa na &lt;strong&gt;&lt;a href="https://magalu.cloud/?utm_source=site&amp;amp;utm_medium=organico&amp;amp;utm_campaign=artigos+comunidade&amp;amp;utm_id=artigos+comunidade" rel="noopener noreferrer"&gt;Magalu Cloud&lt;/a&gt;&lt;/strong&gt; com acesso ao painel de criação de máquinas virtuais.
&lt;/li&gt;
&lt;li&gt;Máquina virtual criada (exemplo: BV2-2-10 com &lt;strong&gt;Ubuntu 24.04 LTS&lt;/strong&gt;, 2vCPU, 2GB RAM e 10GB disco local).
&lt;/li&gt;
&lt;li&gt;Acesso ao terminal com &lt;strong&gt;SSH&lt;/strong&gt; configurado.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git&lt;/strong&gt; instalado na máquina de desenvolvimento.
&lt;/li&gt;
&lt;li&gt;Projeto de exemplo em Python/Django disponível: &lt;a href="https://github.com/juniorcarvalho/python-django-example" rel="noopener noreferrer"&gt;python-django-example&lt;/a&gt;.
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Preparando o ambiente
&lt;/h2&gt;

&lt;p&gt;Nesse tutorial vamos utilizar uma máquina virtual na &lt;a href="https://magalu.cloud/?utm_source=site&amp;amp;utm_medium=organico&amp;amp;utm_campaign=artigos+comunidade&amp;amp;utm_id=artigos+comunidade" rel="noopener noreferrer"&gt;Magalu Cloud&lt;/a&gt;. Uma máquina BV2-2-10, 2vCpu, 2GB de ram e 10GB de tamanho de disco local com Ubuntu 24.04 LTS.  &lt;/p&gt;

&lt;p&gt;A documentação completa de uso na Magalu Cloud pode ser visualizada aqui: &lt;a href="https://docs.magalu.cloud/docs/docs/?utm_source=site&amp;amp;utm_medium=organico&amp;amp;utm_campaign=artigos+comunidade+documentacao&amp;amp;utm_id=artigos+comunidade+documentacao" rel="noopener noreferrer"&gt;Documentação Magalu Cloud&lt;/a&gt;. E aqui um vídeo que mostra como criar uma máquina virtual: &lt;a href="https://docs.magalu.cloud/docs/computing/virtual-machine/tutorials/create-virtual-machine" rel="noopener noreferrer"&gt;Como criar uma máquina virtual&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Para exemplificar, vou utilizar um projeto simples em Python, Django e django-rest-framework. Esse projeto provê apenas um endpoint ‘status’ retornando uma resposta json.&lt;/p&gt;

&lt;p&gt;Projeto disponível aqui: &lt;a href="https://github.com/juniorcarvalho/python-Django-example" rel="noopener noreferrer"&gt;python-django-example&lt;/a&gt;  &lt;/p&gt;
&lt;h2&gt;
  
  
  1. Instalando o Dokku
&lt;/h2&gt;

&lt;p&gt;Após criar a máquina virtual na Magalu Cloud vamos realizar o acesso via SSH pelo terminal. Vou utilizar ssh padrão de terminal, mas é possível utilizar outros clientes ssh como o &lt;a href="https://putty.org/index.html" rel="noopener noreferrer"&gt;Putty&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh ubuntu@201.23.72.173
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No primeiro acesso confirme o questionamento sobre a autenticidade digitando ‘yes’.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ED25519 key fingerprint is SHA256:tbnvJ/WRO/vbi95X7D+M0mHAZq3pIo1wI39VprSnx5Y.This key is not known by any other names.Are you sure you want to continue connecting (yes/no/[fingerprint])?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Conforme a documentação do &lt;a href="https://Dokku.com/" rel="noopener noreferrer"&gt;Dokku&lt;/a&gt;, use os seguintes comandos  para realizar a instalação:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wget -NP . https://dokku.com/bootstrap.sh  
sudo DOKKU_TAG=v0.36.7 bash bootstrap.sh  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. Configurando a chave SSH
&lt;/h2&gt;

&lt;p&gt;Precisamos configurar no Dokku a chave pública para que seja possível executar o deploy.  &lt;/p&gt;

&lt;p&gt;Na nossa máquina de desenvolvimento, vamos checar se nosso usuário tem uma chave pública:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ls -al ~/.ssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Caso não tenha nenhum arquivo &lt;code&gt;.pub&lt;/code&gt; , pode gerar com o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh-keygen -t rsa
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No meu caso eu tenho um &lt;code&gt;id_rsa.pub&lt;/code&gt;. Vou ler o conteúdo, selecioná-lo e copiar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cat ~/.ssh/id_rsa.pub  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com o conteúdo do arquivo copiado, vamos executar o comando na máquina remota:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo 'CONTENTS_OF_ID_RSA_PUB_FILE' | sudo dokku ssh-keys:add admin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aqui, &lt;code&gt;CONTENTS_OF_ID_RSA_PUB_FILE&lt;/code&gt; é igual a chave copiada da máquina de desenvolvimento.&lt;/p&gt;

&lt;p&gt;Confirme se a chave foi criada com o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dokku ssh-keys:list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Criando a aplicação
&lt;/h2&gt;

&lt;p&gt;No terminal, conectado na nossa máquina virtual:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dokku apps:create python-django-example  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para listar os apps existentes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dokku apps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Quando criamos um novo aplicativo, por padrão o Dokku não fornece nenhum banco de dados como MySQL ou PostgreSQL. É preciso instalar plugins. Existem &lt;a href="https://Dokku.com/docs/community/plugins/" rel="noopener noreferrer"&gt;plugins&lt;/a&gt; oficiais para banco de dados. Nesse exemplo vou utilizar o PostgreSQL.  &lt;/p&gt;

&lt;h3&gt;
  
  
  PostgreSQL
&lt;/h3&gt;

&lt;p&gt;Instale o plugin Postgres:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo dokku plugin:install https://github.com/dokku/dokku-postgres.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Crie o serviço postgres:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dokku postgres:create database  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora, vamos criar o link entre os serviços de banco de dados e nossa app.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dokku postgres:link database python-django-example  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Após esse comando vai ser criado automaticamente a variável &lt;code&gt;DATABASE_URL&lt;/code&gt; em nosso app.  &lt;/p&gt;

&lt;h2&gt;
  
  
  4. Configurando variáveis de ambiente
&lt;/h2&gt;

&lt;p&gt;Temos que configurar algumas variáveis de ambiente em nosso app. Como estamos usando Django, vamos criar  &lt;code&gt;SECRET_KEY&lt;/code&gt; e &lt;code&gt;DEBUG&lt;/code&gt;. Acesse a documentação &lt;a href="https://Dokku.com/docs/configuration/environment-variables/" rel="noopener noreferrer"&gt;environment-variables&lt;/a&gt; para mais informações.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dokku config:set python-django-example DEBUG='False'  
dokku config:set python-django-example SECRET_KEY='sua secret_key'  
dokku config:set python-django-example ALLOWED_HOSTS='127.0.0.1, .localhost,201.23.72.173'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Observação: Precisamos adicionar o IP do servidor em &lt;code&gt;ALLOWED_HOSTS&lt;/code&gt;, no caso do exemplo o IP é o 201.23.72.173`.  &lt;/p&gt;

&lt;p&gt;Para listar as variáveis de ambiente de nossa app: &lt;code&gt;dokku config python-django-example&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Executando o primeiro deploy
&lt;/h2&gt;

&lt;p&gt;Na nossa máquina de desenvolvimento vamos configurar o git para fazer o primeiro deploy. Vamos adicionar nosso repositório remoto Dokku da seguinte forma: &lt;/p&gt;

&lt;p&gt;&lt;code&gt;git remote add dokku dokku@[IP-do-servidor]:[nome-app]&lt;/code&gt;  &lt;/p&gt;

&lt;p&gt;No contexto do nosso projeto de exemplo, o comando fica: &lt;/p&gt;

&lt;p&gt;&lt;code&gt;git remote add dokku dokku@201.23.72.173:python-django-example&lt;/code&gt;  &lt;/p&gt;

&lt;p&gt;Em seguida, execute o deploy: &lt;code&gt;git push dokku main&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Criando as tabelas do banco de dados
&lt;/h2&gt;

&lt;p&gt;Nossa aplicação está no ar, mas ainda não tem as tabelas de nossa base de dados. Na máquina virtual execute: &lt;/p&gt;

&lt;p&gt;&lt;code&gt;dokku run python-django-example python manage.py migrate&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Para criar um super usuário admin do Django:  &lt;/p&gt;

&lt;p&gt;&lt;code&gt;dokku run python-django-example python manage.py createsuperuser&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Configurando o domínio
&lt;/h2&gt;

&lt;p&gt;Precisamos configurar o domínio para conseguir acessar o servidor. No nosso exemplo não temos URL então vamos configurar o acesso pelo IP mesmo.  &lt;/p&gt;

&lt;p&gt;Onde &lt;code&gt;201.23.72.173&lt;/code&gt; é o ip do servidor.  &lt;/p&gt;

&lt;p&gt;&lt;code&gt;dokku domains:add python-django-example 201.23.72.173&lt;/code&gt;&lt;br&gt;
&lt;code&gt;dokku ps:restart python-django-example&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Caso tenha uma URL, por exemplo: &lt;code&gt;django-example.com.br&lt;/code&gt;:  &lt;/p&gt;

&lt;p&gt;&lt;code&gt;dokku domains:add python-django-example django-example.com.br&lt;/code&gt;&lt;br&gt;
&lt;code&gt;dokku config:set python-django-example ALLOWED_HOSTS="django-example.com.br,127.0.0.1, .localhost"&lt;/code&gt;&lt;br&gt;
&lt;code&gt;dokku ps:restart python-django-example&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Acessando a aplicação
&lt;/h2&gt;

&lt;p&gt;Com todas as etapas de deploy, migração do banco de dados e configuração de domínio concluídas, sua aplicação Python/Django está no ar na Magalu Cloud!&lt;/p&gt;

&lt;p&gt;Agora, você pode acessar as diferentes partes da sua aplicação diretamente pelo navegador. Utilize o endereço IP do seu servidor (neste exemplo, &lt;code&gt;201.23.72.173&lt;/code&gt;) para acessar tanto a interface administrativa do Django quanto o endpoint da sua API de exemplo:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Admin Django&lt;/strong&gt;: &lt;a href="http://201.23.72.173/admin" rel="noopener noreferrer"&gt;http://201.23.72.173/admin&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API&lt;/strong&gt;: &lt;a href="http://201.23.72.173/api/status/" rel="noopener noreferrer"&gt;http://201.23.72.173/api/status/&lt;/a&gt;  &lt;/p&gt;

&lt;h2&gt;
  
  
  9. Considerações finais
&lt;/h2&gt;

&lt;p&gt;Já utilizo o Dokku em projetos pessoais e testes. Sempre funcionou muito bem para pequenas aplicações. Vale a pena estudar mais pois as possibilidades de integrações são grandes.   &lt;/p&gt;

&lt;p&gt;Qualquer dúvida ou sugestão me envie um email: &lt;a href="mailto:joseadolfojr@gmail.com"&gt;joseadolfojr@gmail.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>magalucloud</category>
      <category>cloud</category>
      <category>dokku</category>
      <category>python</category>
    </item>
    <item>
      <title>Acelerando workloads de IA com VMs e GPUs na Magalu Cloud</title>
      <dc:creator>Magalu Cloud</dc:creator>
      <pubDate>Mon, 15 Sep 2025 19:43:28 +0000</pubDate>
      <link>https://forem.com/magalucloud/acelerando-workloads-de-ia-com-vms-e-gpus-na-magalu-cloud-34ni</link>
      <guid>https://forem.com/magalucloud/acelerando-workloads-de-ia-com-vms-e-gpus-na-magalu-cloud-34ni</guid>
      <description>&lt;p&gt;&lt;strong&gt;Autor:&lt;/strong&gt; &lt;a href="https://www.linkedin.com/in/cleverson-gallego-mcp-psm-i-55814a19" rel="noopener noreferrer"&gt;Cleverson Gallego&lt;/a&gt; - Sr. Technical Product Manager&lt;/p&gt;

&lt;p&gt;Olá amantes da boa inferência e de bons embeddings!&lt;/p&gt;

&lt;p&gt;Sabemos que hoje, a infraestrutura é parte fundamental de qualquer negócio baseado em IA, seja ela direta ou indireta. Nós, da Magalu Cloud, estamos trabalhando para entregar uma infraestrutura robusta e acessível, projetada para impulsionar suas ideias e negócios desde a concepção até a escala em produção.  &lt;/p&gt;

&lt;p&gt;Hoje, queremos demonstrar como nossas &lt;strong&gt;máquinas virtuais (VMs)&lt;/strong&gt; e &lt;strong&gt;Unidades de Processamento Gráfico (GPUs)&lt;/strong&gt; podem acelerar seus workloads e trazer resultados mais rápidos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Desempenho e flexibilidade: Nossos flavors de VMs para IA
&lt;/h2&gt;

&lt;p&gt;Para atender a diversas necessidades, oferecemos uma variedade de flavors de VMs, permitindo que você escolha a combinação perfeita para seus workloads. Nossas VMs são confiáveis, flexíveis e você só paga pelo tempo de uptime ou seja, se a VM estiver desligada nada é cobrado. Abaixo exemplos de flavors e suas aplicações pós-processamento para workloads de IA:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Perfil da VM&lt;/th&gt;
&lt;th&gt;vCPU&lt;/th&gt;
&lt;th&gt;RAM&lt;/th&gt;
&lt;th&gt;Casos de uso de pós-processamento IA&lt;/th&gt;
&lt;th&gt;Exemplos de tarefas&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pequena&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;Pós-processamento leve / batchs pequenos&lt;/td&gt;
&lt;td&gt;Agregação de resultados de inferência de imagens, análise simples de logs de NLP, pequenas pipelines de métricas de áudio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Média&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;64 GB&lt;/td&gt;
&lt;td&gt;Processamento moderado / pipelines paralelos&lt;/td&gt;
&lt;td&gt;Pós-processamento de visão computacional (segmentação + feature extraction), análise de embeddings de NLP em batchs maiores, TTS batch médio com pré e pós-processamento&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Grande&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;32–64&lt;/td&gt;
&lt;td&gt;256–512 GB&lt;/td&gt;
&lt;td&gt;Processamento pesado / pipelines complexos&lt;/td&gt;
&lt;td&gt;Processamento de vídeos de alta resolução pós-inferência, pós-processamento de grandes datasets multimodais, agregação de outputs de múltiplos modelos, análises estatísticas complexas pós IA&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Oferecemos acesso às &lt;a href="https://www.nvidia.com/en-us/data-center/l40/" rel="noopener noreferrer"&gt;GPUs NVIDIA L40&lt;/a&gt;, permitindo que você acelere seus modelos de machine learning, deep learning e outras cargas de trabalho computacionais intensivas, com performance e eficiência.&lt;/p&gt;

&lt;p&gt;Com as nossas GPUs você pode:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Nº de GPUs&lt;/th&gt;
&lt;th&gt;Casos de uso&lt;/th&gt;
&lt;th&gt;Tipo de modelo&lt;/th&gt;
&lt;th&gt;Observações&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1 GPU&lt;/td&gt;
&lt;td&gt;Inferência de LLMs grandes quantizados&lt;/td&gt;
&lt;td&gt;Até 30B+ parâmetros (ex: Gemma 3 27B Q4KM)&lt;/td&gt;
&lt;td&gt;Quantização permite rodar modelos maiores em 1 GPU;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 GPU&lt;/td&gt;
&lt;td&gt;Inferência multimodal, visão, áudio&lt;/td&gt;
&lt;td&gt;CLIP, BLIP, Stable Diffusion XL, Whisper large&lt;/td&gt;
&lt;td&gt;1 GPU lida com produção contínua;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 GPU&lt;/td&gt;
&lt;td&gt;Fine-tuning / treinamento leve&lt;/td&gt;
&lt;td&gt;Modelos até ~1B parâmetros&lt;/td&gt;
&lt;td&gt;Adequado para experimentos ou protótipos de LLM ou CV&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 GPUs&lt;/td&gt;
&lt;td&gt;Treinamento / fine-tuning pesado&lt;/td&gt;
&lt;td&gt;Modelos 1B–30B+&lt;/td&gt;
&lt;td&gt;Treinamento distribuído, batch grande ou LLMs não quantizados&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 GPUs&lt;/td&gt;
&lt;td&gt;Inferência massiva / pipelines paralelos&lt;/td&gt;
&lt;td&gt;LLMs 30B+, diffusion ou multimodal batch grande&lt;/td&gt;
&lt;td&gt;Multi-GPU reduz latency ou aumenta throughput para produção&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Além da performance de nossas GPUs, nossas máquinas virtuais oferecem flexibilidade para que você crie o seu laboratório de IA sob medida, não dependendo de plataformas gerenciadas. É possível  configurar o ambiente aproveitando ferramentas já consolidadas no ecossistema da comunidade de IA.&lt;/p&gt;

&lt;p&gt;Na prática, em poucos minutos você consegue ter uma máquina virtual pronta para &lt;strong&gt;desenvolver, treinar, executar inferência ou prototipar serviços de IA.&lt;/strong&gt; Confira alguns exemplos de como nossos clientes e desenvolvedores já tem usado nossas VMs com GPU:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Caso de uso&lt;/th&gt;
&lt;th&gt;Ferramentas / Stack&lt;/th&gt;
&lt;th&gt;Descrição / Benefício&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ambiente de desenvolvimento interativo&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Jupyter Notebook, VS Code Server&lt;/td&gt;
&lt;td&gt;Permite escrever e testar código de IA diretamente na VM, acessar datasets, treinar modelos pequenos, visualizar resultados em tempo real&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Inferência local de LLMs&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No-code/low-code tools Ollama, vLLM&lt;/td&gt;
&lt;td&gt;Rodar modelos grandes ou quantizados diretamente na VM, sem depender de serviços externos, controle total do ambiente e recursos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Testes e experimentação com modelos multimodais&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;backends (texto, imagem, áudio), Stable Diffusion, Whisper&lt;/td&gt;
&lt;td&gt;Criar pipelines de teste de modelos multimodais (texto → imagem, texto → áudio, multimodal) para protótipos rápidos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Treinamento ou fine-tuning leve&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;PyTorch, TensorFlow, vLLM&lt;/td&gt;
&lt;td&gt;Treinar ou ajustar modelos menores, fine-tuning de LLMs ou CV, usando a GPU da VM sem necessidade de cluster&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Execução de pipelines de IA customizadas&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Python scripts, Dask, Prefect&lt;/td&gt;
&lt;td&gt;Processar dados pós-inferência, agregação de resultados, pré-processamento de imagens/vídeos, execução de batchs paralelos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Integração e prototipagem de serviços de IA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;FastAPI, Flask, Gradio&lt;/td&gt;
&lt;td&gt;Criar APIs ou interfaces para testar modelos em produção ou demonstrar resultados para stakeholders&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Experimentação com quantização e performance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;BitsAndBytes, QLoRA&lt;/td&gt;
&lt;td&gt;Testar diferentes técnicas de quantização, medir throughput e latency, otimizar modelos grandes para inferência em 1 GPU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Armazenamento e manipulação de datasets&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Object Storage, MYSQL, SQL Server, pandas, NumPy&lt;/td&gt;
&lt;td&gt;Gerenciar dados locais ou externos para treinos e inferência, realizar análises, preparar datasets para pipelines&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Estes são apenas alguns exemplos de ambientes que podemos criar com a nossa infraestrutura de IA, lembrando ainda que seus dados estarão no Brasil em infraestrutura nacional fora da linha de ação de big techs internacionais (&lt;a href="https://en.wikipedia.org/wiki/CLOUD_Act" rel="noopener noreferrer"&gt;cloud act&lt;/a&gt;) e com cobrança em reais, livres de oscilação cambial. Para mais detalhes referente a valores, confira o nosso &lt;a href="https://magalu.cloud/precos/virtual-machines" rel="noopener noreferrer"&gt;site oficial&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cloudcomputing</category>
      <category>performance</category>
    </item>
    <item>
      <title>Protegendo segredos com HashiCorp Vault em um cluster Kubernetes da Magalu Cloud</title>
      <dc:creator>Magalu Cloud</dc:creator>
      <pubDate>Tue, 09 Sep 2025 15:00:00 +0000</pubDate>
      <link>https://forem.com/magalucloud/protegendo-segredos-com-hashicorp-vault-em-um-cluster-kubernetes-da-magalu-cloud-2fl2</link>
      <guid>https://forem.com/magalucloud/protegendo-segredos-com-hashicorp-vault-em-um-cluster-kubernetes-da-magalu-cloud-2fl2</guid>
      <description>&lt;p&gt;Autor: &lt;a href="https://www.linkedin.com/in/sandro-savelli-062272144/" rel="noopener noreferrer"&gt;Sandro Savelli&lt;/a&gt;, &lt;a href="https://herospark.com/" rel="noopener noreferrer"&gt;Herospark&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A gestão de segredos é um dos maiores desafios em ambientes modernos de desenvolvimento e operações. Deixar senhas hardcoded em repositórios, compartilhar tokens em chats ou até configurar manualmente acessos sensíveis pode abrir brechas de segurança sérias. &lt;/p&gt;

&lt;p&gt;Neste cenário, ferramentas como o HashiCorp Vault surgem como solução robusta para armazenar, acessar e controlar segredos de forma segura, auditável e automatizada. Neste artigo, vamos entender como funciona o Vault, como configurá-lo em um cluster Kubernetes provisionado na Magalu Cloud, e como integrá-lo com ferramentas como o ArgoCD.&lt;/p&gt;

&lt;p&gt;O Vault é uma ferramenta para gerenciamento seguro de segredos, certificados, tokens e outros dados sensíveis. Ele permite controlar acesso a segredos com controle baseado em políticas e autenticação pluggable.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Dependências Necessárias&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developer.hashicorp.com/vault/install" rel="noopener noreferrer"&gt;Vault CLI&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://helm.sh/docs/intro/install/" rel="noopener noreferrer"&gt;helm&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/sbstp/kubie?tab=readme-ov-file" rel="noopener noreferrer"&gt;kubie&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/docs/tasks/tools/" rel="noopener noreferrer"&gt;kubectl&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Acesso ao Cluster MGC&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Para interagir com um cluster Kubernetes provisionado na Magalu Cloud (MGC), é necessário utilizar o arquivo de configuração de acesso (kubeconfig). Esse arquivo contém as credenciais, o endpoint da API e as definições de contexto que permitem executar comandos com ferramentas como kubectl ou kubie.&lt;/p&gt;

&lt;p&gt;O primeiro passo é acessar o console da MGC. No painel de Kubernetes, localize o cluster desejado e utilize a opção “Download Config” disponível no menu lateral.&lt;/p&gt;

&lt;p&gt;Com o arquivo .yaml salvo localmente, o acesso ao cluster pode ser configurado no terminal com o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubie ctx -f /caminho/para/config.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse comando define o contexto correto, garantindo que todas as operações subsequentes sejam executadas diretamente no cluster selecionado. Caso o kubie ainda não esteja instalado, consulte a seção de dependências para realizar a instalação.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Instalação via Helm como aplicação do ArgoCD&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A instalação do Vault em um cluster Kubernetes pode ser feita utilizando Helm, com gerenciamento via ArgoCD. Para isso, é necessário salvar o arquivo values.yaml disponível no repositório oficial do Vault Helm Chart (&lt;a href="https://github.com/hashicorp/vault-helm/blob/main/values.yaml" rel="noopener noreferrer"&gt;link direto&lt;/a&gt;) em um diretório que já contenha outras aplicações gerenciadas pelo ArgoCD.&lt;/p&gt;

&lt;p&gt;Após realizar os ajustes necessários no arquivo values.yaml, uma aplicação deve ser criada referenciando esse arquivo no Helm chart. O manifesto dessa aplicação deve seguir a estrutura padrão do ArgoCD, definindo nome, namespace de destino, fontes de repositório (tanto do repositório Git da infraestrutura quanto do Helm chart), e a configuração de sincronização automática. Dessa maneira:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: vault
  namespace: argocd
spec:
  destination:
    namespace: ns-vault
    name: in-cluster
  project: default
  sources:
  - repoURL: git@github.com:Edools/mgc-infra.git
    targetRevision: main
    ref: values
  - repoURL: https://helm.releases.hashicorp.com
    chart: vault
    targetRevision: 0.29.1(versão do chart aqui)
    helm:
      valueFiles:
      - $values/caminho/para/values.yaml
  syncPolicy:
    automated:
      prune: true
      selfHeal: true 
    syncOptions:
    - CreateNamespace=true
    - ApplyOutOfSyncOnly=true
    - ServerSideApply=true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com o manifesto pronto, a aplicação pode ser instalada executando o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f caminho/para/application.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;É importante lembrar que o arquivo application.yaml deve estar versionado no repositório monitorado pelo ArgoCD, para que a sincronização ocorra corretamente.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Acesso à interface web&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Caso você deseje utilizar a interface web do Vault para gerenciar segredos ou realizar a configuração inicial, será necessário expor o serviço localmente, já que a instalação via ArgoCD com Helm não configura um recurso de Ingress por padrão.&lt;/p&gt;

&lt;p&gt;Para isso, execute um redirecionamento de porta com o seguinte comando, substituindo pelo namespace e nome do serviço correspondente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl port-forward -n &amp;lt;namespace&amp;gt; svc/&amp;lt;servico-do-vault&amp;gt; 8200:8200
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com o túnel criado, o acesso ficará disponível em &lt;a href="http://localhost:8200" rel="noopener noreferrer"&gt;http://localhost:8200&lt;/a&gt;. No primeiro acesso, o Vault solicitará o processo de inicialização, durante o qual serão geradas as Unseal Keys e o Root Token. Certifique-se de salvar essas informações com segurança, pois serão necessárias para desbloquear e administrar a instância.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Seal, Unseal e Root Token&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;O Vault opera em estado seguro por padrão, utilizando um mecanismo chamado &lt;strong&gt;Seal&lt;/strong&gt;, que impede qualquer leitura ou escrita de dados até que o serviço seja desbloqueado.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Seal&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;O Vault entra em modo selado automaticamente nas seguintes situações:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Após a inicialização;
&lt;/li&gt;
&lt;li&gt;Após reinício do serviço;
&lt;/li&gt;
&lt;li&gt;Após comando manual (vault operator seal);
&lt;/li&gt;
&lt;li&gt;Após falhas críticas ou perda de quorum em modo HA.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4q1av79u13u77tbifrus.png%3Fv%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4q1av79u13u77tbifrus.png%3Fv%3D1" alt="Menu lateral da interface web do HashiCorp Vault com as seções Dashboard, Secrets Engines, Access, Policies, Tools e Client Count visíveis" width="274" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Unseal&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Para desbloquear o Vault, é necessário realizar o processo de &lt;strong&gt;Unseal&lt;/strong&gt;. Durante a inicialização, o Vault gera várias &lt;strong&gt;Unseal Keys&lt;/strong&gt;. Um número mínimo delas (chamado de &lt;em&gt;quorum&lt;/em&gt;) precisa ser fornecido para o Vault entrar em modo operacional. Essas chaves podem ser inseridas tanto pela interface web quanto pela CLI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Web UI&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ao acessar a interface web as chaves de unseal serão solicitadas.!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgm6a7tr3wj4oierykl0n.png%3Fv%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgm6a7tr3wj4oierykl0n.png%3Fv%3D1" alt="Tela da interface web do HashiCorp Vault exibindo o estado " width="1994" height="1272"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CLI&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Forneça as chaves geradas uma a uma:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vault operator unseal &amp;lt;Unseal-Key-1&amp;gt;
vault operator unseal &amp;lt;Unseal-Key-2&amp;gt;
vault operator unseal &amp;lt;Unseal-Key-3&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Após atingir o quorum de keys necessário, o Vault será desbloqueado.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Root Token&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Junto das chaves de Unseal, o Vault também gera um &lt;strong&gt;Root Token&lt;/strong&gt;, que concede acesso administrativo completo. Esse token deve ser guardado com extremo cuidado.&lt;/p&gt;

&lt;p&gt;Com o Vault inicializado e desbloqueado, podemos agora armazenar e recuperar segredos de forma segura.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Como armazenar e recuperar segredos?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;O Vault utiliza engines de armazenamento para guardar informações de forma segura. A engine mais comum é a KV (Key/Value), que permite registrar segredos simples no formato de pares chave:valor. Esses segredos podem ser escritos tanto pela interface web quanto pela CLI.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Web UI&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Na interface web do Vault, acesse a engine KV configurada (normalmente no caminho secret/) e clique em "Create secret".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0hr7bqdn7wf750rvmc6u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0hr7bqdn7wf750rvmc6u.png" alt="Tela da interface web do Vault mostrando a seção de segredos na engine secret" width="800" height="147"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Uma nova tela será exibida para preenchimento dos dados. Você pode inserir os pares chave:valor diretamente ou colar um objeto JSON.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn37q4grcvqavj781dh5u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn37q4grcvqavj781dh5u.png" alt="Tela de criação de um segredo na interface web do Vault." width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F888e0m7m464e5hg5tl6d.png%3Fv%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F888e0m7m464e5hg5tl6d.png%3Fv%3D1" alt="Tela de criação de segredo no Vault com o modo JSON ativado." width="1068" height="752"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CLI&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O armazenamento pela linha de comando é feito com o comando vault kv put, seguido do caminho e dos pares de dados. Por exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vault kv put secret/db password=supersecret
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neste exemplo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;vault é o binário da CLI do Vault.
&lt;/li&gt;
&lt;li&gt;kv indica que estamos utilizando a engine KV.
&lt;/li&gt;
&lt;li&gt;put é a operação para gravar dados.
&lt;/li&gt;
&lt;li&gt;secret/db é o caminho onde o segredo será armazenado.
&lt;/li&gt;
&lt;li&gt;password=supersecret define a chave password com o valor supersecret.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esse comando criará (ou sobrescreverá) um segredo no caminho especificado, criptografando automaticamente os dados.&lt;/p&gt;

&lt;p&gt;Agora, se você quiser visualizar um segredo já armazenado, também é possível fazer isso tanto pela interface web quanto pela CLI.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Web UI&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Na Web UI, basta navegar até o caminho desejado dentro da engine e clicar sobre o item correspondente. Os valores armazenados serão exibidos em tela, junto com metadados como a versão e a data de modificação.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqvkp5n2zrm9ccc2s4rbs.png%3Fv%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqvkp5n2zrm9ccc2s4rbs.png%3Fv%3D1" alt="Tela de visualização de um segredo chamado example na interface web do Vault. Exibe duas chaves: key1, com valor visível value1, e key2, com valor oculto." width="1046" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CLI&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pela CLI, a leitura é feita com o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vault kv get secret/db
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse comando retorna os dados do segredo, incluindo todas as chaves e seus respectivos valores. O acesso será permitido apenas se a identidade ou token em uso tiver as permissões adequadas configuradas por meio de políticas.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Como habilitar um engine de segredos?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;O Vault é modular e permite habilitar diferentes tipos de engines de segredo conforme a necessidade do seu ambiente. A engine KV (Key/Value), usada nos exemplos anteriores, é apenas uma entre várias disponíveis. Você pode, por exemplo, habilitar engines para geração dinâmica de credenciais de banco de dados, certificados TLS via PKI, ou integração com provedores de nuvem.&lt;/p&gt;

&lt;p&gt;A habilitação de um engine define o caminho (prefixo) onde os segredos serão armazenados ou gerados, e pode ser feita tanto via Web UI quanto pela linha de comando.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Web UI&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Na interface web, acesse a seção “Secrets Engines” e clique em “Enable new engine”. Será exibido um painel para escolha do tipo de engine, onde você pode selecionar “Key/Value” (caso ainda não tenha sido habilitada) e definir o caminho onde os segredos serão armazenados, como secret/.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp5o9cr14in0dzev40xoi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp5o9cr14in0dzev40xoi.png" alt="Tela de habilitação de engine de segredos na interface web do Vault" width="800" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CLI&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O comando abaixo habilita uma engine KV no caminho secret/:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vault secrets enable -path=secret kv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neste comando:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;secrets enable ativa uma nova engine.
&lt;/li&gt;
&lt;li&gt;-path=secret define o prefixo pelo qual a engine será acessada.
&lt;/li&gt;
&lt;li&gt;kv especifica o tipo da engine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Com a engine habilitada e configurada, já é possível definir políticas de acesso que controlam quem pode visualizar, escrever ou gerenciar os segredos armazenados.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Como criar &lt;a href="https://developer.hashicorp.com/vault/docs/concepts/policies" rel="noopener noreferrer"&gt;políticas de acesso&lt;/a&gt;?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;O controle de acesso no Vault é feito por meio de políticas que definem, de forma precisa, quais ações um usuário ou aplicação pode realizar em determinados caminhos. Essas políticas são escritas em HCL (HashiCorp Configuration Language) e podem ser aplicadas via CLI ou criadas diretamente pela interface web.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Web UI&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Na Web UI, o processo começa acessando a seção “Policies” no menu lateral. Lá, clique em “Create ACL Policy” para abrir o editor de políticas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphq32cl748i6ilqe7afo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphq32cl748i6ilqe7afo.png" alt="Tela da interface web do Vault exibindo a seção “ACL Policies”." width="800" height="155"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Você poderá dar um nome à política e inserir as regras em HCL. Por exemplo, uma política que permite leitura em um segredo específico pode ser definida da seguinte forma:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flgnqz93uvj68ux6xjz8h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flgnqz93uvj68ux6xjz8h.png" alt="Tela de criação de política ACL no Vault. O campo “Name” está preenchido com o valor example. " width="800" height="505"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CLI&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esse mesmo resultado pode ser alcançado pela CLI. Primeiro, crie um arquivo chamado policy.hcl com o conteúdo desejado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;path "secret/data/db" {
  capabilities = ["read"]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois, aplique a política no Vault com o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vault policy write read-db policy.hcl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso registrará a política no Vault com o nome read-db. Posteriormente, essa política poderá ser associada a tokens, usuários, grupos ou entidades autenticadas, garantindo que apenas quem possui a permissão adequada possa acessar os segredos.&lt;/p&gt;

&lt;p&gt;Com as políticas criadas e aplicadas, já é possível avançar para a integração com outras ferramentas do ecossistema, como o ArgoCD, usando o ArgoCD Vault Plugin.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Integração com ArgoCD (via AVP)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Para integrar o Vault com aplicações gerenciadas via ArgoCD, é possível utilizar o &lt;strong&gt;ArgoCD Vault Plugin (AVP)&lt;/strong&gt;. Esse plugin permite que os manifests sejam declarados com referências a segredos armazenados no Vault, evitando que informações sensíveis fiquem versionadas em repositórios Git.&lt;/p&gt;

&lt;p&gt;A configuração do AVP no ArgoCD exige a instalação do plugin na imagem usada pelo repositório do ArgoCD. Após isso, o plugin fica responsável por interceptar os manifests antes de serem aplicados, substituindo as expressões com valores reais extraídos do Vault.&lt;/p&gt;

&lt;p&gt;Uma vez que o plugin esteja configurado, o uso nos manifests é bastante simples. Em vez de declarar diretamente um valor sensível, você pode referenciar o segredo armazenado no Vault utilizando a seguinte sintaxe:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: v1
kind: Secret
metadata:
  name: exemplo-secret
stringData:
  PASSWORD: &amp;lt;path:secret/data/db#password&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nesse exemplo, o valor da chave PASSWORD será extraído do caminho secret/data/db, buscando especificamente o campo password.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Alterei um segredo, e agora?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Após qualquer alteração nos segredos, é necessário realizar um &lt;strong&gt;Hard Refresh&lt;/strong&gt; da aplicação no ArgoCD para que os valores sejam reaplicados corretamente no cluster. Essa abordagem torna o processo mais seguro e dinâmico, eliminando a necessidade de manter cópias locais de senhas ou tokens sensíveis.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fir35bjplgjzob5x8zhbe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fir35bjplgjzob5x8zhbe.png" alt="Tela do ArgoCD exibindo o status de uma aplicação. A aplicação está com o estado de saúde “Healthy” e sincronizada com a branch main. No canto superior direito, o menu “Refresh” está expandido, mostrando a opção “Hard Refresh”, usada para forçar a revalidação dos manifests com base em fontes externas como o Vault." width="761" height="170"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Para saber mais:&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developer.hashicorp.com/vault/docs" rel="noopener noreferrer"&gt;&lt;strong&gt;Documentação Hashicorp Vault&lt;/strong&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://argocd-vault-plugin.readthedocs.io/en/stable/" rel="noopener noreferrer"&gt;&lt;strong&gt;ArgoCD Vault Plugin&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Integração do ArgoCD com clusters Kubernetes da Magalu Cloud</title>
      <dc:creator>Magalu Cloud</dc:creator>
      <pubDate>Tue, 02 Sep 2025 19:04:00 +0000</pubDate>
      <link>https://forem.com/magalucloud/integracao-do-argocd-com-clusters-kubernetes-da-magalu-cloud-l54</link>
      <guid>https://forem.com/magalucloud/integracao-do-argocd-com-clusters-kubernetes-da-magalu-cloud-l54</guid>
      <description>&lt;p&gt;Autor: &lt;a href="https://www.linkedin.com/in/sandro-savelli-062272144/" rel="noopener noreferrer"&gt;Sandro Savelli&lt;/a&gt;, &lt;a href="https://herospark.com/" rel="noopener noreferrer"&gt;Herospark&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Em times que trabalham com Kubernetes, é comum enfrentar desafios para garantir que o ambiente de produção esteja sempre sincronizado com os manifestos versionados no Git. Atualizações manuais, falta de rastreabilidade nas mudanças e divergências entre ambientes são apenas alguns dos problemas que colocam em risco a estabilidade das aplicações.&lt;/p&gt;

&lt;p&gt;Esse cenário se torna ainda mais complexo quando múltiplos clusters e equipes estão envolvidos, exigindo uma abordagem mais automatizada, segura e auditável para o processo de deploy.&lt;/p&gt;

&lt;p&gt;Neste artigo, mostraremos como o ArgoCD pode ser a solução para esses desafios, automatizando a entrega contínua em clusters Kubernetes com base em uma fonte de verdade única: o repositório Git. Você vai aprender como configurar o ArgoCD na Magalu Cloud utilizando Helm, integrar repositórios Git (via HTTPS ou SSH), criar aplicações tanto pela interface quanto por linha de comando, e até utilizar plugins como o ArgoCD Vault Plugin para lidar com segredos de forma segura.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Dependências necessárias&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://argo-cd.readthedocs.io/en/stable/cli_installation/" rel="noopener noreferrer"&gt;&lt;code&gt;argocd&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://kubernetes.io/docs/tasks/tools/" rel="noopener noreferrer"&gt;&lt;code&gt;kubectl&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://helm.sh/docs/intro/install/" rel="noopener noreferrer"&gt;&lt;code&gt;helm&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sbstp/kubie?tab=readme-ov-file" rel="noopener noreferrer"&gt;&lt;code&gt;kubie&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Acesso ao cluster MGC&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Para interagir com o cluster Kubernetes provisionado na &lt;strong&gt;Magalu Cloud (MGC)&lt;/strong&gt;, é necessário obter o arquivo de configuração de acesso (kubeconfig). Esse arquivo define as credenciais, o endpoint e o contexto necessário para executar comandos &lt;code&gt;kubectl&lt;/code&gt; ou gerenciar o cluster com ferramentas como &lt;code&gt;kubie&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;O processo começa acessando o console da MGC. No painel de Kubernetes, selecione o cluster desejado e utilize a opção &lt;strong&gt;“Download Config”&lt;/strong&gt; disponível no menu lateral.&lt;/p&gt;

&lt;p&gt;Com o arquivo &lt;code&gt;.yaml&lt;/code&gt; em mãos, o acesso ao cluster pode ser ativado via terminal usando o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ kubie ctx -f /caminho/para/config.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse comando define o contexto adequado para que todas as operações subsequentes sejam executadas diretamente no cluster correto. Caso não tenha o &lt;code&gt;kubie&lt;/code&gt; instalado, verifique os pré-requisitos mencionados na seção de dependências.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Instalação do ArgoCD com Helm&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;O &lt;strong&gt;ArgoCD&lt;/strong&gt; é uma ferramenta declarativa de entrega contínua (CD) para Kubernetes. Ele sincroniza o estado do cluster com os manifestos armazenados em repositórios Git, garantindo consistência e controle de versões para os recursos implantados.&lt;/p&gt;

&lt;p&gt;A instalação do &lt;strong&gt;ArgoCD&lt;/strong&gt; em um cluster Kubernetes da &lt;strong&gt;Magalu Cloud&lt;/strong&gt; pode ser feita de forma prática utilizando o &lt;strong&gt;Helm&lt;/strong&gt;, uma das abordagens mais recomendadas para esse tipo de setup. Caso prefira outro método de instalação, consulte a documentação oficial do ArgoCD.&lt;/p&gt;

&lt;p&gt;Para iniciar, salve o seguinte arquivo em um diretório local e ajuste conforme necessário: &lt;a href="https://github.com/argoproj/argo-helm/blob/main/charts/argo-cd/values.yaml" rel="noopener noreferrer"&gt;https://github.com/argoproj/argo-helm/blob/main/charts/argo-cd/values.yaml&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na maioria dos casos, os valores padrão já são suficientes. Basta configurar o &lt;strong&gt;Ingress&lt;/strong&gt; e o &lt;strong&gt;domínio&lt;/strong&gt; para refletirem o endereço onde o servidor do ArgoCD será exposto. O próprio README do repositório traz informações úteis sobre essas configurações e opções de escalabilidade com suporte à AWS.&lt;/p&gt;

&lt;p&gt;Com o arquivo &lt;code&gt;values.yaml&lt;/code&gt; ajustado, execute os comandos abaixo no terminal para instalar o ArgoCD no cluster:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ helm repo add argo https://argoproj.github.io/argo-helm
$ helm install -f /caminho/para/values.yaml argocd argo/argo-cd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Observação:&lt;/strong&gt; Ao utilizar as configurações padrão do ArgoCD, é criado automaticamente um usuário &lt;code&gt;admin&lt;/code&gt;, cuja senha inicial fica armazenada em um &lt;em&gt;Secret&lt;/em&gt; no namespace &lt;code&gt;argocd&lt;/code&gt;. Essa senha pode ser recuperada com o comando abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath='{.data.password}' | base64 -d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse usuário deve ser utilizado apenas para o setup inicial. A documentação oficial recomenda configurar outros usuários, com suporte a diferentes métodos de autenticação, como integração com Google, LDAP e SSO.&lt;/p&gt;

&lt;p&gt;Caso seja necessário atualizar a instalação do ArgoCD, basta modificar o arquivo &lt;code&gt;values.yaml&lt;/code&gt; e executar o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ helm upgrade -f /caminho/para/values.yaml argocd argo/argo-cd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;strong&gt;Como adicionar um repositório Git no ArgoCD? (SSH e HTTPS)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Para que o ArgoCD possa monitorar e sincronizar aplicações a partir de um repositório Git, é necessário configurar esse repositório como fonte de verdade. Essa conexão pode ser feita utilizando &lt;strong&gt;HTTPS&lt;/strong&gt; ou &lt;strong&gt;SSH&lt;/strong&gt;, a depender do controle de acesso e da política de autenticação adotada pelo time.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HTTPS&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A autenticação por HTTPS pode ser feita diretamente pela interface do ArgoCD. Basta acessar o painel, navegar até &lt;strong&gt;Settings Repositories&lt;/strong&gt; e utilizar a opção &lt;strong&gt;Connect Repo&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Ao informar a URL do repositório (por exemplo, &lt;code&gt;https://github.com/usuario/repositorio.git&lt;/code&gt;), o ArgoCD aceitará autenticação anônima ou credenciais via &lt;strong&gt;usuário e senha&lt;/strong&gt; ou &lt;strong&gt;token pessoal (PAT)&lt;/strong&gt;, caso o repositório seja privado.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm4bgec3t4b1w9270yo1t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm4bgec3t4b1w9270yo1t.png" alt="Tela do ArgoCD configurando conexão com repositório Git" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A interface exibe os campos: tipo do repositório (git), nome (example), projeto (default), URL (&lt;a href="https://github.com/example/repo.git" rel="noopener noreferrer"&gt;https://github.com/example/repo.git&lt;/a&gt;), além de opções para usuário e senha. No topo, há botões para conectar, salvar como template de credenciais e cancelar.&lt;/p&gt;

&lt;p&gt;Esse método é especialmente útil para times que utilizam autenticação centralizada por tokens e desejam evitar a gestão de chaves SSH no ambiente.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SSH&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para conexões mais seguras e controladas, recomenda-se utilizar &lt;strong&gt;chaves SSH&lt;/strong&gt;. Nesse caso, é necessário gerar um par de chaves (ou utilizar um já existente) e registrar a &lt;strong&gt;chave pública&lt;/strong&gt; como &lt;em&gt;Deploy Key&lt;/em&gt; no repositório desejado, seja no GitHub, GitLab ou Bitbucket.&lt;/p&gt;

&lt;p&gt;No ArgoCD, também via &lt;strong&gt;Settings Repositories&lt;/strong&gt;, selecione a opção &lt;strong&gt;Connect Repo using SSH&lt;/strong&gt; e informe a URL no formato &lt;code&gt;git@github.com:usuario/repositorio.git&lt;/code&gt;, além da &lt;strong&gt;chave privada&lt;/strong&gt; correspondente.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foeeobe3drerhmpgzjika.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foeeobe3drerhmpgzjika.png" alt="Tela do ArgoCD conectando repositório Git via SSH" width="800" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A interface mostra os campos: Nome obrigatório (&lt;em&gt;example&lt;/em&gt;), Projeto (&lt;em&gt;default&lt;/em&gt;), URL do repositório (&lt;code&gt;git@github.com:example/repo.git&lt;/code&gt;) e chave privada SSH (&lt;code&gt;&amp;lt;PRIVATE_KEY&amp;gt;&lt;/code&gt;). No topo, estão os botões &lt;strong&gt;Connect&lt;/strong&gt;, &lt;strong&gt;Save as Credentials Template&lt;/strong&gt; e &lt;strong&gt;Cancel&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;O uso de SSH é uma prática comum em ambientes com maior exigência de segurança, já que permite revogação granular de acesso por chave e separação clara entre ambientes.&lt;/p&gt;

&lt;p&gt;Com o repositório Git devidamente configurado no ArgoCD, o próximo passo é definir o que será implantado e como essa sincronização acontecerá. É aqui que entra o conceito de Application.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;O que é um Application e como criar um?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Um Application no ArgoCD é a representação de um conjunto de recursos Kubernetes que serão sincronizados a partir de um repositório Git. Ele define o destino (cluster e namespace), a origem (repo e caminho) e o método de sincronização.&lt;/p&gt;

&lt;p&gt;Nos exemplos abaixo estamos considerando essa estrutura de arquivos com mgc sendo a pasta repositório (importante dizer que é possível combinar estrutura de manifestos com helm charts):&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manifesto&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mgc
├── applications # Deploy das aplicações
│   ├── airflow
│   │   ├── manifestos
│   │   │   ├── airflow.yaml
│   │   │   ├── secret.yaml   
│   │   ├── application.yaml
├── initial-addons # Helm charts aplicados manualmente
│   ├── argocd_values.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Helm chart&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mgc
├── apps # Deploy das aplicações
│   ├── airflow
│   │   ├── airflow-values.yaml 
│   │   ├── application.yaml
├── initial-addons # Helm charts aplicados manualmente
│   ├── argocd_values.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Via Interface Web (UI)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A maneira mais acessível de criar um &lt;em&gt;Application&lt;/em&gt; no ArgoCD é pela interface web, ideal para times em fase inicial de adoção do GitOps. Ao criar uma nova aplicação, você define os parâmetros que o ArgoCD usará para monitorar, sincronizar e aplicar os recursos no cluster:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Application Name&lt;/strong&gt;: nome da aplicação.

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Project&lt;/strong&gt;: &lt;code&gt;default&lt;/code&gt; (ou outro).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sync Policy&lt;/strong&gt;: &lt;code&gt;Automatic&lt;/code&gt; (recomendado para CD).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repository URL&lt;/strong&gt;: Git HTTPS ou SSH.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Revision&lt;/strong&gt;: ex: &lt;code&gt;main&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Path&lt;/strong&gt;: apps/airflow/
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cluster URL&lt;/strong&gt;: geralmente &lt;code&gt;https://kubernetes.default.svc&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Namespace&lt;/strong&gt;: &lt;code&gt;default&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Após preencher essas informações, a aplicação pode ser criada com um clique no botão Create, e o ArgoCD iniciará o processo de sincronização conforme as configurações definidas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0d8p0boe69u6vc1nbrkf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0d8p0boe69u6vc1nbrkf.png" alt="Tela de criação de aplicação no ArgoCD" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A interface exibe os botões &lt;strong&gt;CREATE&lt;/strong&gt; e &lt;strong&gt;CANCEL&lt;/strong&gt; no topo.&lt;br&gt;&lt;br&gt;
Na seção &lt;strong&gt;GENERAL&lt;/strong&gt;, aparecem os campos &lt;em&gt;Application Name&lt;/em&gt; (preenchido com &lt;code&gt;example-application&lt;/code&gt;) e &lt;em&gt;Project Name&lt;/em&gt; (&lt;code&gt;default&lt;/code&gt;), além da política de sincronização (&lt;em&gt;SYNC POLICY&lt;/em&gt;) configurada como &lt;strong&gt;Manual&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;Entre as opções adicionais estão checkboxes como &lt;em&gt;Set Deletion Finalizer&lt;/em&gt;, &lt;em&gt;Skip Schema Validation&lt;/em&gt;, &lt;em&gt;Prune Last&lt;/em&gt;, &lt;em&gt;Respect Ignore Differences&lt;/em&gt;, &lt;em&gt;Replace&lt;/em&gt; e &lt;em&gt;Retry&lt;/em&gt;, além de configurações à direita como &lt;em&gt;Auto-create Namespace&lt;/em&gt;, &lt;em&gt;Apply Out of Sync Only&lt;/em&gt; e &lt;em&gt;Server Side Apply&lt;/em&gt;. A política de propagação de prune está definida como &lt;strong&gt;foreground&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;Na seção &lt;strong&gt;SOURCE&lt;/strong&gt;, os campos exibidos são: &lt;em&gt;Repository URL&lt;/em&gt; (&lt;code&gt;git@github.com:example/repo.git&lt;/code&gt;), &lt;em&gt;Revision&lt;/em&gt; (&lt;code&gt;HEAD&lt;/code&gt;) e &lt;em&gt;Path&lt;/em&gt; (&lt;code&gt;/&lt;/code&gt;).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; &lt;strong&gt;Via CLI (argocd)&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para quem já tem o ArgoCD instalado e deseja automatizar a criação de aplicações ou integrá-la em pipelines, a CLI do ArgoCD é uma ferramenta poderosa. Ela permite registrar novos &lt;em&gt;Applications&lt;/em&gt; diretamente via terminal, sem necessidade de interação com a interface web.&lt;/p&gt;

&lt;p&gt;Após autenticar-se no servidor do ArgoCD com o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;argocd login argocd.example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;É possível criar uma nova aplicação com o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;argocd app create app-demo &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--repo&lt;/span&gt; https://github.com/user/repository.git &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--path&lt;/span&gt; apps/airflow/ &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--dest-server&lt;/span&gt; https://kubernetes.default.svc &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--dest-namespace&lt;/span&gt; default &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--sync-policy&lt;/span&gt; automated
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse comando define o nome da aplicação (&lt;code&gt;app-demo&lt;/code&gt;), o repositório e caminho onde estão os manifestos ou Helm charts, o cluster e namespace de destino, além de ativar a sincronização automática.&lt;/p&gt;

&lt;p&gt;Se for necessário aplicar os recursos imediatamente após a criação, basta rodar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;argocd app &lt;span class="nb"&gt;sync &lt;/span&gt;app-demo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse fluxo via CLI é especialmente útil em ambientes automatizados, como scripts de provisionamento, pipelines CI/CD ou setup de novos ambientes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Via Terminal (kubectl + YAML)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A forma mais declarativa de criar aplicações no ArgoCD é utilizando arquivos YAML com o recurso &lt;code&gt;Application&lt;/code&gt;. Essa abordagem se alinha totalmente à filosofia GitOps, permitindo que a definição das aplicações seja versionada e aplicada via &lt;code&gt;kubectl&lt;/code&gt;, como qualquer outro recurso do Kubernetes.&lt;/p&gt;

&lt;p&gt;Essa prática é útil tanto para ambientes automatizados quanto para times que mantêm o controle total da infraestrutura como código.&lt;/p&gt;

&lt;p&gt;Abaixo, dois exemplos de &lt;code&gt;Application&lt;/code&gt; - um utilizando manifestos Kubernetes e outro com Helm Charts como fonte:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;application.yaml usando source GitHub e aplicando manifestos Kubernetes&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
 name: app-demo
spec:
 destination:
   server: https://kubernetes.default.svc
   namespace: default
 source:
   repoURL: git@github.com:usuario/repositorio.git
   path: apps/airflow/manifestos
   targetRevision: main
 project: default
 syncPolicy:
   automated:
     prune: true
     selfHeal: true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;application.yaml usando source GitHub e aplicando Helm Charts&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
 name: app-demo
spec:
 destination:
   server: https://kubernetes.default.svc
   namespace: default
 source:
   repoURL: git@github.com:usuario/repositorio.git
   path: charts/minha-app
   targetRevision: main
   helm:
     valueFiles:
       - $values/apps/airflow/airflow-values.yaml
 project: default
 syncPolicy:
   automated:
     prune: true
     selfHeal: true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Após salvar o conteúdo em um arquivo (por exemplo, &lt;code&gt;application.yaml&lt;/code&gt;), aplique-o no cluster com o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f application.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois de definir uma aplicação no ArgoCD, apontando origem, destino e regras de sincronização, é comum que os manifestos incluam valores sensíveis, como senhas, tokens ou chaves de API. Manter esses dados seguros e, ao mesmo tempo, alinhados à prática de versionamento, é um dos principais desafios em ambientes Kubernetes.&lt;/p&gt;

&lt;p&gt;Para lidar com esse cenário de forma segura e escalável, o ArgoCD oferece suporte ao Vault Plugin (AVP), que permite a injeção dinâmica de segredos diretamente nos manifestos, sem expor essas informações no repositório Git.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;AVP Plugin e como utilizar nos manifestos que serão aplicados?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;O &lt;strong&gt;Vault Plugin (AVP)&lt;/strong&gt; é uma extensão que permite injetar segredos diretamente nos manifestos a partir de provedores, sem que esses dados fiquem explícitos nos arquivos versionados.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Exemplo de uso nos manifestos&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;apiVersion: v1
kind: ConfigMap
metadata:
 name: exemplo-configmap
data:
 DB_PASSWORD: &lt;span class="nt"&gt;&amp;lt;path:secret&lt;/span&gt;&lt;span class="err"&gt;/data/postgres#password&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sempre que houver alterações nos segredos utilizados nos manifestos, especialmente quando gerenciados por meio do ArgoCD Vault Plugin, é necessário realizar um &lt;strong&gt;Hard Refresh&lt;/strong&gt; na aplicação correspondente dentro do ArgoCD. Isso garante que os novos valores sejam buscados e aplicados corretamente no cluster, já que o ArgoCD não detecta mudanças em dados externos por padrão.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fos4kvrrms4lvpht7fbzz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fos4kvrrms4lvpht7fbzz.png" alt="Tela de aplicação no ArgoCD." width="761" height="170"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A interface exibe botões de controle como &lt;strong&gt;Details&lt;/strong&gt;, &lt;strong&gt;Diff&lt;/strong&gt;, &lt;strong&gt;Sync&lt;/strong&gt;, &lt;strong&gt;Sync Status&lt;/strong&gt;, &lt;strong&gt;History and Rollback&lt;/strong&gt;, &lt;strong&gt;Delete&lt;/strong&gt; e &lt;strong&gt;Refresh&lt;/strong&gt; (com opção de &lt;em&gt;Hard Refresh&lt;/em&gt;).  &lt;/p&gt;

&lt;p&gt;O estado da aplicação mostra &lt;strong&gt;Healthy&lt;/strong&gt;, com sincronização marcada como &lt;strong&gt;Synced to main (13d61ad)&lt;/strong&gt; e modo automático habilitado.  &lt;/p&gt;

&lt;p&gt;A última sincronização foi bem-sucedida para o commit &lt;code&gt;84ab096&lt;/code&gt;, realizada há 7 dias, acompanhada do comentário &lt;em&gt;"feat: nodopaol affinity"&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Para saber mais:&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://argo-cd.readthedocs.io" rel="noopener noreferrer"&gt;&lt;strong&gt;Documentação ArgoCD&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://argocd-vault-plugin.readthedocs.io/en/stable/" rel="noopener noreferrer"&gt;&lt;strong&gt;ArgoCD Vault Plugin&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>magalucloud</category>
      <category>cloud</category>
      <category>argocd</category>
      <category>kubernetes</category>
    </item>
  </channel>
</rss>
