<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Devprime | Documentação – DigitalOcean</title>
    <link>https://docs.Devprime.io/pt-br/deployment/digitalocean/</link>
    <description>Recent content in DigitalOcean on Devprime | Documentação</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    
	  <atom:link href="https://docs.Devprime.io/pt-br/deployment/digitalocean/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Deployment: Droplet</title>
      <link>https://docs.Devprime.io/pt-br/deployment/digitalocean/droplet/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.Devprime.io/pt-br/deployment/digitalocean/droplet/</guid>
      <description>
        
        
        &lt;p&gt;&lt;img src=&#34;https://docs.Devprime.io/images/deployment/digitalocean/droplet/featured.png&#34; alt=&#34;Deploying a Devprime Microservice on a Droplet in DigitalOcean&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;introdução&#34;&gt;Introdução&lt;/h3&gt;
&lt;p&gt;A &lt;a href=&#34;https://devprime.io&#34;&gt;plataforma Devprime&lt;/a&gt; acelera a produtividade do desenvolvedor de software, oferecendo um projeto completo de arquitetura de software, componentes com comportamentos inteligentes, aceleradores para a implementação de código e atualizações com novos recursos.&lt;/p&gt;
&lt;p&gt;Durante este artigo, usaremos um microsserviço com uma regra de negócio relacionada a pedidos, um banco de dados no MongoDB. Demonstraremos os passos para criar o microsserviço, os serviços de hospedagem na DigitalOcean e, em seguida, as configurações necessárias para disponibilizá-lo usando o plano gratuito.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Checklist e preparação do ambiente local inicial:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Abra uma conta na &lt;a href=&#34;https://devprime.io&#34;&gt;plataforma Devprime&lt;/a&gt; e adquira uma &lt;a href=&#34;https://devprime.io/pricing&#34;&gt;licença (Developer/Enterprise)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Instale uma versão atualizada do .NET (Linux, macOS e Windows).&lt;/li&gt;
&lt;li&gt;Instale e/ou atualize o Visual Studio Code e/ou o Visual Studio 2023 Community / Professional / Enterprise.&lt;/li&gt;
&lt;li&gt;Instale e/ou atualize o Docker (Para Windows, utilize o WSL2).&lt;/li&gt;
&lt;li&gt;Inicialize os contêineres do &lt;a href=&#34;../../../quick-start/docker/&#34;&gt;MongoDB e RabbitMQ utilizando o Docker&lt;/a&gt; e adicione a fila &amp;lsquo;orderevents&amp;rsquo; usando o &lt;a href=&#34;../../../quick-start/docker/using-rabbitmq/&#34;&gt;RabbitMQ&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Instale e ative a versão mais nova do &lt;a href=&#34;../../../quick-start/install-devprime-cli/&#34;&gt;Devprime CLI&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Crie uma pasta para os seus projetos e defina as permissões de leitura e gravação.&lt;/li&gt;
&lt;li&gt;Consulte o artigo &amp;ldquo;&lt;a href=&#34;../../../quick-start/creating-the-first-microservice/&#34;&gt;Criando o primeiro microsserviço&lt;/a&gt;&amp;rdquo; para explorar os primeiros passos na plataforma Devprime.&lt;/li&gt;
&lt;li&gt;Abra uma conta de Cloud na &lt;a href=&#34;https://m.do.co/c/7027ac82ba3c&#34;&gt;DigitalOcean&lt;/a&gt;&lt;br&gt;
(Your $200 Credit, You&amp;rsquo;ve been invited to DigitalOcean! Sign up and get a $200, 60-day credit to try our products. Spend $25 after your credit expires and whoever referred you will get $25 in credit!)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;criando-um-microsserviço-para-utilizar-no-exemplo&#34;&gt;Criando um microsserviço para utilizar no exemplo&lt;/h3&gt;
&lt;p&gt;O primeiro passo é criar um novo microsserviço para utilizá-lo como modelo para publicação na nuvem. O nome deste microsserviço será definido como &amp;ldquo;ms-order&amp;rdquo;, e utilizaremos o banco de dados MongoDB e a stream do RabbitMQ, conforme demonstrado no comando abaixo.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Crie uma pasta chamada &lt;code&gt;\do&lt;/code&gt; e entre nela.&lt;/li&gt;
&lt;li&gt;Execute o Devprime CLI para criar o primeiro microsserviço:&lt;br&gt;
&lt;code&gt;dp new ms-order --stream rabbitmq --state MongoDB&lt;/code&gt;&lt;br&gt;
&lt;img src=&#34;https://docs.Devprime.io/images/deployment/digitalocean/droplet/devprime-cli-dp-new-microservice-small.png&#34; alt=&#34;Devprime using DigitalOcean&#34;&gt;&lt;/li&gt;
&lt;li&gt;Adicione uma regra de negócio de exemplo &amp;ldquo;Order&amp;rdquo; com o comportamento de uma classe Aggregate Root e outra classe entity. Entre na pasta &lt;code&gt;\do\ms-order&lt;/code&gt; e digite:&lt;br&gt;
&lt;code&gt;dp marketplace order&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Ative o acelerador do Devprime CLI para construir implementações do microsserviço, como repositório, serviço de aplicação, exposição de APIs e comunicação entre as camadas da aplicação: &lt;br&gt;
&lt;code&gt;dp init&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Após a criação do novo microsserviço, entre na pasta do projeto &amp;ldquo;ms-order&amp;rdquo; e você já pode visualizar todas as implementações pelo Visual Studio Code conforme demonstrado no artigo relacionado à &lt;a href=&#34;../../../quick-start/creating-the-first-microservice/&#34;&gt;criação do primeiro microsserviço&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Para abrir no Visual Studio Code:&lt;/em&gt;&lt;br&gt;
&lt;code&gt;code .&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Neste momento não utilizaremos o RabbitMQ e vamos desabilitar nas &lt;a href=&#34;../../../settings/stream/&#34;&gt;configurações do Adapter de Stream&lt;/a&gt; por meio do arquivo de configuração em &lt;code&gt;src\App\appsettings.json&lt;/code&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Entre na nova pasta &lt;code&gt;ms-order&lt;/code&gt; e abra pelo Visual Studio Code&lt;br&gt;
&lt;code&gt;code src\App\appsettings.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Localize a chave &amp;ldquo;DevPrime_Stream&amp;rdquo; e na opção &amp;ldquo;Enable&amp;rdquo; coloque &amp;ldquo;false&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Altere o Handler &amp;ldquo;OrderCreated&amp;rdquo; comentando a linha &amp;ldquo;Dp.Stream.Send(destination, eventName, eventData);&amp;rdquo; para que não haja envio de evento pelo Stream.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Abra o Handler pelo Visual Studio Code&lt;br&gt;
&lt;code&gt;src\Core\Application\EventHandlers\Order\OrderCreatedEventHandler.cs&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;executando-o-novo-microsserviço-order&#34;&gt;Executando o novo microsserviço Order&lt;/h3&gt;
&lt;p&gt;Os passos anteriores habilitam um microsserviço pronto para produção com as regras de negócio obtidas pelo marketplace da Devprime.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Permissão chmod no Linux, macOS&lt;/strong&gt;&lt;br&gt;
Para executar o arquivo &amp;ldquo;.sh&amp;rdquo; no (Linux, macOS) é necessário adicionar a permissão abaixo tornando o script executável.&lt;br&gt;
&lt;code&gt;chmod +x run.sh&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Inicie o microsserviço executando um dos scripts abaixo:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;.\run.ps1 (Windows) ou ./run.sh (Linux, macOS)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;O microsserviço pode ser executado localmente nos ambientes Linux, macOS e Windows conforme o exemplo abaixo:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.Devprime.io/images/deployment/digitalocean/droplet/devprime-run-mongodb-rabbitmq-small.png&#34; alt=&#34;Devprime using DigitalOcean&#34;&gt;&lt;/p&gt;
&lt;p&gt;Ao acessar a API do microsserviço ms-order já temos uma &amp;ldquo;OpenAPI&amp;rdquo; implementada.&lt;br&gt;
&lt;img src=&#34;https://docs.Devprime.io/images/deployment/digitalocean/droplet/devprime-swagger-openapi-small.png&#34; alt=&#34;Devprime using DigitalOcean&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;acessando-o-arquivo-de-configuração-do-microsserviço&#34;&gt;Acessando o arquivo de configuração do microsserviço&lt;/h3&gt;
&lt;p&gt;No ambiente local, você pode editar, se necessário, configurações e credenciais da aplicação no arquivo &lt;code&gt;src/App/appsettings.json&lt;/code&gt;, como os dados de acesso ao MongoDB e ao RabbitMQ utilizados no projeto.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Para abrir no Visual Studio Code:&lt;/em&gt;&lt;br&gt;
&lt;code&gt;code src/App/appsettings.json&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;criando-um-novo-droplet-e-mongodb-na-digitalocean&#34;&gt;Criando um novo Droplet e MongoDB na DigitalOcean&lt;/h3&gt;
&lt;p&gt;O próximo passo é criar um novo Droplet utilizando como base a imagem &amp;ldquo;Ubuntu 23.10 x64&amp;rdquo; escolhendo a configuração básica de 1 CPU e 512 MB de memória RAM. Uma característica interessante nessa máquina virtual da DigitalOcean é a velocidade de provisionamento, estando já disponível em segundos.&lt;/p&gt;
&lt;p&gt;Durante a criação lembre de ativar a opção &amp;ldquo;Add improved metrics monitoring and alerting (free)&amp;rdquo; para habilitar uma melhor visualização das metricas.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.Devprime.io/images/deployment/digitalocean/droplet/digitalocean-droplet.png&#34; alt=&#34;Devprime using DigitalOcean&#34;&gt;&lt;/p&gt;
&lt;p&gt;Você tem a opção de implantar serviços diretamente em seu Droplet, porém, como a DigitalOcean oferece alguns outros recursos gerenciados e para efeitos dessa demonstração, nós criaremos uma instância do MongoDB.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.Devprime.io/images/deployment/digitalocean/droplet/digitalocean-database-engine-mongodb-kafka.png&#34; alt=&#34;Devprime using DigitalOcean&#34;&gt;&lt;/p&gt;
&lt;p&gt;Abaixo é possível visualizar o resumo do dashboard na DigitalOcean com os três serviços criados (Droplet, MongoDB) e disponíveis para utilização.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.Devprime.io/images/deployment/digitalocean/droplet/digitalocean-dashboard-small-v1.png&#34; alt=&#34;Devprime using DigitalOcean&#34;&gt;&lt;/p&gt;
&lt;p&gt;O próximo passo é você obter as credenciais e connection strings do MongoDB &amp;ldquo;db-mongodb-nyc1-demo&amp;rdquo; para adicionar em seu arquivo de configuração no microsserviço.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.Devprime.io/images/deployment/digitalocean/droplet/digitalocean-db-mongo-nyc1.png&#34; alt=&#34;Devprime using DigitalOcean&#34;&gt;&lt;/p&gt;
&lt;p&gt;Depois localize o item DevPrime_State e em connection adicione os dados de conexão do banco de dados db-mongo-nyc1-demo.&lt;/p&gt;
&lt;p&gt;Abra as configurações&lt;br&gt;
&lt;code&gt;code src\App\appsettings.json&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DevPrime_State&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;enable&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;true&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;alias&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;State1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;db&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;dbtype&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mongodb&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;connection&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mongodb://mongoadmin:LltF8Nx*yo@localhost:27017&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;timeout&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;retry&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;dbname&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ms-order&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;isssl&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;true&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;durationofbreak&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;45&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ]&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Nesse momento, você pode executar novamente a aplicação e efetuar um post utilizando a API. Se as credenciais estiverem corretas, já estará acessando o banco de dados.&lt;/p&gt;
&lt;h3 id=&#34;instalando-net-runtime-ou-sdk-no-droplet-na-digitalocean&#34;&gt;Instalando .NET Runtime ou SDK no Droplet na DigitalOcean&lt;/h3&gt;
&lt;p&gt;Uma aplicação baseada na plataforma .NET pode ser executada no Linux, macOS e Windows. Temos a opção de instalar apenas o Runtime ou escolher o SDK quando você desejar efetuar um build dentro do próprio ambiente da máquina virtual (DROPLET).&lt;/p&gt;
&lt;p&gt;Neste artigo, estamos adotando a opção do Runtime. Para isso, basta acessar o portal da DigitalOcean, no terminal, e/ou utilizar uma ferramenta SSH ou Putty no Windows.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt-get update &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  sudo apt-get install -y aspnetcore-runtime-8.0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://learn.microsoft.com/en-us/dotnet/core/install/linux-ubuntu-install?pivots=os-linux-ubuntu-2310&amp;amp;tabs=dotnet8&#34;&gt;Instalar .NET SDK ou .NET Runtime no Ubuntu&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;exportando-microsserviço-e-publicando-na-digitalocean&#34;&gt;Exportando microsserviço e publicando na DigitalOcean&lt;/h3&gt;
&lt;p&gt;Efetuaremos um build do microsserviço localmente e, posteriormente, enviaremos utilizando um cliente FTP qualquer. Conectamos no FTP utilizando o protocolo SFTP na porta 22, utilizando o usuário &amp;ldquo;root&amp;rdquo; e a senha informada na criação do Droplet.&lt;/p&gt;
&lt;p&gt;Antes de publicar, alteraremos a porta padrão utilizada no arquivo de configuração. Para isso, localize o item &amp;ldquo;DevPrime_Web&amp;rdquo; e, em URL, mantenha apenas o valor &lt;code&gt;&amp;quot;url&amp;quot;: &amp;quot;http://*:80&amp;quot;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Abra as configurações:&lt;br&gt;
&lt;code&gt;code src\App\appsettings.json&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Agora, entre na pasta raiz do projeto e execute o comando publish para que o .NET exporte uma versão publicável utilizando o .NET Runtime na pasta de saída output no parâmetro -o.&lt;/p&gt;
&lt;p&gt;Execute o comando:&lt;br&gt;
&lt;code&gt;dotnet publish .\src\App\App.csproj -c Release -o output&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Entre no droplet pelo terminal usando SSH e crie uma pasta na raiz:&lt;br&gt;
&lt;code&gt;/devprime&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Utilize o FTP para enviar o conteúdo da pasta local &lt;code&gt;ms-order/output&lt;/code&gt; para a pasta de destino &lt;code&gt;/devprime&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;No terminal execute a aplicação dentro da pasta &lt;code&gt;/devprime&lt;/code&gt;:&lt;br&gt;
&lt;code&gt;dotnet App.dll&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;acessando-o-microsserviço-pela-internet-pública&#34;&gt;Acessando o microsserviço pela internet pública&lt;/h3&gt;
&lt;p&gt;Ao utilizar uma Droplet, a implementação deixa todas as portas abertas. Como configuramos a URL &amp;ldquo;http://*:80&amp;rdquo; com a porta 80 no adaptador de Web, você já pode acessar diretamente pelo IP do Droplet. Para utilizar SSL, é necessário configurar um domínio para o IP do Droplet e utilizar um Nginx com Let&amp;rsquo;s Encrypt, por exemplo, para gerar um certificado.&lt;/p&gt;
&lt;p&gt;Acesse o seu Droplet e obtenha o IP público para acessar por HTTP apenas, por exemplo, &lt;code&gt;http://127.0.0.1&lt;/code&gt;, onde &lt;code&gt;127.0.0.1&lt;/code&gt; será o seu IP do Droplet. Ao final do teste pare a sua aplicação para continuar no próximo passo.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.Devprime.io/images/deployment/digitalocean/droplet/devprime-microservices-digitalocean-open.png&#34; alt=&#34;Devprime using DigitalOcean&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;configurando-o-microsserviço-como-serviço-no-linux&#34;&gt;Configurando o microsserviço como serviço no Linux&lt;/h3&gt;
&lt;p&gt;Um recurso importante ao trabalhar com sua aplicação dentro de um ambiente como Droplet / máquina virtual é configurar a aplicação como serviço para garantir que ela continue executando mesmo se o ambiente for reiniciado.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Abra o nano para adicionar o código do serviço devprime:&lt;br&gt;
&lt;code&gt;sudo nano /etc/systemd/system/devprime.service&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Adicione o conteúdo abaixo e saia salvando.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;Unit&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Description&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;Order Microservice
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;After&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;network.target
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;Service&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;WorkingDirectory&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/devprime
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ExecStart&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/usr/bin/dotnet /devprime/App.dll
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Restart&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;always
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Define o tempo limite de inatividade (em segundos)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TimeoutStopSec&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;RestartSec&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;Install&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;WantedBy&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;multi-user.target
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;
&lt;p&gt;Reinicie o daemon:&lt;br&gt;
&lt;code&gt;sudo systemctl daemon-reload&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Habilite o novo serviço devprime:&lt;br&gt;
&lt;code&gt;sudo systemctl enable devprime&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Iniciando o serviço. Nesse momento, você já pode acessar pela Web novamente:&lt;br&gt;
&lt;code&gt;sudo systemctl start devprime&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Verificando o status:&lt;br&gt;
&lt;code&gt;sudo systemctl status devprime&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Opcional para reiniciar o serviço quando necessário:&lt;br&gt;
&lt;code&gt;sudo systemctl restart devprime&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Acompanhando os logs do microsserviço:&lt;br&gt;
&lt;code&gt;sudo journalctl -f -u devprime&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Opcional, caso não apresente logs no item 7:&lt;br&gt;
&lt;code&gt;sudo systemctl restart systemd-journald&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Nesse momento, você já pode executar um cURL internamente e confirmar que o serviço está rodando. Você pode, inclusive, reiniciar o Droplet e testar novamente a conectividade interna e externa validando que o serviço iniicou sozinho.&lt;br&gt;
&lt;code&gt;curl -X GET http://127.0.0.1:80&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;adicionando-um-certificado-ssl-usando-nginx&#34;&gt;Adicionando um Certificado SSL Usando Nginx&lt;/h3&gt;
&lt;p&gt;Para utilizar o HTTPS, é necessário ter um domínio configurado e apontando para o IP do seu Droplet. Esse domínio pode estar configurado dentro da DigitalOcean em MANAGE &amp;gt; Networking &amp;gt; Domains ou externamente. Neste guia, utilizaremos um subdomínio chamado &amp;ldquo;do.devprime.io&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;É importante lembrar que o Nginx será executado nas portas 80/443. Por isso, mudaremos nosso microserviço para a porta 5000, pois o acesso a ele será feito pelo Nginx internamente e não mais diretamente exposto.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Abra as configurações do seu projeto e altere o item URL para &lt;code&gt;&amp;quot;url&amp;quot;: &amp;quot;http://*:5000&amp;quot;&lt;/code&gt;. Você pode fazer isso no projeto original conforme passos anteriores e republicar via FTP ou editar o &lt;code&gt;appsettings.json&lt;/code&gt; dentro do Droplet.&lt;br&gt;
&lt;code&gt;nano appsettings.json&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reinicie o microserviço.&lt;br&gt;
&lt;code&gt;sudo systemctl restart devprime&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Instalando o Nginx no Droplet.&lt;br&gt;
&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install nginx&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Verificando o status.&lt;br&gt;
&lt;code&gt;sudo systemctl status nginx&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tornando o Nginx um Service.&lt;br&gt;
&lt;code&gt;sudo systemctl enable nginx&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Instalando Certbot e o plugin Nginx.&lt;br&gt;
&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install certbot&lt;/code&gt;&lt;br&gt;
&lt;code&gt;sudo apt install python3-certbot-nginx&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Criando certificado SSL Let&amp;rsquo;s Encrypt. Não execute antes de validar a propagação do seu DNS para o IP do droplet. Lembre de modificar o nome do domínio nos itens abaixo.&lt;br&gt;
&lt;code&gt;sudo certbot certonly --nginx -d do.devprime.io --email your-email@your-domain.com&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Utilize o seu domínio no Nginx.&lt;br&gt;
&lt;code&gt;sudo nano /etc/nginx/sites-available/do.devprime.io&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;18
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;19
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;20
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;21
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;22
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;23
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;24
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;25
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;26
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;27
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;28
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;29
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;30
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;server &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    listen 80;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    server_name &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;.devprime.io;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    location / &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        proxy_pass http://localhost:5000;  &lt;span style=&#34;color:#75715e&#34;&gt;# Porta interna da sua aplicação&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        proxy_http_version 1.1;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        proxy_set_header Upgrade $http_upgrade;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        proxy_set_header Connection keep-alive;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        proxy_set_header Host $host;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        proxy_cache_bypass $http_upgrade;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;server &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    listen &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt; ssl;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    server_name &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;.devprime.io;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ssl_certificate /etc/letsencrypt/live/do.devprime.io/fullchain.pem;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ssl_certificate_key /etc/letsencrypt/live/do.devprime.io/privkey.pem;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    location / &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        proxy_pass http://localhost:5000;  &lt;span style=&#34;color:#75715e&#34;&gt;# Porta interna da sua aplicação&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        proxy_http_version 1.1;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        proxy_set_header Upgrade $http_upgrade;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        proxy_set_header Connection keep-alive;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        proxy_set_header Host $host;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        proxy_cache_bypass $http_upgrade;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Crie um link simbólico.&lt;br&gt;
&lt;code&gt;sudo ln -s /etc/nginx/sites-available/do.devprime.io /etc/nginx/sites-enabled/&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Valide a configuração do Nginx.&lt;br&gt;
&lt;code&gt;sudo nginx -t&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reinicialize o Nginx.&lt;br&gt;
&lt;code&gt;sudo systemctl restart nginx&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Acesse novamente a url pública do site porém utilizando https ou utilize o comando&lt;br&gt;
abaixo para verificar os detalhes da conexão lembrando de alterar a url. O retorno do log demosntra a utilização do SSL Let&amp;rsquo;s Encrypt.&lt;br&gt;
&lt;code&gt;curl -v  https://do.devprime.io&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-log&#34; data-lang=&#34;log&#34;&gt;* processing: https://do.devprime.tech
* Connected to do.devprime.io (x.x.x.x) port 443
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN: server accepted http/1.1
* Server certificate:
*  subject: CN=do.devprime.tech
*  start date: Apr 10 15:28:12 2024 GMT
*  expire date: Jul  9 15:28:11 2024 GMT
*  subjectAltName: host &amp;#34;do.devprime.io&amp;#34; matched cert&amp;#39;s &amp;#34;do.devprime.io&amp;#34;
*  issuer: C=US; O=Let&amp;#39;s Encrypt; CN=R3
*  SSL certificate verify ok.
* using HTTP/1.1
&amp;gt; GET / HTTP/1.1
&amp;gt; Host: do.devprime.io
&amp;gt; User-Agent: curl/8.2.1
&amp;lt; HTTP/1.1 200 OK
&amp;lt; Server: nginx/1.24.0 (Ubuntu)
&amp;lt; Connection: keep-alive
&amp;lt;div style=&amp;#39;text-align:center;padding:10px;margin:10px;color:#512da8&amp;#39;&amp;gt;
    &amp;lt;h1&amp;gt;Welcome to DevPrime! &amp;lt;/h1&amp;gt;
    &amp;lt;p&amp;gt;Microservice ms-order : 57f36e89-2b14-490f-81b2-a46a814830bf&amp;lt;/p&amp;gt;
    &amp;lt;p&amp;gt;&amp;lt;a href=&amp;#39;/swagger/index.html&amp;#39;&amp;gt;Go to OpenApi&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;12&#34;&gt;
&lt;li&gt;
&lt;p&gt;Edite o crontab e ative a renovação automática do certificado SSL Let&amp;rsquo;s Encrypt.&lt;br&gt;
&lt;code&gt;crontab -e&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; * * * /usr/bin/certbot renew --quiet
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Listando o crontab ativos.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crontab -l
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo ls /etc/cron.d/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ativando o firewall.&lt;br&gt;
Neste exemplo, você pode ativar o firewall utilizando o The Uncomplicated Firewall (UFW) disponível no Linux, liberando as portas 80/443/22 seguindo os passos listados.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Habilitar&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ufw allow http
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ufw allow https
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ufw allow ssh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ufw enable
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Status&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ufw status verbose
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Desligar&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ufw disable
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;considerações-finais&#34;&gt;Considerações Finais&lt;/h3&gt;
&lt;p&gt;Durante este artigo, você aprendeu como implantar um microserviço desenvolvido utilizando a tecnologia da plataforma &lt;a href=&#34;https://devprime.io&#34;&gt;Devprime&lt;/a&gt; em um Droplet Linux da &lt;a href=&#34;https://m.do.co/c/7027ac82ba3c&#34;&gt;DigitalOcean&lt;/a&gt;. Demonstramos um passo a passo básico que consiste basicamente em instalar o runtime do .NET e copiar o projeto compilado. As outras configurações são recursos adicionais do Linux para uma melhor experiência na execução da sua aplicação.&lt;/p&gt;
&lt;p&gt;Em um ambiente produtivo, é altamente recomendável a utilização de um cofre para as credenciais e uma estratégia robusta de DevOps para orquestrar toda a publicação automaticamente.&lt;/p&gt;
&lt;p&gt;Para saber mais:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../kubernetes/&#34;&gt;Implantanndo um microsserviço Devprime no DigitalOcean Kubernetes (DOKS)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Deployment: Kubernetes (DOKS)</title>
      <link>https://docs.Devprime.io/pt-br/deployment/digitalocean/kubernetes/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.Devprime.io/pt-br/deployment/digitalocean/kubernetes/</guid>
      <description>
        
        
        &lt;p&gt;&lt;img src=&#34;https://docs.Devprime.io/images/deployment/digitalocean/kubernetes/welcome.png&#34; alt=&#34;Devprime using DigitalOcean&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;introdução&#34;&gt;Introdução&lt;/h3&gt;
&lt;p&gt;A plataforma Devprime acelera a produtividade do desenvolvedor de software, oferecendo um projeto completo de arquitetura de software, componentes com comportamentos inteligentes, aceleradores para implementação de código e atualizações com novos recursos.&lt;/p&gt;
&lt;p&gt;Neste artigo, abordaremos o uso do serviço Kubernetes (DOKS) da DigitalOcean, uma plataforma de cloud que oferece diversos recursos para o desenvolvedor de software utilizar nas aplicações.&lt;/p&gt;
&lt;p&gt;Nós utilizaremos dois microsserviços com uma regra de negócio relacionada a pedidos e outra a pagamentos utilizando o banco de dados MongoDB gerenciado pela DigitalOcean. Demonstraremos os passos para criar o microsserviço, os serviços de cloud na DigitalOcean como o Kubernetes (DOKS), Container Registry, MongoDB e implantaremos o RabbitMQ no Kubernetes, em seguida, as configurações iniciais necessárias.&lt;/p&gt;
&lt;h3 id=&#34;checklist-e-preparação-do-ambiente-inicial&#34;&gt;Checklist e preparação do ambiente inicial&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Abra uma conta na &lt;a href=&#34;https://devprime.io&#34;&gt;plataforma Devprime&lt;/a&gt; e adquira uma &lt;a href=&#34;https://devprime.io/pricing&#34;&gt;licença (Developer/Enterprise)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Instale uma versão atualizada do .NET (Linux, macOS e Windows).&lt;/li&gt;
&lt;li&gt;Instale e/ou atualize o Visual Studio Code e/ou o Visual Studio 2023 Community / Professional / Enterprise.&lt;/li&gt;
&lt;li&gt;Instale e/ou atualize o Docker (Linux, macOS e Windows) (Para Windows, utilize o WSL2).&lt;/li&gt;
&lt;li&gt;Inicialize localmente os containers do &lt;a href=&#34;../../../quick-start/docker/&#34;&gt;MongoDB e RabbitMQ no Docker&lt;/a&gt; e &lt;a href=&#34;../../../quick-start/docker/using-rabbitmq/&#34;&gt;adicione a fila &amp;lsquo;orderevents&amp;rsquo; e &amp;lsquo;paymentevents&amp;rsquo; no RabbitMQ&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Instale e ative a versão mais nova do &lt;a href=&#34;../../../quick-start/install-devprime-cli/&#34;&gt;Devprime CLI&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Crie uma pasta local para os seus projetos e defina as permissões de leitura e gravação.&lt;/li&gt;
&lt;li&gt;Consulte o artigo &amp;ldquo;&lt;a href=&#34;../../../quick-start/creating-the-first-microservice/&#34;&gt;Criando o primeiro microsserviço&lt;/a&gt;&amp;rdquo; para explorar os primeiros passos na &lt;a href=&#34;https://devprime.io&#34;&gt;plataforma Devprime&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Abra uma conta de Cloud na &lt;a href=&#34;https://m.do.co/c/7027ac82ba3c&#34;&gt;DigitalOcean&lt;/a&gt; (Your $200 Credit, You&amp;rsquo;ve been invited to DigitalOcean! Sign up and get a $200, 60-day credit to try our products. Spend $25 after your credit expires and whoever referred you will get $25 in credit!).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;primeiros-passos&#34;&gt;Primeiros passos&lt;/h3&gt;
&lt;p&gt;Neste artigo, utilizaremos um projeto com dois &lt;a href=&#34;../../../examples/stream/rabbitmq/asynchronous-microservices-communication/&#34;&gt;Microsserviços utilizando comunicação assíncrona&lt;/a&gt;, sendo o primeiro Order e o segundo Payment que você pode optar por criar do zero ou utilizando o exemplo no GitHub.&lt;/p&gt;
&lt;p&gt;a) Execute um clone do projeto no GitHub:&lt;br&gt;
&lt;code&gt;git clone https://github.com/devprime/devprime-microservices-order-payment.git&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;b) Acesse a pasta clonada e verifique a pasta inicial com os itens Order e Payment. Cada pasta desta tem um microsserviço desenvolvido com a plataforma Devprime e pronto para utilização.&lt;br&gt;
&lt;code&gt;cd devprime-microservices-order-payment&lt;/code&gt;&lt;br&gt;
&lt;code&gt;git remote remove origin&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;c) Execute o comando dp stack para aplicar atualização e a sua licença Devprime:&lt;br&gt;
&lt;code&gt;dp stack&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;d) Execute cada microsserviço em uma aba do terminal para testar localmente utilizando os arquivos .\run.ps1 no Windows ou run.sh no Linux e macOS. Aplique a permissão chmod no Linux, macOS. &lt;br&gt;
&lt;code&gt;chmod +x run.sh&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Inicie o microsserviço executando um dos scripts abaixo:&lt;br&gt;
&lt;code&gt;.\run.ps1&lt;/code&gt; (Windows) ou &lt;code&gt;./run.sh&lt;/code&gt; (Linux, macOS)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;/ms-order&lt;/li&gt;
&lt;li&gt;/ms-payment&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Com os microsserviços rodando efetue um post na API do microsserviço order e acompanhe o processamento no microsserviço payment conforme descrito no artigo sobre &lt;a href=&#34;../../../examples/stream/rabbitmq/asynchronous-microservices-communication/&#34;&gt;comunicação assíncrona entre microsserviços&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;criando-um-cluster-kubernetes-doks-container-registry-e-mongodb-na-digitalocean&#34;&gt;Criando um cluster Kubernetes (DOKS), Container Registry e MongoDB na DigitalOcean&lt;/h3&gt;
&lt;p&gt;Acesse o seu portal na DigitalOcean e no menu Kubernetes, entre na opção Create Cluster para iniciar o procedimento de criação e em node plan escolha o tamanho apropriado ao seu cenário, defina a quantidade de instâncias e avance com o processo. Execute o mesmo procedimento com o Container Registry e em Database com MongoDB criando os serviços iniciais para utilização nesse artigo.&lt;/p&gt;
&lt;p&gt;Na imagem abaixo é apresentado uma visão dos primeiros serviços criados MongoDB e Kubernetes.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.Devprime.io/images/deployment/digitalocean/kubernetes/digitalocean-principal.png&#34; alt=&#34;Devprime using DigitalOcean&#34;&gt;&lt;/p&gt;
&lt;p&gt;Após criar o cluster do MongoDB é fundamental acessar o item Connection String e copiar para utilizarmos na configuração nos microsserviços (order/payment). Copie toda a string de conexão e certifique que a mesma está com o usuário e a senha.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.Devprime.io/images/deployment/digitalocean/kubernetes/digitalocean-mongodb-small.png&#34; alt=&#34;Devprime using DigitalOcean&#34;&gt;&lt;/p&gt;
&lt;p&gt;O cluster Kubernetes foi noemado como  &amp;ldquo;&amp;ldquo;do-k8s-nyc1-demo&amp;rdquo; para utilização nesse artigo. No item marketplace você tem alguns recursos interessantes para implantação no cluster usando 1-Click Apps como NGINX Ingress Controller, Cert-Manager, OpenEBS NFS Provisioner, Kubernetes Monitoring Stack.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.Devprime.io/images/deployment/digitalocean/kubernetes/digitaocean-cluster-kubernetes-small.png&#34; alt=&#34;Devprime using DigitalOcean&#34;&gt;&lt;/p&gt;
&lt;p&gt;Para publicar containers no Kubernetes, nós utilizaremos o Container Registry que nesse attigo está nomeado como &amp;ldquo;dp-registry-nyc3&amp;rdquo;. Copie nesse momento a url apresentada, pois utilizaremos mais a frente no momento de criação da imagem do container.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.Devprime.io/images/deployment/digitalocean/kubernetes/digitalocean-container-registry-small.png&#34; alt=&#34;Devprime using DigitalOcean&#34;&gt;&lt;/p&gt;
&lt;p&gt;Agora é necessário seguir um passo importante realizando o vinculo do seu Cluster Kubernetes com o Container Registry para facilitar o acesso aos containeres dentro do cluster. No portal do seu Ckuster Kubernetes, entre em Settings e depois entre na opção &amp;ldquo;DigitalOcean Container Registry Integration&amp;rdquo; e selecione o Container Registry.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.Devprime.io/images/deployment/digitalocean/kubernetes/digitalocean-integration-container-registry.png&#34; alt=&#34;Devprime using DigitalOcean&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;instalando-ferramentas-para-utilização-no-kubernetes&#34;&gt;Instalando ferramentas para utilização no Kubernetes&lt;/h3&gt;
&lt;p&gt;Nós utilizaremos algumas ferramentas para integração com o Kubernetes como o &lt;a href=&#34;https://kubernetes.io/docs/tasks/tools/&#34;&gt;kubectl&lt;/a&gt;, que é o CLI do Kubernetes, &lt;a href=&#34;https://helm.sh&#34;&gt;Helm&lt;/a&gt;, ferramenta para instalar pacotes no Kubernetes, &lt;a href=&#34;https://k9scli.io&#34;&gt;K9S&lt;/a&gt; ferramenta para visualizar o cluster, &lt;a href=&#34;https://github.com/stern/stern&#34;&gt;Stern&lt;/a&gt;, ferramenta para visualizar logs no Kubernetes, &lt;a href=&#34;https://docs.digitalocean.com/reference/doctl/how-to/install/&#34;&gt;doctl&lt;/a&gt;, DigitalOcean&amp;rsquo;s command-line tool e &lt;a href=&#34;https://www.docker.com/&#34;&gt;Docker&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Após instalar o CLI doctl, é fundamental seguir os procedimentos de configuração do mesmo para ativar o acesso na DigitalOcean e habilitar as operações como obteção de credenciais do Container Registry e do Kubernetes.&lt;/p&gt;
&lt;h3 id=&#34;obtendo-acesso-ao-kubernetes&#34;&gt;Obtendo acesso ao Kubernetes&lt;/h3&gt;
&lt;p&gt;As credenciais de acesso ao Cluster do Kubernetes podem ser obtidas pelo portal ou utilizando o CLI doctl, conforme faremos durante esse artigo.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Obtendo as credenciais de acesso ao Cluster ao confirmar será salvo no ambiente local &amp;ldquo;.kube/config&amp;rdquo;. Copie esse comando diretamente do portal com o Guid do seu cluster.&lt;br&gt;
&lt;code&gt;doctl kubernetes cluster kubeconfig save a61716c9-c207-4c23-b789-399a811ef050&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Listando todos os pods do Cluster&lt;br&gt;
&lt;code&gt;kubectl get pods --all-namespaces&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Utilizando o k9s para visualizar o Cluster&lt;br&gt;
&lt;code&gt;k9s&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Na imagem estamos listando todos os containers ativos implantados na criação do cluster. Nos próximos passos iniciaremos a criação do container do order e do payment.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.Devprime.io/images/deployment/digitalocean/kubernetes/digitalocean-kubernetes-k9s-small.png&#34; alt=&#34;Devprime using DigitalOcean&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;criando-imagens-docker-e-publicando-no-container-registry&#34;&gt;Criando imagens Docker e publicando no Container Registry&lt;/h3&gt;
&lt;p&gt;Um passo importante no cenário do Kubernetes é construir a imagem Docker dos nossos microsserviços para que possamos realizar a publicação dentro do ambiente do Cluster Kubernetes.&lt;/p&gt;
&lt;p&gt;Autenticando o Docker no Container Registry&lt;br&gt;
&lt;code&gt;doctl registry login&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Construindo a imagem do microsserviço order no Docker&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Entre na pasta do microsserviço order e execute&lt;br&gt;
&lt;code&gt;cd ms-order&lt;/code&gt;&lt;br&gt;
&lt;code&gt;docker build -t ms-order .&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Crie uma tag para essa imagem&lt;br&gt;
&lt;code&gt;docker tag ms-order registry.digitalocean.com/dp-registry-nyc3/ms-order:latest&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Efetuando o push enviando para o Docker&lt;br&gt;
&lt;code&gt;docker push registry.digitalocean.com/dp-registry-nyc3/ms-order:latest&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Construindo a imagem do microsserviço payment no Docker&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Entre na pasta do microsserviço payment e execute&lt;br&gt;
&lt;code&gt;cd ms-payment&lt;/code&gt;&lt;br&gt;
&lt;code&gt;docker build -t ms-payment .&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Crie uma tag para essa imagem&lt;br&gt;
&lt;code&gt;docker tag ms-payment registry.digitalocean.com/dp-registry-nyc3/ms-payment:latest&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Efetuando o push enviando para o Docker&lt;br&gt;
&lt;code&gt;docker push registry.digitalocean.com/dp-registry-nyc3/ms-payment:latest&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ao final desse procedimento de push nas imagens do order e payment será possível conferir no portal do Container Registry e já estão prontas para utilização no Kubernetes.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.Devprime.io/images/deployment/digitalocean/kubernetes/digitalocean-container-registry-images-small.png&#34; alt=&#34;Devprime using DigitalOcean&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;implantando-o-rabbitmq-no-kubernetes&#34;&gt;Implantando o RabbitMQ no Kubernetes&lt;/h3&gt;
&lt;p&gt;A plataforma Devprime habilita a conectividade com diversos serviços de Stream com RabbitMQ, Kafka e outros e nesse projeto nós vamos utilizar o helm para implantar o RabbitMQ no cluster. Você pode optar a depender do cenário no seu projeto em utilizar o serviço de Kafka gerenciado oferecido pela Digital Ocean ou outra alternativa para comunicação entre os microsserviços.&lt;/p&gt;
&lt;p&gt;Implantando o RabbitMQ utilizando o Helm. Altere o usuário e senha a seu critério.&lt;br&gt;
&lt;code&gt;helm repo add bitnami https://charts.bitnami.com/bitnami&lt;/code&gt;&lt;br&gt;
&lt;code&gt;helm repo update&lt;/code&gt;&lt;br&gt;
&lt;code&gt;helm install rabbitmq bitnami/rabbitmq --set auth.username=admin --set auth.password=MQ@passX6DP&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;O processo de implantação do RabbitMQ demora um certo tempo até concluir e você pode acompanhar pelo K9S. Após a instalação você pode mapear as portas do RabbitMQ no ambiente local para acessar. Antes de realizar o mapemaento é fundamental parar o container local do RabbiMQ para evitar conflitos de portas TCP.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Portas do RabbitMQ&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RabbitMQ AMQP port:&lt;br&gt;
&lt;code&gt;kubectl port-forward --namespace default svc/rabbitmq 5672:5672&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;RabbitMQ Web Management interface:&lt;br&gt;
&lt;code&gt;kubectl port-forward --namespace default svc/rabbitmq 15672:15672&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Definindo a configuração inicial do RabbitMQ&lt;/strong&gt;&lt;br&gt;
Efetue o mapeamento da porta 15672 e acesse o portal administrativo do RabbitMQ pela url http://localhost:15672 para configurar as filas &lt;a href=&#34;../../../quick-start/docker/using-rabbitmq/&#34;&gt;&amp;lsquo;orderevents&amp;rsquo; e &amp;lsquo;paymentevents&amp;rsquo; no RabbitMQ&lt;/a&gt; e relacione com a &amp;ldquo;exchange&amp;rdquo; conforme a documentação do RabbitMQ na Devprime com o objetivo de habilitar esse artigo.&lt;/p&gt;
&lt;h3 id=&#34;analisando-as-credenciais-do-mongodb-e-rabbitmq-nos-microsserviços-ambientes-locais&#34;&gt;Analisando as credenciais do MongoDB e RabbitMQ nos microsserviços ambientes locais&lt;/h3&gt;
&lt;p&gt;No ambiente local, você pode editar as configurações e credenciais da aplicação no arquivo &lt;code&gt;src/App/appsettings.json&lt;/code&gt;, como os dados de acesso ao MongoDB e ao RabbitMQ utilizados no projeto e outros itens disponiveis na &lt;a href=&#34;../../../settings/&#34;&gt;documentação de configuração da Devprime&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Para abrir a configuração de cada microsserviço entre na pasta relacionada&lt;br&gt;
&lt;code&gt;ms-order&lt;/code&gt;&lt;br&gt;
&lt;code&gt;ms-payment&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Abra pelo Visual Studio Code ou outro editor&lt;br&gt;
&lt;code&gt;code src/App/appsettings.json&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Visualiuze na chave RabbitMQ e do MongoDB  as credenciais do utilizadas no ambiemte local e podem ser modificadas a qualquer momento.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;18
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DevPrime_Stream&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Alias&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Stream1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Enable&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;true&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Default&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;true&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;StreamType&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;RabbitMQ&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;HostName&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Localhost&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;User&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;guest&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Password&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;guest&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Port&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5672&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Exchange&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;devprime&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ExchangeType&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;direct&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Retry&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;3&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Fallback&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;State1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Threads&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;30&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Buffer&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Subscribe&amp;#34;&lt;/span&gt;: []
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ]&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DevPrime_State&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;enable&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;true&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;alias&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;State1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;db&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;dbtype&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mongodb&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;connection&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mongodb://mongoadmin:LltF8Nx*yo@localhost:27017&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;timeout&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;retry&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;dbname&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ms-order&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;isssl&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;true&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;durationofbreak&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;45&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ]&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;configurando-as-credenciais-do-mongodb-e-rabbitmq-no-kubernetes&#34;&gt;Configurando as credenciais do MongoDB e RabbitMQ no Kubernetes&lt;/h3&gt;
&lt;p&gt;Em nosso contexto, criaremos um arquivo de deployment para cada microsserviço e utilizaremos o DevPrime CLI para construir os arquivos iniciais deployment.yml e service.yml. Para isso, executaremos o comando na pasta de cada microsserviço. Em seguida, realizaremos a configuração com as credenciais que utilizaremos nos microsserviços order e payment dentro do cluster Kubernetes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Entre na pasta &lt;code&gt;ms-order&lt;/code&gt; e execute o comando&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;dp export kubernetes&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Entre na pasta &lt;code&gt;ms-payment&lt;/code&gt; e execute o comando&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;dp export kubernetes&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;O resultado será similar ao trecho abaixo, com dois arquivos criados contendo as configurações iniciais necessárias para a publicação no Kubernetes. Observe que foram gerados um arquivo &lt;code&gt;deployment.yml&lt;/code&gt; e um arquivo &lt;code&gt;service.yml&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; ____             ____       _
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|  _ &lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt; _____   _|  _ &lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt;_ __&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;_&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;_ __ ___   ___
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;| | | |/ _ &lt;span style=&#34;color:#ae81ff&#34;&gt;\ \ &lt;/span&gt;/ / |_&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; | &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;__| | &amp;#39;&lt;/span&gt;_ &lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt; _ &lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt;/ _ &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;| |_| |  __/&lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt;V /|  __/| |  | | | | | | |  __/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|____/ &lt;span style=&#34;color:#ae81ff&#34;&gt;\_&lt;/span&gt;__| &lt;span style=&#34;color:#ae81ff&#34;&gt;\_&lt;/span&gt;/ |_|   |_|  |_|_| |_| |_|&lt;span style=&#34;color:#ae81ff&#34;&gt;\_&lt;/span&gt;__|
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Empower developers. Accelerate productivity
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;==============================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Welcome to the DevPrime CLI v8.0.8
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Export configurations kubernetes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.devprime/kubernetes/deployment.yml&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; created
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;.devprime/kubernetes/service.yml&amp;#39;&lt;/span&gt; created
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Agora chegou o momento de editar o arquivo &amp;ldquo;deployment.yml&amp;rdquo; e localize&lt;br&gt;
o item &amp;ldquo;image&amp;rdquo; na pasta do order e na pasta do payment.&lt;/p&gt;
&lt;p&gt;Abra a pasta no Visual Studio Code ou outro editor&lt;br&gt;
&lt;code&gt;code .devprime&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Arquivo: deployment.yml&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;apiVersion &lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;apps/v1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;kind&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Deployment&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;metadata&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;ms-order&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;spec&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;replicas&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;selector&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;matchLabels&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;app&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;ms-order&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;template&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;metadata&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;labels&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;app&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;ms-order&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;spec&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;containers&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;ms-order &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;ms-order:latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Realize o procedimento para cada microsserviço (order / payment) e altere o item image para o path da sua imagem no no Container Registry. A url do Container Registry é a mesma utilizada pelo comando push do docker.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Execute na pasta ms-order&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;code .devprime/kubernetes/deployment.yml&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;containers&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;ms-order &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;dpacrcontainer.azurecr.io/ms-order:latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Execute na pasta ms-payment&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;code .devprime/kubernetes/deployment.yml&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;containers&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;ms-payment &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;dpacrcontainer.azurecr.io/ms-payment:latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Agora chegou um momento de configurar em cada microsserviço as credenciais de produçao do RabbitMQ e do&lt;br&gt;
MongoDB fornecidas pela DigitalOcean e tratadas no inicio do arquivo onde falamos sobre Connection String.&lt;/p&gt;
&lt;p&gt;Arquivo:deployment.yaml&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;env&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;devprime_stream1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;value&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;alias=Stream1|||enable=true|||default=true|||streamtype=RabbitMQ
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        |||hostname=rabbitmq.default.svc|||user=admin|||password=guest|||port=5672|||
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;             exchange=devprime|||exchangetype=direct|||retry=3|||fallback=State1|||
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;             threads=30|||buffer=1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;devprime_state1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;value&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;enable=true|||alias=State1|||type=db|||dbtype=mongodb|||
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;             connection=mongodb.default.svc|||timeout=5|||retry=2|||
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;             dbname=ms-order|||isssl=true|||durationofbreak=45&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;No item devprime_stream1 altere o usuário para &amp;ldquo;admin&amp;rdquo; e a senha para &amp;ldquo;MQ@passX6DP&amp;rdquo;.&lt;br&gt;
no item devprime_state1 altere a connection pela Connection String do MongoDB na DigitalOean.&lt;/p&gt;
&lt;p&gt;Abaixo é possível conferir um exemplo após as alterações que devem ser feitas nos arquivos de deployment dos microsserviços (order/payment). Faça a alteração diretamente em cada arquivo para evitar modificar outros parâmetros nessa demonstração, pois as chaves têm pequenas diferenças entre os microsserviços.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Execute na pasta ms-order&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;code .devprime/kubernetes/deployment.yml&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;env&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;devprime_stream1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;value&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;alias=Stream1|||enable=true|||default=true|||streamtype=RabbitMQ|||
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;             hostname=rabbitmq.default.svc|||user=admin|||password=MQ@passX6DP|||
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;             port=5672|||exchange=devprime|||exchangetype=direct|||retry=3
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;             |||fallback=State1|||threads=30|||buffer=1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;devprime_state1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;value&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;enable=true|||alias=State1|||type=db|||dbtype=mongodb|||
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;             connection=mongodb+srv://user:password@
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;             do-mongodb-nyc1-demo-29a3fecf.mongo.ondigitalocean.com/admin?
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;             tls=true&amp;amp;authSource=admin&amp;amp;replicaSet=do-mongodb-nyc1-demo|||timeout=5|||
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;             retry=2|||dbname=ms-order|||isssl=true|||durationofbreak=45&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Devprime_Custom&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Execute na pasta ms-payment&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;code .devprime/kubernetes/deployment.yml&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;env&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;devprime_stream1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;value&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;alias=Stream1|||enable=true|||default=true|||streamtype=RabbitMQ|||hostname=rabbitmq.default.svc|||user=admin|||password=MQ@passX6DP|||port=5672|||exchange=devprime|||exchangetype=direct|||retry=3|||fallback=State1|||threads=30|||buffer=1|||subscribe=[queues=orderevents]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;devprime_state1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;value&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;enable=true|||alias=State1|||type=db|||dbtype=mongodb|||
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;             connection=mongodb+srv://user:password@
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;             do-mongodb-nyc1-demo-29a3fecf.mongo.ondigitalocean.com/admin?
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;             tls=true&amp;amp;authSource=admin&amp;amp;replicaSet=do-mongodb-nyc1-demo|||timeout=5|||
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;             retry=2|||dbname=ms-order|||isssl=true|||durationofbreak=45&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Devprime_Custom&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;executando-o-deployment-dos-microsserviços-no-kubernetes&#34;&gt;Executando o deployment dos microsserviços no Kubernetes&lt;/h3&gt;
&lt;p&gt;Agora chegou o momento mais esperado, onde iremos publicar efetivamente os microsserviços (order e payment) dentro do cluster Kubernetes e para isso utilizaremos os arquivos deployment.yml e service.yml de cada microsserviço.&lt;/p&gt;
&lt;p&gt;Entre em cada pasta e execute os comandos abaixo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Para o microsserviço order&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Navegue até a pasta do Kubernetes do serviço order:&lt;br&gt;
&lt;code&gt;ms-order/.devprime/kubernetes&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Aplique o deployment e o serviço:&lt;br&gt;
&lt;code&gt;kubectl apply -f deployment.yml&lt;/code&gt;&lt;br&gt;
&lt;code&gt;kubectl apply -f service.yml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Para o microsserviço ayment&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Navegue até a pasta do Kubernetes do serviço payment:&lt;br&gt;
&lt;code&gt;ms-payment/.devprime/kubernetes&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Aplique o deployment e o serviço:&lt;br&gt;
&lt;code&gt;kubectl apply -f deployment.yml&lt;/code&gt;&lt;br&gt;
&lt;code&gt;kubectl apply -f service.yml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Agora que terminamos de efetuar o nosso deployment dos dois microsserviços, podemos visualizar diretamente no cluster pela ferramenta &lt;code&gt;k9s&lt;/code&gt; ou utilizando o kubectl.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.Devprime.io/images/deployment/digitalocean/kubernetes/digitalocean-kubernetes-devprime-small.png&#34; alt=&#34;Devprime using DigitalOcean&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;efetuando-um-teste-no-microsserviço&#34;&gt;Efetuando um teste no microsserviço&lt;/h3&gt;
&lt;p&gt;Abra uma aba do terminal e execute o comando port-forward para mapear o microsserviço order na porta local 8080 e permitir realizar o primeiro teste acessando a plataforma diretamente no cluster.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Execute o comando para o Order&lt;br&gt;
&lt;code&gt;kubectl port-forward --namespace default svc/ms-order 8080:80&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Acesse a URL e efetue um POST no microsserviço order para que processe e emita um evento na fila do RabbitMQ e propague para o microsserviço payment&lt;br&gt;
http://localhost:8080&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.Devprime.io/images/deployment/digitalocean/kubernetes/digitalocean-kubernetes-devprime-order-small.png&#34; alt=&#34;Devprime using DigitalOcean&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;atribuindo-um-ip-público-ao-microsserviço-order&#34;&gt;Atribuindo um IP público ao microsserviço order&lt;/h3&gt;
&lt;p&gt;Abra o arquivo &lt;code&gt;ms-order/.devprime/kubernetes/service.yml&lt;/code&gt; com o Visual Studio Code e altere o &amp;ldquo;ClusterIP&amp;rdquo; para &amp;ldquo;LoadBalancer&amp;rdquo;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;apiVersion&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;v1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;kind&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Service&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;metadata&lt;/span&gt;:  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;ms-order&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;spec&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;selector&lt;/span&gt;:    
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;app&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;ms-order&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;type&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;LoadBalancer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;http&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;port&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;targetPort&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Excluindo o service ms-order:&lt;br&gt;
&lt;code&gt;kubectl delete svc ms-order&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Recriando o service ms-order:&lt;br&gt;
&lt;code&gt;kubectl apply -f service.yml&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Agora consulte a atualização até receber um IP público no microsserviço order:&lt;br&gt;
&lt;code&gt;kubectl get svc ms-order -w&lt;/code&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-log&#34; data-lang=&#34;log&#34;&gt;NAME       TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
ms-order   LoadBalancer   10.245.38.41   157.x.x.x   80:31256/TCP   2m32s
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;visualizando-logs-no-kuberbernetes&#34;&gt;Visualizando logs no Kuberbernetes&lt;/h3&gt;
&lt;p&gt;Os microsserviços baseados na plataforma Devprime disponibilizam uma abordagem de &lt;a href=&#34;../../../features/observability/&#34;&gt;observabilidade automática de logs distribuídos&lt;/a&gt; que podem ser visualizados pelo kubectl, k9s, stern e indexados em ferramentas como SEQ, Elastic Search e muitas outras para acompanhar o comportamento das aplicações no ambiente produtivo.&lt;/p&gt;
&lt;p&gt;Nesse exemplo, utilizaremos a ferramenta stern para visualizar o log de cada deployment:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Abra uma aba para o microsserviço &amp;lsquo;order&amp;rsquo; no terminal e execute:&lt;br&gt;
&lt;code&gt;stern ms-order&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Abra uma aba para o microsserviço &amp;lsquo;payment&amp;rsquo; no terminal e execute:&lt;br&gt;
&lt;code&gt;stern ms-payment&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Agora, utilize o mapeamento de porta ou IP público e realize um post no microsserviço &amp;lsquo;order&amp;rsquo; para conferir um resultado. No log abaixo, você verá um resumo do &amp;lsquo;order&amp;rsquo; como exemplo.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-log&#34; data-lang=&#34;log&#34;&gt;[INF][ms-order][Web][&amp;#34;http://*:80&amp;#34;][Host][&amp;#34;Production&amp;#34;][Parameters][&amp;#34;Environment&amp;#34;][RID 30c1c7a9-7799-43e6-a1b2-5d4007b3edb8][TID 30c1c7a9-7799-43e6-a1b2-5d4007b3edb8]
[INF][ms-order][Stream][Type &amp;#34;RabbitMQ&amp;#34;][Alias &amp;#34;Stream1&amp;#34;][&amp;#34;Enable&amp;#34;][RID 30c1c7a9-7799-43e6-a1b2-5d4007b3edb8][TID 30c1c7a9-7799-43e6-a1b2-5d4007b3edb8]
[INF][ms-order][Web][&amp;#34;HTTP&amp;#34;][Order][POST /v1/order][Origin &amp;#34;http://localhost/swagger/index.html&amp;#34;][RID c1461cc3-7000-473d-a62c-915867954ced][TID c1461cc3-7000-473d-a62c-915867954ced]
[INF][ms-order][Application][OrderService][Add][RID c1461cc3-7000-473d-a62c-915867954ced][TID c1461cc3-7000-473d-a62c-915867954ced]
[INF][ms-order][Domain][Order][Add][RID c1461cc3-7000-473d-a62c-915867954ced][TID c1461cc3-7000-473d-a62c-915867954ced]
[INF][ms-order][Domain][Order][ProcessEvent][&amp;#34;CreateOrder&amp;#34;][RID c1461cc3-7000-473d-a62c-915867954ced][TID c1461cc3-7000-473d-a62c-915867954ced]
[INF][ms-order][Application][EventHandler][&amp;#34;CreateOrderEventHandler&amp;#34;][Event][&amp;#34;CreateOrder&amp;#34;][RID c1461cc3-7000-473d-a62c-915867954ced][TID c1461cc3-7000-473d-a62c-915867954ced]
[INF][ms-order][State][Type &amp;#34;MongoDB&amp;#34;][Alias &amp;#34;State1&amp;#34;][Initialize][OrderRepository][Add][RID c1461cc3-7000-473d-a62c-915867954ced][TID c1461cc3-7000-473d-a62c-915867954ced]
[INF][ms-order][State][Type &amp;#34;MongoDB&amp;#34;][Alias &amp;#34;State1&amp;#34;][Complete][OrderRepository][Add][Duration 1192.1472ms][RID c1461cc3-7000-473d-a62c-915867954ced][TID c1461cc3-7000-473d-a62c-915867954ced]
[INF][ms-order][Domain][Order][ProcessEvent][&amp;#34;OrderCreated&amp;#34;][RID c1461cc3-7000-473d-a62c-915867954ced][TID c1461cc3-7000-473d-a62c-915867954ced]
[INF][ms-order][Application][EventHandler][&amp;#34;OrderCreatedEventHandler&amp;#34;][Event][&amp;#34;OrderCreated&amp;#34;][RID c1461cc3-7000-473d-a62c-915867954ced][TID c1461cc3-7000-473d-a62c-915867954ced]
[INF][ms-order][Stream][Type &amp;#34;RabbitMQ&amp;#34;][Alias &amp;#34;Stream1&amp;#34;][Out][Event][&amp;#34;OrderCreated&amp;#34;][&amp;#34;Delivered&amp;#34;][&amp;#34;orderevents&amp;#34;]
[&amp;#34;{\&amp;#34;&amp;#34;Payload\&amp;#34;:{\&amp;#34;ID\&amp;#34;:\&amp;#34;ca9983\&amp;#34;,\&amp;#34;CustomerName\&amp;#34;:\&amp;#34;Ramon Duraes\&amp;#34;,\&amp;#34;CustomerTaxID\&amp;#34;:\&amp;#34;AC875512\&amp;#34;,\&amp;#34;Total\&amp;#34;:1200}}&amp;#34;]
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;considerações-finais&#34;&gt;Considerações finais&lt;/h3&gt;
&lt;p&gt;Durante este artigo, demonstramos a publicação de dois microsserviços (order e payment) desenvolvidos utilizando a tecnologia da plataforma Devprime no cluster Kubernetes (DOKS) da DigitalOcean, em conjunto com os serviços de Container Registry e MongoDB gerenciados e com o RabbitMQ que implantamos no cluster utilizando o Helm. Você acompanhou também como acessar o serviço utilizando um IP interno e um IP Externo e visualizar os logs.&lt;/p&gt;
&lt;p&gt;Em um ambiente produtivo, é fundamental adicionar um nginx ingress, um dominio de internet e Let&amp;rsquo;s Encrypt para gerar um certificado SSL, utilizar um serviço de DevOps para automatizar a publicação, cofre digital para credenciais, proteção de acesso com um API Gateway, provedor de identidade e Web Application Firewall.&lt;/p&gt;
&lt;p&gt;Para saber mais&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../droplet/&#34;&gt;Implantando um microsserviço Devprime em um Droplet DigitalOcean&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
  </channel>
</rss>
