<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Carlos Nogueira</title>
    <description>The latest articles on Forem by Carlos Nogueira (@cedon).</description>
    <link>https://forem.com/cedon</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F226109%2F4c181e01-9de0-47e0-8185-256a92b7f779.webp</url>
      <title>Forem: Carlos Nogueira</title>
      <link>https://forem.com/cedon</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/cedon"/>
    <language>en</language>
    <item>
      <title>[PT-BR] Kubectl: boas práticas</title>
      <dc:creator>Carlos Nogueira</dc:creator>
      <pubDate>Thu, 23 Apr 2026 22:18:42 +0000</pubDate>
      <link>https://forem.com/cedon/pt-br-kubectl-boas-praticas-462j</link>
      <guid>https://forem.com/cedon/pt-br-kubectl-boas-praticas-462j</guid>
      <description>&lt;p&gt;Boas práticas para usar o kubectl de forma eficiente e segura:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use contextos e namespaces de forma explícita&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Defina o contexto atual com kubectl config use-context para evitar operações no cluster errado.&lt;/li&gt;
&lt;li&gt;Sempre especifique o --namespace ou configure o namespace padrão no contexto.&lt;/li&gt;
&lt;li&gt;Liste e alterne entre contextos com kubectl config get-contexts.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Aliases e autocompletion para ganhar velocidade&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Crie aliases comuns, por exemplo:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  &lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;k&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'kubectl'&lt;/span&gt;
  &lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;kgp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'kubectl get pods'&lt;/span&gt;
  &lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;ksys&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'kubectl --namespace kube-system'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Habilite o autocomplete (Bash/Zsh) – isso reduz erros de digitação e acelera comandos.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Use kubectl explain para documentação rápida&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Antes de escrever um YAML, consulte os campos disponíveis:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  kubectl explain pod.spec.containers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Manipulação segura de recursos&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Nunca use kubectl delete sem antes validar com --dry-run=client ou kubectl get.&lt;/li&gt;
&lt;li&gt;Prefira kubectl apply -f em vez de create/replace – é declarativo e seguro.&lt;/li&gt;
&lt;li&gt;Para edição, use kubectl edit (o editor respeita o schema) e evite editar YAMLs baixados manualmente.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Aproveite os comandos integrados para debugging&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;kubectl logs --previous – vê logs do container anterior (útil após crash).&lt;/li&gt;
&lt;li&gt;kubectl exec -it  -- /bin/sh – acesso interativo.&lt;/li&gt;
&lt;li&gt;kubectl port-forward – expõe serviços localmente sem alterar o cluster.&lt;/li&gt;
&lt;li&gt;kubectl top pod/node – métricas de CPU/memória (requer Metrics Server).&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Formatação e filtros de saída&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Use -o wide, -o yaml ou -o json conforme necessário.&lt;/li&gt;
&lt;li&gt;Combine com jq ou custom-columns para extrair informações específicas:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  kubectl get pods &lt;span class="nt"&gt;-o&lt;/span&gt; json | jq &lt;span class="s1"&gt;'.items[].metadata.name'&lt;/span&gt;
  kubectl get pods &lt;span class="nt"&gt;-o&lt;/span&gt; custom-columns&lt;span class="o"&gt;=&lt;/span&gt;NAME:.metadata.name,STATUS:.status.phase
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Plugins e extensões&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Instale o &lt;a href="https://krew.sigs.k8s.io/" rel="noopener noreferrer"&gt;Krew&lt;/a&gt; (gerenciador de plugins) e experimente:

&lt;ul&gt;
&lt;li&gt;kubectl tree – mostra donos de recursos.&lt;/li&gt;
&lt;li&gt;kubectl ns – troca de namespace rapidamente.&lt;/li&gt;
&lt;li&gt;kubectl neat – remove campos gerados de YAMLs.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Evite comandos imperativos em produção&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Prefira arquivos YAML versionados (Git) a comandos como kubectl run ... --image=.... Isso garante reprodutibilidade e revisão.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Limite escopo de ações&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Use --all-namespaces apenas quando realmente necessário – pode retornar milhares de objetos.&lt;/li&gt;
&lt;li&gt;Combine --selector (label selector) para operações em subconjuntos de recursos.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Segurança&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Nunca exponha o kubeconfig (ele contém certificados ou tokens).&lt;/li&gt;
&lt;li&gt;Revise permissões com kubectl auth can-i antes de executar ações críticas.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Seguindo essas práticas, você reduz riscos, ganha produtividade e mantém o controle sobre clusters Kubernetes.&lt;/p&gt;

&lt;p&gt;Referências&lt;br&gt;
&lt;a href="https://kubernetes.io/docs/reference/kubectl/" rel="noopener noreferrer"&gt;https://kubernetes.io/docs/reference/kubectl/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://krew.sigs.k8s.io/" rel="noopener noreferrer"&gt;https://krew.sigs.k8s.io/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>kubectl</category>
      <category>containers</category>
    </item>
    <item>
      <title>[PT-BR] Ciclo de Vida de Desenvolvimento de Software com assistência de IA</title>
      <dc:creator>Carlos Nogueira</dc:creator>
      <pubDate>Sun, 19 Apr 2026 21:11:25 +0000</pubDate>
      <link>https://forem.com/cedon/pt-br-ciclo-de-vida-de-desenvolvimento-de-software-com-assistencia-de-ia-1n7a</link>
      <guid>https://forem.com/cedon/pt-br-ciclo-de-vida-de-desenvolvimento-de-software-com-assistencia-de-ia-1n7a</guid>
      <description>&lt;p&gt;Um bom questionamento nos dias atuais é:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Será que as coisas mudaram mesmo no mundo de desenvolvimento de software?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Pergunta necessária e que me fez lembrar que nunca é demais reforçar/revisitar os fundamentos. &lt;/p&gt;

&lt;p&gt;Até porque a área de tecnologia sempre esteve sob influência de atores aleatórios e hypes sem sentido que estão bem longe de agregar valor às organizações, ou que são apenas &lt;em&gt;chuva de verão&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;De qualquer forma,  neste processo de revisitar fundações, uma lupa no Ciclo de vida de Desenvolvimento de Software se faz necessária e considerar os casos de sucesso  (e desastres) do hype atual ajuda a perceber experiências válidas a se compartilhar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fluxo SDLC
&lt;/h2&gt;

&lt;p&gt;O fluxo SDLC (Software Development Life Cycle) é o processo de etapas para desenvolver software de forma estruturada. Um fluxo tradicional (em Cascata) inclui:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Planejamento&lt;/strong&gt;: Definição de escopo, custos e riscos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Análise de Requisitos&lt;/strong&gt;: Levantamento do que o sistema deve fazer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Design&lt;/strong&gt;: Arquitetura, componentes, interfaces e banco de dados.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implementação (Codificação)&lt;/strong&gt;: Escrita do código fonte.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testes&lt;/strong&gt;: Verificação de bugs e validação dos requisitos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implantação (Deploy)&lt;/strong&gt;: Disponibilização do sistema em produção.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manutenção&lt;/strong&gt;: Correções, melhorias e atualizações contínuas.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Variações comuns do fluxo:&lt;/p&gt;

&lt;p&gt;· &lt;strong&gt;Modelo em V&lt;/strong&gt;: Testes pareados com cada fase de desenvolvimento.&lt;br&gt;
· &lt;strong&gt;Iterativo/Incremental&lt;/strong&gt;: Ciclos curtos entregando partes funcionais.&lt;br&gt;
· &lt;strong&gt;Ágil (Scrum/Kanban)&lt;/strong&gt;: Iterações rápidas (sprints) com feedback contínuo.&lt;br&gt;
· &lt;strong&gt;Espiral&lt;/strong&gt;: Foco em análise de riscos e prototipação.&lt;br&gt;
· &lt;strong&gt;Continuos Delivery&lt;/strong&gt;: Integração contínua e entrega contínua (CI/CD), unindo desenvolvimento e operações.&lt;/p&gt;

&lt;p&gt;Cada projeto escolhe o fluxo conforme requisitos, tamanho da equipe e necessidade de entregas rápidas ou documentação rígida.&lt;/p&gt;

&lt;h2&gt;
  
  
  SDLC com assistência de IA
&lt;/h2&gt;

&lt;p&gt;O fluxo SDLC em 2026 pode apresentar mudanças influenciadas por assistência de IA: o processo de desenvolvimento está a deixar de ser uma série de tarefas em sua maioria manuais e está se transformando em uma cadeia de valor contínua e inteligente, na qual a IA participa ativamente de todas as fases.&lt;/p&gt;

&lt;p&gt;O &lt;em&gt;Modelo de Maturidade da 3Pillar and Forrester&lt;/em&gt; &lt;a href="https://www.3pillarglobal.com/insights/blog/building-an-ai-enabled-sdlc-insights-from-3pillar-and-forrester/#main-content" rel="noopener noreferrer"&gt;¹&lt;/a&gt; ajuda a descrever como as organizações podem evoluir nesse cenário.&lt;/p&gt;

&lt;h2&gt;
  
  
  O Caminho da Maturidade
&lt;/h2&gt;

&lt;p&gt;A integração da IA no SDLC não é um evento único, mas uma jornada com níveis crescentes de sofisticação e impacto.&lt;/p&gt;

&lt;p&gt;· &lt;strong&gt;Nível 0: SDLC Clássico&lt;/strong&gt;: Práticas tradicionais (Ágil, Kanban), com processos majoritariamente manuais. É a base estável e conhecida, mas sem automação inteligente &lt;a href="https://www.3pillarglobal.com/insights/blog/building-an-ai-enabled-sdlc-insights-from-3pillar-and-forrester/#main-content" rel="noopener noreferrer"&gt;¹&lt;/a&gt;.&lt;br&gt;
· &lt;strong&gt;Nível 1: Assistido por IA&lt;/strong&gt;: A experimentação começa de forma individual e pontual, com ferramentas como assistentes de código, geradores de design e automação de testes. O progresso é real, porém inconsistente &lt;a href="https://www.3pillarglobal.com/insights/blog/building-an-ai-enabled-sdlc-insights-from-3pillar-and-forrester/#main-content" rel="noopener noreferrer"&gt;¹&lt;/a&gt;&lt;br&gt;
· &lt;strong&gt;Nível 2: Otimizado por IA&lt;/strong&gt;: A organização formaliza a adoção, estabelecendo governança, seleção de ferramentas e integração para gerar ganhos de eficiência mensuráveis em todo o ciclo &lt;a href="https://www.3pillarglobal.com/insights/blog/building-an-ai-enabled-sdlc-insights-from-3pillar-and-forrester/#main-content" rel="noopener noreferrer"&gt;¹&lt;/a&gt;.&lt;br&gt;
· &lt;strong&gt;Nível 3: Aumentado por Agentes&lt;/strong&gt;: Agentes de IA assumem o gerenciamento de workflows completos, coordenando tarefas e ferramentas. Humanos migram para uma posição de supervisão estratégica ("over the loop") &lt;a href="https://www.3pillarglobal.com/insights/blog/building-an-ai-enabled-sdlc-insights-from-3pillar-and-forrester/#main-content" rel="noopener noreferrer"&gt;¹&lt;/a&gt;.&lt;br&gt;
· &lt;strong&gt;Nível 4: Nativo em Agentes&lt;/strong&gt;: As equipes operam em ambientes totalmente orquestrados por IA, com o foco humano em estratégia, design e criação de valor. O processo é desenhado para otimizar a colaboração entre humanos e máquinas &lt;a href="https://www.3pillarglobal.com/insights/blog/building-an-ai-enabled-sdlc-insights-from-3pillar-and-forrester/#main-content" rel="noopener noreferrer"&gt;¹&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Entender em qual nível sua organização se encontra é o primeiro passo para planejar a transformação, caso seja aplicável/necessário.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como a IA Pode Influenciar Cada Etapa do SDLC
&lt;/h2&gt;

&lt;p&gt;De forma geral, a IA Generativa (GenAI) tem o maior impacto nas fases de design, implementação, teste e documentação, com mais de 70% dos desenvolvedores relatando uma redução de pelo menos 50% do tempo gasto em tarefas repetitivas &lt;a href="https://arxiv.org/html/2603.16975v1" rel="noopener noreferrer"&gt;²&lt;/a&gt;. Já nas fases iniciais, como planejamento e análise de requisitos, os benefícios ainda são menores &lt;a href="https://arxiv.org/html/2603.16975v1" rel="noopener noreferrer"&gt;²&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Aqui está um panorama mais detalhado da transformação em cada etapa:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Planejamento e Requisitos&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;· &lt;strong&gt;O Que a IA Faz&lt;/strong&gt;: Gera histórias de usuário a partir de conversas, identifica conflitos em requisitos e cria rascunhos de documentação&lt;a href="https://www.hcltech.com/de-de/trends-and-insights/autonomous-software-factory-agentic-ai-sdlc" rel="noopener noreferrer"&gt;³&lt;/a&gt; &lt;a href="https://circleci.com/blog/ai-sdlc/" rel="noopener noreferrer"&gt;⁴&lt;/a&gt;.&lt;br&gt;
· &lt;strong&gt;Papéis e Ferramentas&lt;/strong&gt;: Agente de Requisitos, Documentos de Requisitos de Negócio (BRDs), Jira, documentação assistida por IA &lt;a href="https://www.hcltech.com/de-de/trends-and-insights/autonomous-software-factory-agentic-ai-sdlc" rel="noopener noreferrer"&gt;³&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Design e Arquitetura&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;· &lt;strong&gt;O Que a IA Faz&lt;/strong&gt;: Propõe padrões arquiteturais (ex: eventos para alta escalabilidade), gera especificações (OpenAPI, C4) e documenta decisões de design &lt;a href="https://www.hcltech.com/de-de/trends-and-insights/autonomous-software-factory-agentic-ai-sdlc" rel="noopener noreferrer"&gt;³&lt;/a&gt;.&lt;br&gt;
· &lt;strong&gt;Papéis e Ferramentas&lt;/strong&gt;: Agente de Design, OpenAPI, geradores de diagramas C4, Designers e Arquitetos de IA &lt;a href="https://www.hcltech.com/de-de/trends-and-insights/autonomous-software-factory-agentic-ai-sdlc" rel="noopener noreferrer"&gt;³&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Codificação (Implementação)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;· &lt;strong&gt;O Que a IA Faz&lt;/strong&gt;: Gera código, refatora e resolve erros automaticamente com ferramentas mais avançadas (Agente de Codificação) &lt;a href="https://www.hcltech.com/de-de/trends-and-insights/autonomous-software-factory-agentic-ai-sdlc" rel="noopener noreferrer"&gt;³&lt;/a&gt;.&lt;br&gt;
· &lt;strong&gt;Papéis e Ferramentas&lt;/strong&gt;: Agente de Codificação (GitHub Copilot, Amazon Q) e Engenheiro de Prompt para guiar a geração de código &lt;a href="https://developer.microsoft.com/blog/reimagining-every-phase-of-the-developer-lifecycle?WT_mc_id=M365-MVP-5001530#respond" rel="noopener noreferrer"&gt;⁵&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Testes (QA)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;· &lt;strong&gt;O Que a IA Faz&lt;/strong&gt;: Cria casos de teste, gera scripts de automação (Selenium, Cucumber), realiza automação de QA (Agente de QA) e testa de forma autônoma (Agente de Teste Autônomo) &lt;a href="https://www.hcltech.com/de-de/trends-and-insights/autonomous-software-factory-agentic-ai-sdlc" rel="noopener noreferrer"&gt;³&lt;/a&gt; &lt;a href="https://circleci.com/blog/ai-sdlc/" rel="noopener noreferrer"&gt;⁴&lt;/a&gt;.&lt;br&gt;
· &lt;strong&gt;Papéis e Ferramentas&lt;/strong&gt;: Agente de QA (Autonomous Quality Engineering), Selenium, Cucumber, estruturas de teste de IA &lt;a href="https://circleci.com/blog/ai-sdlc/" rel="noopener noreferrer"&gt;⁴&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Implantação (Deploy)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;· &lt;strong&gt;O Que a IA Faz&lt;/strong&gt;: Gerencia pipelines de CI/CD, toma decisões sobre os estágios de deploy e, com IAs mais avançadas (Agente de DevOps), orquestra e monitora o ciclo inteiro &lt;a href="https://developer.microsoft.com/blog/reimagining-every-phase-of-the-developer-lifecycle?WT_mc_id=M365-MVP-5001530#respond" rel="noopener noreferrer"&gt;⁵&lt;/a&gt;.&lt;br&gt;
· &lt;strong&gt;Papéis e Ferramentas&lt;/strong&gt;: Agente de DevOps, pipelines de CI/CD, ferramentas de monitoramento &lt;a href="https://developer.microsoft.com/blog/reimagining-every-phase-of-the-developer-lifecycle?WT_mc_id=M365-MVP-5001530#respond" rel="noopener noreferrer"&gt;⁵&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manutenção e Operações&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;· &lt;strong&gt;O Que a IA Faz&lt;/strong&gt;: Monitora sistemas, sugere correções proativas e auxilia na autoria de patches para self-healing &lt;a href="https://www.hcltech.com/de-de/trends-and-insights/autonomous-software-factory-agentic-ai-sdlc" rel="noopener noreferrer"&gt;³&lt;/a&gt;&lt;br&gt;
· &lt;strong&gt;Papéis e Ferramentas&lt;/strong&gt;: Agente de Operações, sistemas de monitoramento, ferramentas de self-healing &lt;a href="https://www.hcltech.com/de-de/trends-and-insights/autonomous-software-factory-agentic-ai-sdlc" rel="noopener noreferrer"&gt;³&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Evolução das Equipes
&lt;/h2&gt;

&lt;p&gt;Nem toda organização se enquadra ou precisa necessariamente entrar na jornada de evolução e maturidade do modelo. &lt;/p&gt;

&lt;p&gt;Deve existir a devida curadoria tecnológica, metodológica e estratégica que vislumbre se adicionar assistência de AI no SDLC é algo que vai agregar valor real.&lt;/p&gt;

&lt;p&gt;No caso que se enquadre, com a IA automatizando a criação de artefatos (código, testes, documentação), o papel humano vai se deslocar para as atividades de maior valor.&lt;/p&gt;

&lt;p&gt;· &lt;strong&gt;O Profissional como "Condutor" (Conductor)&lt;/strong&gt;: A nova função principal é a de orquestrar agentes de IA, compor workflows e garantir a aderência aos padrões e objetivos de negócio.&lt;br&gt;
· &lt;strong&gt;Surgem Novas Funções Especializadas&lt;/strong&gt;: Vemos o aparecimento de carreiras como Arquiteto de SDLC Nativo em IA, Desenvolvedor de Engenharia de Prompt e Escritor Técnico de Workflows de IA, focados em criar as instruções e estruturas que guiam as IAs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Os Novos Desafios e Gargalos
&lt;/h2&gt;

&lt;p&gt;A velocidade trazida pela IA expõe e até amplifica gargalos existentes &lt;a href="https://labs.thisdot.co/blog/ai-speed-vs-bottlenecks" rel="noopener noreferrer"&gt;¹¹&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;· &lt;strong&gt;O Gargalo da Revisão&lt;/strong&gt;: A maior dificuldade atualmente não é gerar código, mas sim revisar o dilúvio de código gerado pelas IAs. A capacidade humana de revisão tornou-se o principal ponto de estrangulamento &lt;a href="https://www.xano.com/blog/how-to-incorporate-ai-into-sdlc/" rel="noopener noreferrer"&gt;¹²&lt;/a&gt;.&lt;br&gt;
· &lt;strong&gt;Dívida Técnica e Segurança&lt;/strong&gt;: Código gerado em alta velocidade pode introduzir dívida técnica, vulnerabilidades de segurança e problemas de manutenibilidade se não for devidamente governado &lt;a href="https://www.xano.com/blog/how-to-incorporate-ai-into-sdlc/" rel="noopener noreferrer"&gt;¹²&lt;/a&gt;&lt;br&gt;
· &lt;strong&gt;Necessidade de "Guardrails"&lt;/strong&gt;: É crucial estabelecer regras claras, supervisão humana e processos de validação automatizados para mitigar os riscos. A saída da IA deve ser tratada como a de um novo desenvolvedor: potencialmente falha e que precisa ser revisada &lt;a href="https://www.xano.com/blog/how-to-incorporate-ai-into-sdlc/" rel="noopener noreferrer"&gt;¹²&lt;/a&gt; &lt;a href="https://hodapp.com/posts/axioms-and-theorems-of-human-ai-systems-engineering/" rel="noopener noreferrer"&gt;¹⁵&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Frameworks e Ferramentas Prontas
&lt;/h2&gt;

&lt;p&gt;Para navegar por essa nova realidade, diversas metodologias e ferramentas já estão disponíveis.&lt;/p&gt;

&lt;p&gt;· &lt;strong&gt;AWS AI-Driven Development Lifecycle (AI-DLC)&lt;/strong&gt;: Uma metodologia open-source de três fases (Inception, Construction, Operations) que integra IA em cada etapa, com gatekeepers humanos nos pontos críticos. Pode ser implementada com o Amazon Q Developer &lt;a href="https://www.crnasia.com/india/news-network/news/aws-devsphere-2025-aws-unveils-ai-powered-software-development-framework?utm=crnindia_redirect_click" rel="noopener noreferrer"&gt;⁹&lt;/a&gt;.&lt;br&gt;
· &lt;strong&gt;Agentic DevOps (Microsoft)&lt;/strong&gt;: Uma abordagem que utiliza agentes de IA como colegas de equipe em todas as fases, do planejamento à modernização, usando ferramentas como o GitHub Copilot &lt;a href="https://developer.microsoft.com/blog/reimagining-every-phase-of-the-developer-lifecycle?WT_mc_id=M365-MVP-5001530#respond" rel="noopener noreferrer"&gt;¹⁰&lt;/a&gt;.&lt;br&gt;
· &lt;strong&gt;3Pillar AI-Enabled SDLC Maturity Model&lt;/strong&gt;: Um framework útil para diagnosticar em que nível de maturidade sua organização se encontra e planejar os próximos passos &lt;a href="https://www.3pillarglobal.com/insights/blog/building-an-ai-enabled-sdlc-insights-from-3pillar-and-forrester/#main-content" rel="noopener noreferrer"&gt;¹&lt;/a&gt;.&lt;br&gt;
· &lt;strong&gt;Outras Soluções&lt;/strong&gt;: Ferramentas como o Kiro (AWS) (IDE agente)&lt;a href="https://www.crnasia.com/india/news-network/news/aws-devsphere-2025-aws-unveils-ai-powered-software-development-framework?utm=crnindia_redirect_click" rel="noopener noreferrer"&gt;⁸&lt;/a&gt; e metodologias de empresas como EPAM (Native AI SDLC) e AMPECO (CoOperator Dev Agent) também oferecem caminhos práticos para a adoção &lt;a href="https://www.ampeco.com/blog/how-we-built-an-ai-native-engineering-system/" rel="noopener noreferrer"&gt;⁶&lt;/a&gt; &lt;a href="https://www.epam.com/about/newsroom/in-the-news/2026/from-traditional-software-to-a-native-ai-sdlc-how-genai-is-redefining-engineering" rel="noopener noreferrer"&gt;⁷&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Síntese e Próximos Passos
&lt;/h2&gt;

&lt;p&gt;Integrar IA no SDLC é uma oportunidade estratégica para aumentar a velocidade e a qualidade, mas exige planejamento. O primeiro passo prático é avaliar em qual nível de maturidade sua equipe se encontra, identificar os gargalos atuais e começar com projetos-piloto bem definidos, caso seja identificado a necessidade de utilização de SDLC com assistência de IA.&lt;/p&gt;

&lt;h2&gt;
  
  
  Referências
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.microsoft.com/blog/reimagining-every-phase-of-the-developer-lifecycle?WT_mc_id=M365-MVP-5001530#respond" rel="noopener noreferrer"&gt;https://developer.microsoft.com/blog/reimagining-every-phase-of-the-developer-lifecycle?WT_mc_id=M365-MVP-5001530#respond&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://circleci.com/blog/ai-sdlc/" rel="noopener noreferrer"&gt;https://circleci.com/blog/ai-sdlc/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://arxiv.org/html/2603.16975v1" rel="noopener noreferrer"&gt;https://arxiv.org/html/2603.16975v1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://labs.thisdot.co/blog/ai-speed-vs-bottlenecks" rel="noopener noreferrer"&gt;https://labs.thisdot.co/blog/ai-speed-vs-bottlenecks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.xano.com/blog/how-to-incorporate-ai-into-sdlc/" rel="noopener noreferrer"&gt;https://www.xano.com/blog/how-to-incorporate-ai-into-sdlc/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.crnasia.com/india/news-network/news/aws-devsphere-2025-aws-unveils-ai-powered-software-development-framework?utm=crnindia_redirect_click" rel="noopener noreferrer"&gt;https://www.crnasia.com/india/news-network/news/aws-devsphere-2025-aws-unveils-ai-powered-software-development-framework?utm=crnindia_redirect_click&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ampeco.com/blog/how-we-built-an-ai-native-engineering-system/" rel="noopener noreferrer"&gt;https://www.ampeco.com/blog/how-we-built-an-ai-native-engineering-system/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hodapp.com/posts/axioms-and-theorems-of-human-ai-systems-engineering/" rel="noopener noreferrer"&gt;https://hodapp.com/posts/axioms-and-theorems-of-human-ai-systems-engineering/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>softwaredevelopment</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>[PT-BR] Pois é! Um post sobre o hype.</title>
      <dc:creator>Carlos Nogueira</dc:creator>
      <pubDate>Fri, 06 Feb 2026 01:04:17 +0000</pubDate>
      <link>https://forem.com/cedon/pois-e-um-post-sobre-o-hype-kpa</link>
      <guid>https://forem.com/cedon/pois-e-um-post-sobre-o-hype-kpa</guid>
      <description>&lt;p&gt;Enfim, resolvi dar uma pausa na escrita do livro para escrever sobre um tema que, como muitos que acompanham as &lt;a href="https://www.youtube.com/@carlosenog" rel="noopener noreferrer"&gt;#engineeringsessions&lt;/a&gt; já perceberam, me incomoda bastante.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DISCLAIMER&lt;/strong&gt;: SEMPRE enfatizo que as críticas não são à tecnologia. Tirando o lado  óbvio dos prejuízos ao meio-ambiente &lt;a href="https://aclanthology.org/2025.findings-emnlp.939.pdf" rel="noopener noreferrer"&gt;¹&lt;/a&gt; &lt;a href="https://arxiv.org/html/2503.05804v1" rel="noopener noreferrer"&gt;²&lt;/a&gt; e à saúde mental ocasionados pelo hype de LLM &lt;a href="https://mental.jmir.org/2024/1/e59479/" rel="noopener noreferrer"&gt;³&lt;/a&gt; &lt;a href="https://futurism.com/commitment-jail-chatgpt-psychosis" rel="noopener noreferrer"&gt;⁴&lt;/a&gt; &lt;a href="https://futurism.com/chatgpt-mental-health-crises" rel="noopener noreferrer"&gt;⁵&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"É ÉLE-ÉLE-EME, nada de botar a culpa na conta da AI, que por sinal é uma área muito mais abrangente do que o hype vende.&lt;a href="https://roadmap.sh/ai-engineer" rel="noopener noreferrer"&gt;⁶&lt;/a&gt; &lt;a href="https://roadmap.sh/ai-data-scientist" rel="noopener noreferrer"&gt;⁷&lt;/a&gt; &lt;a href="https://roadmap.sh/machine-learning" rel="noopener noreferrer"&gt;⁸&lt;/a&gt;"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Sem falar na carga pesada de propaganda do tipo "&lt;em&gt;comprem meu produto&lt;/em&gt;", "&lt;em&gt;façam meu treinamento&lt;/em&gt;", "&lt;em&gt;assinem meu serviço&lt;/em&gt;" coisas que tentam deturpar (até) os próprios conceitos que fazem parte do núcleo base da tecnologia que tá sendo empurrada em nossa direção pelo hype.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DISCLAIMER 2&lt;/strong&gt;: A Stack HOMOLOGADA do seu trabalho é(ou ao menos deveria ser) de utilização OBRIGATÓRIA do profissional de T.I. que faz parte dos times técnicos. &lt;/p&gt;

&lt;p&gt;Logo, se vc veio aqui "&lt;em&gt;se queixar que o Carlos está a incentivar a não utilização de ferramentas de LLM no trabalho&lt;/em&gt;", pode dar meia-volta. &lt;/p&gt;

&lt;p&gt;Não sou "&lt;strong&gt;hater de AI&lt;/strong&gt;", aliás, nem acredito que esta persona exista no mundo profissional real. &lt;/p&gt;

&lt;p&gt;Pois se não tem como evitarmos a utilização, não existe essa pessoa que vai chegar com os gestores e dizer "ME RECUSO A USAR!".&lt;/p&gt;

&lt;p&gt;Cada um usa o que bem entender, traça a estratégia que achar mais adequada para sua própria vida profissional/carreira, ninguém precisa de "babá de tecnologia/stack" e cada um sabe onde o calo aperta.&lt;/p&gt;

&lt;p&gt;Apesar disso, não utilizar no trabalho ferramentas que não sejam homologadas pela sua organização é requisito básico de compliance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"NÃO DÁ PRA DERROTAR QUEM JÁ TÁ NO CHÃO"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;É ruim "bater em bêbado", quando o assunto é falhas de cybersegurança&lt;a href="https://arxiv.org/html/2405.03644v2" rel="noopener noreferrer"&gt;⁹&lt;/a&gt;, ou as diversas reticências no que diz respeito aos desafios de manter&lt;a href="https://arxiv.org/abs/2502.02368" rel="noopener noreferrer"&gt;¹⁰&lt;/a&gt; um software gerado por ferramentas de LLM que auxiliam na codificação.&lt;/p&gt;

&lt;p&gt;Então essas são outras coisas que NÃO irei abordar aqui. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"NÃO, ESTE HYPE NÃO É IGUAL AOS OUTROS"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Muitos comentam que &lt;em&gt;"este hype é parecido com o de microsserviços"&lt;/em&gt; (por exemplo). &lt;/p&gt;

&lt;p&gt;Não, não é. &lt;/p&gt;

&lt;p&gt;Poderia ser só mais uma (boa) tecnologia para acrescentarmos à nossa stack e ao nosso trabalho. &lt;/p&gt;

&lt;p&gt;O problema é que MUITA GENTE tenta vender como um "PARADIGMA", algo que vai "MATAR os Devs", ou substituir a engenharia de software como ela é hoje. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;E é nessa parte que a propaganda me pega.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;(Sob meu ponto de vista) Chega a ser ultrajante desconsiderar os avanços da engenharia depois de mais de 40 anos de história. &lt;/p&gt;

&lt;p&gt;Existe um fluxo para a evolução e implementação da Engenharia. &lt;/p&gt;

&lt;p&gt;Os últimos anos consolidaram um conjunto de processos, organização de times, metodologias, frameworks de trabalho, matérias relacionadas a automação, plataformas e maturidade das tecnologias que são base de tudo que é utilizado para a confecção de produtos digitais. &lt;/p&gt;

&lt;p&gt;O fator preponderante do que nós vemos no mercado hoje, é o papel cada vez mais presente do método científico servir como base para as engenharias. &lt;/p&gt;

&lt;p&gt;O embate entre quem se preocupa com a forma e  "agradabilidade de leitura" do código(artesãos) e quem "só" deseja resolver os problemas(engenheiros) havia encontrado o chão comum: a ciência. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Dave Farley aborda o papel da ciência na evolução das engenharias aqui neste vídeo: &lt;br&gt;
&lt;a href="https://youtube.com/watch?v=J8vCm1NdKIc" rel="noopener noreferrer"&gt;&lt;em&gt;-Engineering for Software&lt;/em&gt;&lt;/a&gt;"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Esse fluxo não sumiu(e nem vai tão cedo). Ele está aí e construir produtos digitais ainda obedece aos mesmos fundamentos. &lt;/p&gt;

&lt;p&gt;Quando aquela pessoa Dev amiga (de verdade) diz pra você "utilize a LLM para auxiliar no código, mas tenha senso crítico", na realidade ela não está nada mais do que afirmando nas entrelinhas que você precisa estudar os fundamentos da engenharia moderna para poder implementar. &lt;/p&gt;

&lt;p&gt;Isso não mudou, mesmo que a propaganda tente vender as técnicas de engenharia &lt;em&gt;(Ágil,Cloud Native,FLOSS,Entrega Contínua,12factor app, OpenAPI,DDD,BDD,TDD,etc.)&lt;/em&gt; usando outro nome, outra roupagem. &lt;/p&gt;

&lt;p&gt;O desafio está em conseguir filtrar o que é evolução de fundação, do que é propaganda de uma solução proprietária.&lt;/p&gt;

&lt;p&gt;Muitas "novidades" alardeadas pelo hype, não passam de imagens de contêineres que fazem chamadas para consumir alguma API proprietária, ou padrões(como OpenAPI) "repaginados"(por vezes mal implementados) para a "nova realidade".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"PARE DE TREINAR O MODELO DOS OUTROS E VÁ TREINAR O SEU CÉREBRO!"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Se você faz parte de times com pouca senioridade (estou falando sobre senioridade do TIME e não individual), muito provavelmente a  utilização de codificação assistida por LLM vai acelerar o prejuízo e dívida técnica que o seu time naturalmente já iria produzir&lt;a href="https://dora.dev/research/2025/dora-report/" rel="noopener noreferrer"&gt;¹¹&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Então sabendo disso, você deve atuar para auxiliar na evolução do conhecimento de engenharia do seu time. &lt;/p&gt;

&lt;p&gt;Este deveria ser o papel de quem é Senior++ e gestores, porém a situação atual pede que todas e todos que fazem parte da equipe tenham de procurar um papel de compartilhamento de conhecimento no time. &lt;/p&gt;

&lt;p&gt;Neste caso, as ferramentas de AI também podem auxiliar. &lt;/p&gt;

&lt;p&gt;Toda equipe, mesmo antes do hype, já deveria ter um contexto de gestão do conhecimento. Isso agora tem um papel muito mais forte. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"PROPAGANDA NÃO É FUNDAMENTO, SOFTWARE PROPRIETÁRIO NÃO É FLOSS(Free Libre Open Source Software)"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Propaganda não é fundamento, o "método de utilização do software do zezinho" não é o mesmo do software do pedrinho. &lt;/p&gt;

&lt;p&gt;Aliás, nem as metodologias de desenvolvimento estão fincadas em pedra. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://martinfowler.com/bliki/ExtremeProgramming.html" rel="noopener noreferrer"&gt;XP&lt;/a&gt; foi uma experiência que deu certo com o Kent Beck &lt;a href="https://a.co/d/08pK3Wgo" rel="noopener noreferrer"&gt;naqueles projetos&lt;/a&gt;, mas talvez não vá dar certo na sua organização. &lt;/p&gt;

&lt;p&gt;Em resumo: ATÉ as experiências que deram certo no passado, muito provavelmente não vão funcionar no caso da sua organização.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Mas por que ressaltar isso?&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;O hype atual emula EXPERIÊNCIAS QUE NÃO DERAM CERTO no passado. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;focar em soluções proprietárias &lt;a href="https://version-2.com/en/2024/10/exploring-the-differences-between-community-foss-open-core-and-commercial-oss/" rel="noopener noreferrer"&gt;¹²&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;aproximar programação da linguagem humana&lt;a href="https://www.cs.utexas.edu/~EWD/transcriptions/EWD01xx/EWD117.html" rel="noopener noreferrer"&gt;¹³&lt;/a&gt; &lt;a href="https://news.ycombinator.com/item?id=43564386" rel="noopener noreferrer"&gt;¹⁵&lt;/a&gt; &lt;a href="https://medium.com/@Szypetike/llms-programming-and-re-dijkstras-on-the-foolishness-of-natural-language-programming-1978-831729c4b968" rel="noopener noreferrer"&gt;¹⁶&lt;/a&gt; &lt;a href="https://www.cs.utexas.edu/~EWD/transcriptions/EWD06xx/EWD667.html" rel="noopener noreferrer"&gt;¹⁷&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Não é "discurso de doidinho do GNU/Linux". O core das bigtechs/Cloud e principais produtos digitais do mercado é FLOSS &lt;a href="https://share.google/bAbLvFJ3QfqWE369s" rel="noopener noreferrer"&gt;&lt;em&gt;(FOSS analytical)&lt;/em&gt;&lt;/a&gt;. E o hype não tem como base FLOSS. &lt;/p&gt;

&lt;p&gt;Ano passado(2025) as primeiras iniciativas mais relevantes começaram a aparecer &lt;a href="https://opensource.org/ai/webinars/the-ideology-of-foss-and-ai-what-open-means-relating-to-platforms-and-black-box-systems" rel="noopener noreferrer"&gt;¹⁸&lt;/a&gt;, o problema é que estão vindo tarde &lt;a href="https://www.linuxfoundation.org/press/linux-foundation-announces-the-formation-of-the-agentic-ai-foundation" rel="noopener noreferrer"&gt;¹⁹&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;E para completar, o ritmo de surgimento de "padrões" e "especificações" é frenético, a ponto de vermos a "morte" de padrões que não duram sequer 3 meses&lt;a href="https://acuvity.ai/the-clawdbot-dumpster-fire-72-hours-that-exposed-everything-wrong-with-ai-security/" rel="noopener noreferrer"&gt;²⁰&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"CUIDADO COM O SENIOR++ ENDOSER DO HYPE"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Desde o surgimento do hype de LLM diversas pesquisas já demonstraram que isto acelera sua equipe(pro bem e/ou pro mal)&lt;a href="https://dora.dev/research/2025/dora-report/" rel="noopener noreferrer"&gt;²¹&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Se a equipe for boa, vai acelerar a qualidade  boa da entrega.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Se a equipe for ruim, vai acelerar os problemas.&lt;a href="https://youtu.be/b9EbCb5A408?si=PF2RLGI2fudhOd0p" rel="noopener noreferrer"&gt;²²&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Essa lógica vale pros devs Seniors++ individualmente também. &lt;/p&gt;

&lt;p&gt;A pessoa tem os fundamentos bem definidos na memória muscular, já têm bastante vivência de mercado. Daí fica fácil enxergar o grande valor que a ferramenta pode gerar no trabalho do dia-a-dia.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;E isso é um problema.&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Nós temos nossas experiências pessoais, porém da mesma forma devs e projetos crescem em conjunto, seja num time, seja numa organização, seja na comunidade de profissionais de tecnologia.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Não existe time de uma pessoa só!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Dev senior consegue aproveitar, mas TEM DE SER SENIOR e não dá pra fingir que "todo time é repleto de seniors".&lt;/p&gt;

&lt;p&gt;Não dá pra fingir que times com senioridade baixa não existem, se bobear são a grande maioria no mercado. &lt;/p&gt;

&lt;p&gt;Então muito cuidado com Dev Senior++ que está empolgado nas redes sociais. A experiencia desse tipo de pessoa NÃO É a mesma que a sua, principalmente se você tem pouca senioridade e ainda tem um caminho grande de estudo/trabalho por percorrer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CONCLUSÃO DO DESABAFO&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;E é isso, este foi um desabafo que estava a correr na minha cabeça já tem umas semanas. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sugestões de Eps das Sessões de Engenharia relacionados ao texto:&lt;/em&gt;&lt;br&gt;
&lt;em&gt;- "Vida do Profissional de Tecnologia": &lt;a href="https://youtu.be/3hNH881-5cw" rel="noopener noreferrer"&gt;https://youtu.be/3hNH881-5cw&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;- "Engenheiros Staff+":  &lt;a href="https://youtu.be/15Zbg7Vk8Kw" rel="noopener noreferrer"&gt;https://youtu.be/15Zbg7Vk8Kw&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;- "Retrospectiva 2025": &lt;a href="https://youtu.be/kdkPBE7fj20" rel="noopener noreferrer"&gt;https://youtu.be/kdkPBE7fj20&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;- "Limites da Simplicidade": &lt;a href="https://youtu.be/byl4QAPajrU" rel="noopener noreferrer"&gt;https://youtu.be/byl4QAPajrU&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;- "Velocidade":&lt;br&gt;
&lt;a href="https://youtu.be/QWRsLrbFch0" rel="noopener noreferrer"&gt;https://youtu.be/QWRsLrbFch0&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;- "Filosofia UNIX: &lt;a href="https://youtu.be/mWXR_OBwjqY" rel="noopener noreferrer"&gt;https://youtu.be/mWXR_OBwjqY&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;- "BDD":&lt;br&gt;
&lt;a href="https://youtu.be/VMY_Z2jDl00" rel="noopener noreferrer"&gt;https://youtu.be/VMY_Z2jDl00&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;- "O Mítico Homem-mês": &lt;a href="https://youtu.be/f3z794AMpng" rel="noopener noreferrer"&gt;https://youtu.be/f3z794AMpng&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;- "DDD":&lt;br&gt;
&lt;a href="https://youtu.be/rt0gSnwqcGY" rel="noopener noreferrer"&gt;https://youtu.be/rt0gSnwqcGY&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;- "Complexidade Acidental":&lt;br&gt;
&lt;a href="https://youtu.be/IO4kOGfyVds" rel="noopener noreferrer"&gt;https://youtu.be/IO4kOGfyVds&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;- "TDD":&lt;br&gt;
&lt;a href="https://youtu.be/H3N2B5gcGYs" rel="noopener noreferrer"&gt;https://youtu.be/H3N2B5gcGYs&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;- "12 Factor App":&lt;br&gt;
&lt;a href="https://youtu.be/8SMdEiNSKf4" rel="noopener noreferrer"&gt;https://youtu.be/8SMdEiNSKf4&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;*A leitura fica mais completa com consulta aos links das referências no texto.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Crossplane: GKE Installation</title>
      <dc:creator>Carlos Nogueira</dc:creator>
      <pubDate>Wed, 24 Feb 2021 14:27:50 +0000</pubDate>
      <link>https://forem.com/cedon/crossplane-gke-installation-i01</link>
      <guid>https://forem.com/cedon/crossplane-gke-installation-i01</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;..Crossplane is an open source Kubernetes add-on that supercharges your Kubernetes clusters enabling you to provision and manage infrastructure, services, and applications from kubectl.&lt;/em&gt; (crossplane.io)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Crossplane is a CNCF sandbox project, open source, community driven solution and add-on for your kubernetes API to manage and compose infrastructure.&lt;/p&gt;

&lt;p&gt;It uses a team centric approach with Open Application Model.&lt;/p&gt;

&lt;p&gt;The idea is to use a kubernetes cluster as a single control panel. where there is freedom to provision resources in any cloud and link these services with the cluster itself. The cluster does not need to be in the same cloud as the services.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnz3dp5pfbhx0rgl2ejst.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnz3dp5pfbhx0rgl2ejst.png" alt="Alt Text" width="641" height="467"&gt;&lt;/a&gt;&lt;/p&gt;
Crossplane Application Architecture Example



&lt;p&gt;Basically a provider is configured in the cluster linked to a service account of a specific cloud.&lt;/p&gt;

&lt;p&gt;Crossplane CRDs use this provider to deploy and link services across the cluster.&lt;/p&gt;

&lt;p&gt;Each cloud service has its particularity and is defined through structures of compositions, definitions and namespaced k8s specifications.&lt;/p&gt;

&lt;p&gt;The CRDs that define the crossplane providers services are called XRDs.&lt;/p&gt;

&lt;p&gt;Crossplane has an external CLI and its own CRDs that are deployed in the cluster. &lt;/p&gt;

&lt;p&gt;Since CRDs and XRDs are deployed, the provisioning operation no longer requires the local CLI. Just having kubectl configured needed to re-deploy the types of resources that are already configured.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;Follows ansible to automate the installation of a crossplane + GCP Provider in a GKE cluster&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;GKE&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Google Cloud SDK (316.+)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;bq (2.0.62+)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;core (2020.10.23.+)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;gsutil (4.54.+)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Kubernetes(1.16.+)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;kubectl(1.16.+)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Helm(3.+)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;ansible (2.10.+)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;openshift python client (0.11.+)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;PyYAML (5.3.+)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Deploy
&lt;/h2&gt;

&lt;p&gt;1 - Git clone the repo to bastion&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  - $ git clone https://gitlab.com/cedon/crossplane-gcp.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2 - Check if roles/crossplane/defaults/main.yml is right for the environment you want to deploy&lt;/p&gt;

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

&lt;p&gt;3 - Deploy with ansible command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  - $ ansible-playbook -i ./hosts -e \ 
'ansible_python_interpreter=/usr/bin/python3' crossplane.yml 
\ --tags "install, gcp" -vvv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;After the Deploy you must take care about the file creds.json. It will be located at the repo root, and has the service account credentials.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;4 - Check Crossplane Installation&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  - $ kubectl get all -n crossplane-system
  - $ kubectl crossplane --help
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  References
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Crossplane - &lt;a href="https://crossplane.io" rel="noopener noreferrer"&gt;https://crossplane.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Crossplane Install and Configure V1.0 - &lt;a href="https://crossplane.io/docs/v1.0/getting-started/install-configure.html" rel="noopener noreferrer"&gt;https://crossplane.io/docs/v1.0/getting-started/install-configure.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Crossplane Provision Infrastructure - &lt;a href="https://crossplane.io/docs/v1.0/getting-started/provision-infrastructure.html" rel="noopener noreferrer"&gt;https://crossplane.io/docs/v1.0/getting-started/provision-infrastructure.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>kubernetes</category>
      <category>multicloud</category>
      <category>provider</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Linkerd: Service Mesh Overview</title>
      <dc:creator>Carlos Nogueira</dc:creator>
      <pubDate>Thu, 19 Nov 2020 05:37:26 +0000</pubDate>
      <link>https://forem.com/cedon/linkerd-service-mesh-overview-an7</link>
      <guid>https://forem.com/cedon/linkerd-service-mesh-overview-an7</guid>
      <description>&lt;p&gt;Linkerd is a ultralight, ultrafast, security-first service mesh for Kubernetes.&lt;/p&gt;

&lt;p&gt;Linkerd Service Mesh comes to solve the problem to add 3 layers at Cloud-Native Kubernetes app:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Observability&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Reliability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Going back in monolith time, we have to deal with one language technology stack(for example: Java). And 3 operations teams to interact, deploy, operate with it: Devs, Networking and Security.&lt;/p&gt;

&lt;p&gt;But if we look at a Cloud-Native Kubernetes app, we have multi-language and architecture scenarios. So, the chalengers are most complex, and add Observability, Security Layer and Reliability becomes a implementation and operations difficult task. &lt;/p&gt;

&lt;p&gt;On earliest 2010 years, Twitter, Netflix and Google dealt with this situations making native languages libraries for their microservices stacks. &lt;/p&gt;

&lt;p&gt;Twitter has evolved its jvm based library Finable to deal with a multilanguage architecture. Then changed the name to Linkerd on 2016. Became the first Service Mesh Plataform.  &lt;/p&gt;

&lt;p&gt;In 2017 Linkerd was donated to CNCF.&lt;/p&gt;

&lt;p&gt;In 2018 was launched the Linkerd 2.0 version. With several changes. Now we have a Linkerd2-proxy Rust-based and Control Plane Golang-based. &lt;/p&gt;

&lt;p&gt;Implement a network of proxies that communicate securely(mTLS) using HTTP and gRPC. It was the solution found to inject the mesh layer. Each microservice meshed has a proxy injected like a side-car container. &lt;/p&gt;

&lt;p&gt;The name of the proxies network layer is Data Plane. This is the base of collected metrics and active operations. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkugzn5aje8q3wmaml8t7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkugzn5aje8q3wmaml8t7.png" alt="Alt Text" width="800" height="219"&gt;&lt;/a&gt;&lt;/p&gt;
Data Plane




&lt;p&gt;The other module is the Control Plane. This is the Linkerd Plataform Owners API Operations interface. Can be access by CLI or Browser. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkihnxc72kbd6igb9mdug.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkihnxc72kbd6igb9mdug.png" alt="Alt Text" width="756" height="516"&gt;&lt;/a&gt;&lt;/p&gt;
Linkerd 2.x Architecture




&lt;p&gt;Linkerd Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Observability: Service-level golden metrics: success rates, latencies, throughput. Service topologies&lt;/li&gt;
&lt;li&gt;Reliability: Retries, timeouts, load balancing, circuit breaking&lt;/li&gt;
&lt;li&gt;Security: Transparent mTLS, cert management and rotation, policy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most Service Mesh Plataforms are based on Envoy Proxy, but it isn't The Linkerd case. &lt;/p&gt;

&lt;p&gt;Use a "micro-proxy" Rust-based let the project to..&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;avoid a entire class of memory vulnerabilities. &lt;/li&gt;
&lt;li&gt;compiles to native code(no runtime env/GC). So it can be ultralight and ultrafast &lt;/li&gt;
&lt;li&gt;built on Tokio, Hyper, H2, Tower and the rest of modern Rust async networking stack. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Linkerd has huge numbers and benchmark results:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;4+ years in production&lt;/li&gt;
&lt;li&gt;5,000+ Slack channel members&lt;/li&gt;
&lt;li&gt;10,000+ GitHub stars&lt;/li&gt;
&lt;li&gt;100+ contributors&lt;/li&gt;
&lt;li&gt;Weekly edge releases&lt;/li&gt;
&lt;li&gt;Open governance, neutral home&lt;/li&gt;
&lt;li&gt;Tl;dr: really fast. Not as fast as "no service mesh", but significantly smaller and faster than Istio.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don't use Linkerd if your app..&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;..is a monolith&lt;/li&gt;
&lt;li&gt;..that communicate purely via Kafka or another distributed queue&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Previous Post
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/cedon/linkerd-install-and-basic-ops-2l90"&gt;Linkerd: Install and Basic Ops&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  References
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Linkerd Docs - &lt;a href="https://linkerd.io/docs" rel="noopener noreferrer"&gt;https://linkerd.io/docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.edx.org/course/introduction-to-service-mesh-with-linkerd" rel="noopener noreferrer"&gt;Course: Introduction to Service Mesh with Linkerd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CNCF - &lt;a href="https://www.cncf.io/" rel="noopener noreferrer"&gt;https://www.cncf.io/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;gRPC - &lt;a href="https://grpc.io/" rel="noopener noreferrer"&gt;https://grpc.io/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Rust - &lt;a href="https://www.rust-lang.org/" rel="noopener noreferrer"&gt;https://www.rust-lang.org/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Golang - &lt;a href="https://golang.org/" rel="noopener noreferrer"&gt;https://golang.org/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Kinvolk Benchmark - &lt;a href="https://kinvolk.io/blog/2019/05/performance-benchmark-analysis-of-istio-and-linkerd/" rel="noopener noreferrer"&gt;https://kinvolk.io/blog/2019/05/performance-benchmark-analysis-of-istio-and-linkerd/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Tokio - &lt;a href="https://tokio.rs/" rel="noopener noreferrer"&gt;https://tokio.rs/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Hyper - &lt;a href="https://github.com/hyperium/hyper" rel="noopener noreferrer"&gt;https://github.com/hyperium/hyper&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;H2 - &lt;a href="https://github.com/hyperium/h2" rel="noopener noreferrer"&gt;https://github.com/hyperium/h2&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Tower - &lt;a href="https://github.com/tower-rs/tower" rel="noopener noreferrer"&gt;https://github.com/tower-rs/tower&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Kafka - &lt;a href="https://kafka.apache.org/intro" rel="noopener noreferrer"&gt;https://kafka.apache.org/intro&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>linkerd</category>
      <category>mesh</category>
      <category>kubernetes</category>
      <category>fundamentals</category>
    </item>
    <item>
      <title>Linkerd: Install and Basic Ops</title>
      <dc:creator>Carlos Nogueira</dc:creator>
      <pubDate>Sun, 01 Nov 2020 01:59:27 +0000</pubDate>
      <link>https://forem.com/cedon/linkerd-install-and-basic-ops-2l90</link>
      <guid>https://forem.com/cedon/linkerd-install-and-basic-ops-2l90</guid>
      <description>&lt;p&gt;Linkerd Installation, Basic Operations and My Thoughts About it. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Requirements(Works on Production too)&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;GKE or Minikube or kind&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Kubernetes(1.16+)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;kubectl(1.16+)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Linkerd 2.x&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1 - Install Linkerd CLI&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- $ curl -sL https://run.linkerd.io/install | sh
- $ export PATH=$PATH:$HOME/.linkerd2/bin
- $ linkerd version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2 - Validate Kubernetes Cluster&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- $ linkerd check --pre
OUTPUT:
..
pre-kubernetes-capability
-------------------------
‼ has NET_ADMIN capability
    found 1 PodSecurityPolicies.. 
‼ has NET_RAW capability
    found 1 PodSecurityPolicies..
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
(on GKE ignore this warnings. This is because there's no linkerd previously installation and the pods security policies are on. But, dont worry)






&lt;p&gt;3 - Deploy Linkerd&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- $ linkerd install | kubectl apply -f -
- $ linkerd check
- $ kubectl get all -n linkerd 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
(now the linkerd check command must have all green checks output)





&lt;p&gt;4 - Access the Dashboard&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- $ linkerd dashboard
OUTPUT:
Linkerd dashboard available at:
http://localhost:50750
Grafana dashboard available at:
http://localhost:50750/grafana
Opening Linkerd dashboard in the default browser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can use port-forward to expose the dashboard.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- $ kubectl port-forward --address 127.0.0.1 \
service/linkerd-web 5000:8084 -n linkerd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dashboard is referenced by the linkerd-web service. If you are executing from a bastion, you can define the bastion IP editing the deployment.apps/linkerd-web&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- $ kubectl edit deployment.apps/linkerd-web -n linkerd
# you must edit the address on the arg enforced-host:
# BEFORE EDIT:-enforced-host=^(localhost|127\.0\.0\.1|..
# AFTER  EDIT:-enforced-host=^(bastionhost|192\.168\.0\.9|..

- $ kubectl port-forward --address 0.0.0.0 \
service/linkerd-web 5000:8084 -n linkerd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you can open the Dashboard with bastion IP(192.168.0.9 as the example) and port 5000&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fq5wu7qdgh4mn0uii7cb1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fq5wu7qdgh4mn0uii7cb1.png" alt="Linkerd Dashboard" width="800" height="569"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With dashboard we can visualize our microservices architecture in selected namespace&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkn5kj195sijqkkue9dp3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkn5kj195sijqkkue9dp3.png" alt="Alt Text" width="800" height="637"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clicking on the Grafana icon link at the pod line, we can see the pod stats on a template pre-configurated&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftmtkvizcy0qjgoaxjqje.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftmtkvizcy0qjgoaxjqje.png" alt="Alt Text" width="251" height="150"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnrb68veiepq17716ck7q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnrb68veiepq17716ck7q.png" alt="Alt Text" width="800" height="555"&gt;&lt;/a&gt;&lt;/p&gt;
Each meshed pod will have a pre-configured Grafana Dashboard.



&lt;p&gt;The Linkerd is a lightweight powerful service mesh plataform, and had the advantage to be strongly decoupled architecture. It can be added and removed without influencing your app.&lt;/p&gt;

&lt;p&gt;Linkerd is unique in that it is part of the Cloud Native Foundation (CNCF), which is the organization responsible for Kubernetes.  &lt;/p&gt;

&lt;p&gt;The CLI had a simple and intuitive user experience.&lt;/p&gt;

&lt;p&gt;You can mesh your deployed microservice with simple commands&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#add with linkerd inject command on a deployed app
- $ kubectl get -n YOUR_APP_NAMESPACE deploy -o yaml \
  | linkerd inject - \
  | kubectl apply -f -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or add few yaml instructions(two config lines on the app deployment yaml)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#example:
annotations:
  checksum/config: 37b064423157b6fe14ddeba6924195c1075bd17feb
  linkerd.io/inject: enabled

#this values are extract from the command
- $ kubectl get -n YOUR_APP_NAMESPACE deploy -o yaml \
  | linkerd inject -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To reverse the mesh on your app do:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- $ kubectl get -n YOUR_APP_NAMESPACE deploy -o yaml \
  | linkerd uninject - \
  | kubectl apply -f -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To uninstall Linkerd&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- $ linkerd uninstall | kubectl apply -f -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  References
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Linkerd Docs - &lt;a href="https://linkerd.io/docs" rel="noopener noreferrer"&gt;https://linkerd.io/docs&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Converting Helm Charts to K8S SDK Templates</title>
      <dc:creator>Carlos Nogueira</dc:creator>
      <pubDate>Fri, 16 Oct 2020 07:37:55 +0000</pubDate>
      <link>https://forem.com/cedon/converting-helm-charts-to-k8s-sdk-templates-3a7e</link>
      <guid>https://forem.com/cedon/converting-helm-charts-to-k8s-sdk-templates-3a7e</guid>
      <description>&lt;p&gt;If you are working on a helm chart, however, you need to make customizations or debug in a more native way. An alternative is to convert it to kubernetes SDK templates. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Requirements&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Kubernetes(1.16+)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;helm (3+)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;kubectl(1.16+)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The process is simple:&lt;br&gt;
(mongodb example)&lt;/p&gt;

&lt;p&gt;1 Install desired chart generic release&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- $ kubectl create ns mgodb-ns
- $ helm install mongodb --namespace mgodb-ns stable/mongodb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2 Extract default generated chart values from the release&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- $ helm get values mongodb -a --output yaml &amp;gt; values.yaml 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3 Convert the chart to template&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- $ helm template --values ./values.yaml --output-dir \
./manifests stable/mongodb

OUTPUT: 
wrote ./manifests/mongodb/templates/secrets.yaml
wrote ./manifests/mongodb/templates/pvc-standalone.yaml
wrote ./manifests/mongodb/templates/svc-standalone.yaml
wrote ./manifests/mongodb/templates/deployment-standalone.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you can work on native SDK k8s yamls at the directory manifests/mongodb/templates/&lt;/p&gt;

&lt;p&gt;4 Don't forget to delete the generic release&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- $ helm uninstall mongodb
- $ kubectl delete ns mgodb-ns
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Deploy BigchainDB using Docker Compose</title>
      <dc:creator>Carlos Nogueira</dc:creator>
      <pubDate>Sun, 20 Oct 2019 21:37:35 +0000</pubDate>
      <link>https://forem.com/cedon/deploy-bigchaindb-using-docker-compose-4ig7</link>
      <guid>https://forem.com/cedon/deploy-bigchaindb-using-docker-compose-4ig7</guid>
      <description>&lt;p&gt;BigchainDB is a "blockchain database"..&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;..With high throughput, low latency, powerful query functionality, decentralized control, immutable data storage and built-in asset support, BigchainDB is like a database with blockchain characteristics.&lt;/em&gt;(bigchaindb.com)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's a good choice for who wants to work with immutable databases.&lt;/p&gt;

&lt;p&gt;Here's a tutorial to deploy a local infrastructure docker based.&lt;br&gt;
(I'm using Debian Buster, but the project recommends latests Ubuntu and CentOS)&lt;/p&gt;
&lt;h3&gt;
  
  
  Requirements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Docker(19.03+)&lt;/li&gt;
&lt;li&gt;Docker-Compose (2.0+)&lt;/li&gt;
&lt;li&gt;python3.6+&lt;/li&gt;
&lt;li&gt;pip3+ &lt;/li&gt;
&lt;li&gt;bigchaindb_driver(for the tests, install via pip3)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Clone Repo
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git clone https://github.com/bigchaindb/bigchaindb.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Install
&lt;/h3&gt;

&lt;p&gt;Bigchaindb Dependences&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo bash bigchaindb/pkg/scripts/bootstrap.sh --operation install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Deploy Docker Compose&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ docker-compose -f bigchaindb/docker-compose.yaml up -d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Check Containers
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo docker ps
CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS                    PORTS                                                        NAMES
6b9dcd4f524d        bigchaindb_bigchaindb           ".ci/entrypoint.sh"      32 minutes ago      Up 32 minutes (healthy)   0.0.0.0:9984-9985-&amp;gt;9984-9985/tcp, 0.0.0.0:32770-&amp;gt;26658/tcp   bigchaindb_bigchaindb_1
4b4c08cc3680        tendermint/tendermint:v0.31.5   "sh -c 'tendermint i…"   33 minutes ago      Up 32 minutes             0.0.0.0:26656-26657-&amp;gt;26656-26657/tcp                         bigchaindb_tendermint_1
443b20abbb7d        mongo:3.6                       "docker-entrypoint.s…"   33 minutes ago      Up 32 minutes             0.0.0.0:27017-&amp;gt;27017/tcp                                     bigchaindb_mongodb_1
3afee461139c        nginx                           "nginx -g 'daemon of…"   33 minutes ago      Up 32 minutes             0.0.0.0:33333-&amp;gt;80/tcp                                        bigchaindb_vdocs_1

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Testing db
&lt;/h3&gt;

&lt;p&gt;Create &lt;em&gt;testdb.py&lt;/em&gt; to test your installation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from bigchaindb_driver import BigchainDB
from bigchaindb_driver.crypto import generate_keypair
from time import sleep
from sys import exit

alice, bob = generate_keypair(), generate_keypair()

bdb_root_url = 'http://localhost:9984'  # Use YOUR BigchainDB Root URL here

bdb = BigchainDB(bdb_root_url)

bicycle_asset = {
    'data': {
        'bicycle': {
            'serial_number': 'abcd1234',
            'manufacturer': 'bkfab'
        },
    },
}

bicycle_asset_metadata = {
    'planet': 'earth'
}

prepared_creation_tx = bdb.transactions.prepare(
    operation='CREATE',
    signers=alice.public_key,
    asset=bicycle_asset,
    metadata=bicycle_asset_metadata
)

fulfilled_creation_tx = bdb.transactions.fulfill(
    prepared_creation_tx,
    private_keys=alice.private_key
)

sent_creation_tx = bdb.transactions.send_commit(fulfilled_creation_tx)

txid = fulfilled_creation_tx['id']

asset_id = txid

transfer_asset = {
    'id': asset_id
}

output_index = 0
output = fulfilled_creation_tx['outputs'][output_index]

transfer_input = {
    'fulfillment': output['condition']['details'],
    'fulfills': {
        'output_index': output_index,
        'transaction_id': fulfilled_creation_tx['id']
    },
    'owners_before': output['public_keys']
}

prepared_transfer_tx = bdb.transactions.prepare(
    operation='TRANSFER',
    asset=transfer_asset,
    inputs=transfer_input,
    recipients=bob.public_key,
)

fulfilled_transfer_tx = bdb.transactions.fulfill(
    prepared_transfer_tx,
    private_keys=alice.private_key,
)

sent_transfer_tx = bdb.transactions.send_commit(fulfilled_transfer_tx)

print("Is Bob the owner?",
    sent_transfer_tx['outputs'][0]['public_keys'][0] == bob.public_key)

print("Was Alice the previous owner?",
    fulfilled_transfer_tx['inputs'][0]['owners_before'][0] == alice.public_key)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Execute Test Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   $ python3 testdb.py 
   [out]Is Bob the owner? True
   [out]Was Alice the previous owner? True
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  References
&lt;/h3&gt;

&lt;p&gt;Bigchaindb Docs - &lt;a href="http://docs.bigchaindb.com/" rel="noopener noreferrer"&gt;http://docs.bigchaindb.com/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>bigchaindb</category>
      <category>blockchain</category>
      <category>mongodb</category>
      <category>docker</category>
    </item>
    <item>
      <title>Deploying A Private Storage Cloud (SeaFile) Using Docker</title>
      <dc:creator>Carlos Nogueira</dc:creator>
      <pubDate>Fri, 18 Oct 2019 13:04:14 +0000</pubDate>
      <link>https://forem.com/cedon/deploying-a-private-storage-cloud-seafile-using-docker-56gk</link>
      <guid>https://forem.com/cedon/deploying-a-private-storage-cloud-seafile-using-docker-56gk</guid>
      <description>&lt;p&gt;Seafile...&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;..is an open source file sync&amp;amp;share solution designed for high reliability, performance and productivity. Sync, share and collaborate across devices and teams.&lt;/em&gt;(SeaFile.com)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here we have a powerful suite: service, desktop/mobile clients, cli and web interface. A good private alternative to public clouds. &lt;/p&gt;

&lt;p&gt;Features includes storage, sharing, security and LDAP integration.&lt;/p&gt;

&lt;p&gt;Here's a video &lt;a href="https://www.youtube.com/watch?v=CdP_MTWBnE4" rel="noopener noreferrer"&gt;review&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Compose
&lt;/h2&gt;

&lt;p&gt;For this configuration the host just need allow services using the web ports(80,443).&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://gitlab.com/cedon/seafile/blob/master/docker-compose.yaml" rel="noopener noreferrer"&gt;docker compose&lt;/a&gt; sets 3 containers: mariadb, memcached and seafile. &lt;/p&gt;

&lt;p&gt;The seafile container responds to the service. It have a proxy nginx redirecting que request to internal service listen at port 8000. &lt;/p&gt;

&lt;h3&gt;
  
  
  Let's Encrypt
&lt;/h3&gt;

&lt;p&gt;To use Let's Encrypt, you must set this parameters:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    ports:
      ...
      - "443:443" 
      ...
    environment:
      ...
      - SEAFILE_SERVER_LETSENCRYPT=true 
      - SEAFILE_SERVER_HOSTNAME=your.domain.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The domain &lt;em&gt;your.domain.com&lt;/em&gt; must be valid and internet reachable, or the LetsEncrypt handshakes wont work. &lt;/p&gt;

&lt;h3&gt;
  
  
  MariaDB Connection and SeaFile Authentication
&lt;/h3&gt;

&lt;p&gt;You must check the database connection. &lt;/p&gt;

&lt;p&gt;Change the value &lt;em&gt;db_secret&lt;/em&gt; for your mysql connection password. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;MYSQL_ROOT_PASSWORD=db_secret&lt;/em&gt; must be the same value  of &lt;em&gt;DB_ROOT_PASSWD=db_secret&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DB_HOST=db&lt;/em&gt; must be the same of the mariadb service name &lt;em&gt;db&lt;/em&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;services:
  db:
   ...
    environment:
      - MYSQL_ROOT_PASSWORD=db_secret 
  seafile:
  ...
    environment:
      - DB_HOST=db
      - DB_ROOT_PASSWD=db_secret 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The SeaFile Authentication uses e-mail as login name. &lt;/p&gt;

&lt;p&gt;Change the value &lt;em&gt;a_secret&lt;/em&gt; for your admin password.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;services:
  ... 
  seafile:
  ...
    environment:
     - SEAFILE_ADMIN_EMAIL=me@example.com
     - SEAFILE_ADMIN_PASSWORD=a_secret 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Deploy SeaFile
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Requirements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Docker(19.03+)&lt;/li&gt;
&lt;li&gt;Docker-Compose (2.0+)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Deploy:
&lt;/h3&gt;

&lt;p&gt;clone repository&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://gitlab.com/cedon/seafile.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;here two ways to deploy:&lt;/p&gt;

&lt;p&gt;1.official seafile sample docker-compose.yaml file.&lt;/p&gt;

&lt;p&gt;1.1. edit compose file seafile/&lt;a href="https://gitlab.com/cedon/seafile/blob/master/docker-compose.yaml" rel="noopener noreferrer"&gt;docker-compose.yml&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1.2. deploy infrastructure&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker-compose -f seafile/docker-compose.yaml up -d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;2.setting the parameters on &lt;a href="https://docs.docker.com/compose/compose-file/#env_file" rel="noopener noreferrer"&gt;.env files&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;2.1. set the environment parameters on files: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mariadb:&lt;a href="https://gitlab.com/cedon/seafile/blob/master/env/db.env" rel="noopener noreferrer"&gt;env/db.env&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;seafile:&lt;a href="https://gitlab.com/cedon/seafile/blob/master/env/seafile.env" rel="noopener noreferrer"&gt;env/seafile.env&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;2.2. deploy infrastructure&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker-compose -f seafile/docker-compose.sec.yaml up -d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Setting Up the service
&lt;/h2&gt;

&lt;p&gt;After the deploy, you must access System Admin &amp;gt; Settings&lt;/p&gt;

&lt;p&gt;Set the Service URL: &lt;code&gt;http://your.domain.com:8000&lt;/code&gt;&lt;br&gt;
Set the File Server Root: &lt;code&gt;http://your.domain.com/seafhttp&lt;/code&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;p&gt;SeaFile Project - &lt;a href="http://www.seafile.com" rel="noopener noreferrer"&gt;www.seafile.com&lt;/a&gt;&lt;br&gt;
Cedon's SeaFile Example Repository - &lt;a href="//gitlab.com/cedon/seafile"&gt;gitlab.com/cedon/seafile&lt;/a&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>seafile</category>
      <category>storage</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Autoscaling Group With AWS Elastic Load Balancing</title>
      <dc:creator>Carlos Nogueira</dc:creator>
      <pubDate>Fri, 18 Oct 2019 00:09:56 +0000</pubDate>
      <link>https://forem.com/cedon/autoscaling-group-with-aws-elastic-load-balancing-4pl1</link>
      <guid>https://forem.com/cedon/autoscaling-group-with-aws-elastic-load-balancing-4pl1</guid>
      <description>&lt;p&gt;If you want to deploy an Autoscaling EC2 infrastructure on AWS using ELB, you'll need to follow this steps: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Launch EC2 Instance

&lt;ul&gt;
&lt;li&gt;EC2 Dashboard &amp;gt; Launch Instance&lt;/li&gt;
&lt;li&gt;Configure your web app&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Transform into AMI

&lt;ul&gt;
&lt;li&gt;Select Instance &amp;gt; Action &amp;gt; Image &amp;gt; Create Image&lt;/li&gt;
&lt;li&gt;Instance &amp;gt; Delete EC2 Instantes&lt;/li&gt;
&lt;li&gt;Delete Security Group created with the Instance&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Deploy AMI across different zones

&lt;ul&gt;
&lt;li&gt;Load Balancer &amp;gt; Create Load Balancer &amp;gt; Application Load Balancer&lt;/li&gt;
&lt;li&gt;Select Zones&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Configure Secure Groups

&lt;ul&gt;
&lt;li&gt;Create New Secure Group&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Configure Target Groups

&lt;ul&gt;
&lt;li&gt;Define a Target Group name&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Launch Configurations

&lt;ul&gt;
&lt;li&gt;Choose the AMI created early&lt;/li&gt;
&lt;li&gt;Define Launch Configuration name&lt;/li&gt;
&lt;li&gt;Allow traffic just to the Load Balancer Security Group&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Configure the Autoscaling Group

&lt;ul&gt;
&lt;li&gt;Autoscaling Group &amp;gt; Create Autoscaling Group&lt;/li&gt;
&lt;li&gt;Define Name&lt;/li&gt;
&lt;li&gt;Group Size&lt;/li&gt;
&lt;li&gt;Choose the subnets&lt;/li&gt;
&lt;li&gt;Choose Target Groups&lt;/li&gt;
&lt;li&gt;Health Check Type: ELB&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Define the Scaling Policies

&lt;ul&gt;
&lt;li&gt;Create Increase and Decrease Alarms&lt;/li&gt;
&lt;li&gt;Set Notifications&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Autoscaling Group will launch the AMI instances based on the Increase/Decrease alarms and the minimal requirements. &lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;p&gt;Elastic Load Balancing - &lt;a href="https://aws.amazon.com/elasticloadbalancing/" rel="noopener noreferrer"&gt;https://aws.amazon.com/elasticloadbalancing/&lt;/a&gt;&lt;br&gt;
Elastic Compute Cloud - &lt;a href="https://aws.amazon.com/ec2/" rel="noopener noreferrer"&gt;https://aws.amazon.com/ec2/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>elb</category>
      <category>loadbalacing</category>
    </item>
    <item>
      <title>How to Deploy YAMLs with Deprecated Parameters on Kubernetes 1.16.0</title>
      <dc:creator>Carlos Nogueira</dc:creator>
      <pubDate>Thu, 17 Oct 2019 00:43:21 +0000</pubDate>
      <link>https://forem.com/cedon/how-to-deploy-yamls-with-deprecated-parameters-on-kubernetes-1-16-0-297n</link>
      <guid>https://forem.com/cedon/how-to-deploy-yamls-with-deprecated-parameters-on-kubernetes-1-16-0-297n</guid>
      <description>&lt;p&gt;The Kubernetes version 1.16.0 stopped to serve the following deprecated APIs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;NetworkPolicy&lt;/strong&gt; (in the &lt;em&gt;extensions/v1beta1&lt;/em&gt; API group):&lt;br&gt;
Migrate to use the &lt;em&gt;networking.k8s.io/v1&lt;/em&gt; API, available since v1.8. Existing persisted data can be &lt;em&gt;retrieved/updated&lt;/em&gt; via the &lt;em&gt;networking.k8s.io/v1&lt;/em&gt; API.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PodSecurityPolicy&lt;/strong&gt; (in the &lt;em&gt;extensions/v1beta1&lt;/em&gt; API group):&lt;br&gt;
Migrate to use the &lt;em&gt;policy/v1beta1&lt;/em&gt; API, available since v1.10. Existing persisted data can be &lt;em&gt;retrieved/updated&lt;/em&gt; via the &lt;em&gt;policy/v1beta1&lt;/em&gt; API.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;DaemonSet&lt;/strong&gt;, &lt;strong&gt;Deployment&lt;/strong&gt;, &lt;strong&gt;StatefulSet&lt;/strong&gt;, and &lt;strong&gt;ReplicaSet&lt;/strong&gt; (in the &lt;em&gt;extensions/v1beta1&lt;/em&gt; and &lt;em&gt;apps/v1beta2&lt;/em&gt; API groups)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You must check your older YAMLs. But changing the listed parameters in all files can be an exhausting task.&lt;/p&gt;

&lt;p&gt;An option would be to convert the older files.&lt;/p&gt;

&lt;p&gt;For example, lets deploy a NGINX using the file nginx.yaml.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
   run: nginx
  name: deploy-nginx
spec:
  selector:
     matchLabels:
      run: nginx
  template:
     metadata:
      labels:
        run: nginx
    spec:
      containers:
      - image: nginx
        name: nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The files nginx.yaml sets &lt;em&gt;apiVersion: extensions/v1beta1&lt;/em&gt; and it's compatible with kubernetes older versions, but not run on The last.&lt;br&gt;
To convert the older YAML, using client 1.16 execute &lt;em&gt;kubectl&lt;/em&gt; with the option &lt;em&gt;convert&lt;/em&gt;:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Command screen output would be like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    run: nginx
  name: deploy-nginx
spec:
  progressDeadlineSeconds: 2213489811
  revisionHistoryLimit: 2213489811
  selector:
    matchLabels:
      run: nginx
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        run: nginx
    spec:
      containers:
      - image: nginx
        imagePullPolicy: Always
        name: nginx
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartiPolicy: Always
      schedulerName: defaul-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 28
status: {}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Paste the command output to a file(ex: nginxOUT.yaml)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl convert -f nginx.yaml &amp;gt; nginxOUT.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Deploy&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Using output file
&lt;/h3&gt;



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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Directly with the older file
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl convert -f nginx.yaml | kubectl create -f -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/" rel="noopener noreferrer"&gt;https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>api</category>
      <category>yaml</category>
      <category>deprecated</category>
    </item>
  </channel>
</rss>
