Aula 4 - Desafio Github Actions | Desafio DevOps & Cloud

1.08k views13541 WordsCopy TextShare
Fabricio Veronez
Essa é a quarta aula do Desafio DevOps & Cloud! Se você ainda não assistiu as aulas anteriores, pau...
Video Transcript:
Opa Tudo bem seja muito bem-vindo e muito bem-vinda à quarta aula do desafio devops e Cloud se você ainda não assistiu os vídeos anteriores é muito importante que você assista eles primeiro porque essas aulas são complementares beleza mas depois você volta para cá porque hoje nós vamos falar sobre um assunto que vai economizar demais o seu tempo vai evitar falha humana e retrabalho e vai acelerar muito as suas entregas e dobrar ou triplicar a sua produtividade e vai aumentar a sua Tranquilidade e confiança para você fazer as suas entregas inclusive chega de ter medo de
Deploy em produção hoje nós vamos falar sobre as entregas automatizadas de software utilizando a pipelines cicd quando a integração contínua e a entrega contínua são implementadas de forma correta é possível colocar a sua aplicação em produção de forma automática sem que o seu usuário fique sem utilizar o sistema e o melhor você pode ficar tranquilo e sem medo da aplicação quebrar após o Deploy porque você vai ter garantido que a aplicação passou pelos testes necessários pela verificação de segurança e de vulnerabilidade e vai chegar redondinha ali pro usuário evitando falhas humanas em todo esse processo
ou seja aqu depo de sexta-feira Deixa de ser um processo desesperador porque a chance de dar problema é mínima e fala sério é muito melhor trabalhar Dessa forma não é fora a economia de tempo que você ganha desde a produção do software até a entrega do usuário e a agilidade na resposta a eventuais problemas fazendo com que o software seja muito mais confiável Então bora lá entender como funcionam as pipelines antes da gente implementar na prática aqui uma pipeline CCD vamos falar sobre o conceito de pipeline automação e o que é CCD exatamente quando a
gente pensa em pipeline né quando a gente pega ali a palavra pipeline em si traduzindo nada mais é do que encanamento tubulação Então pipeline nada mais é do que o seu encanamento virtual vamos vamos vamos vamos destrinchar isso aqui melhor mas o que que faz o encanamento o encanamento ele conduz um fluxo do ponto a ao ponto b eu insiro ali um um fluido ou um objeto que eu quero conduzir nesse trajeto nesse fluxo eu vou inserir ali na entrada da tubulação e ele vai conduzir até a saída a ideia na que em devops na
área de tecnologia é a mesma é quando conduzir uma entrada e gerar uma saída que vai ser conduzida pela minha pipeline o que que eu vou ter nesse fluxo aqui uma sequência de tarefas para entregar o meu resultado final então pipeline em tecnologia aqui quando a gente fala em devops nada mais é do que criar um fluxo onde eu vou executar uma sequência de tarefas que vai gerar ali um resultado final e eu tenho é claro o conceito principal que é o CCD que eu vou falar aqui mas eu posso fazer diversas automações diferentes eu
posso criar uma pipeline para renovar certificado para fazer ali uma exportação de uma informação pegar um Excel ali e transformar em alguma outra coisa cara você pode fazer o que você quiser utilizando o pipeline mas quando a gente fala em entrega de software quando a gente fala em devops eu tenho o dois conceitos muito importantes de pipeline eu tenho o ci que é o continuous integration integração contínua e eu tenho o CD que é o continuous delivery ou continuous deployment ou entrega ou Deploy contínuo certo e o que que é a integração contínua a integração
contínua ela tem como objetivo pegar o código que eu desenvolv com novas features com correções de buds e gerar um uma nova releas gerar um novo entregável então aqui eu vou pegar esse meu código que eu desenvolvi incorporar no código já existente para gerar uma nova entrega e quando a gente pega um novo código né com novas features com correções eu preciso garantir a qualidade desse código que eu quero incorporar no meu projeto então o objetivo da pipeline de integração contínua pipeline deci é garantir que eu vou ter essa qualidade fazendo o quê executando todas
as tarefas que vão garantir isso fazer etapa de teste etapa de Build para ver se meu código tá compilando fazer análise de código eh fazer verificação de segurança de vulnerabilidade vê se algum pacote ali tem vulnerabilidade e tudo mais então eh a pipeline de integração contínua ela tá muito mais próximo do profissional de desenvolvimento do que do profissional de operação porque tá mais ligado à entrega de código criação de release de nova versão não significa que a equipe de operação Não vai eh interagir aqui ou trabalhar na construção da pipeline de ci de integração contínua
porque afinal de contas Isso vai ser executado em algum ambiente então todos os envolvidos devem participar Mas é claro que a equipe de desenvolvimento aqui normalmente ela tem ali é Uma não um maior destaque mas tem ali uma maior atuação então na integração contínua eu vou começar aqui o meu processo e na codificação e no comit do meu código onde eu envio ali o o código lá pro meu repositório e aí eu vou disparar aqui a sequência de tarefas onde eu vou fazer o build vou fazer o teste vou fazer análise de código garantia de
segurança para gerar essa nova release que vai ser e entregada para executar em um ambiente e aí entra a pipeline de CD A pipeline de continuous delivery ou entrega contínua onde eu vou pegar essa nova release que foi criada e vou entregar em um ambiente ah Fabrício mas a pipeline ela vai entregar em produção não necessariamente você pode utilizar a pipeline de CD para entregar no ambiente de homologação no ambiente de testes inclusive se você tiver começando a implementar esse tipo de automação a forma mais segura de testar de validar antes de fazer a entrega
em produção é fazer o Deploy no ambiente desses intermediário e o que que você vai ter aqui na pipeline de CD você vai ter todas as etapas que que garantem a qualidade da execução dessa aplicação para verificar se ela não tem nenhum bug para verificar se todos os requisitos funcionais ou os principais estão sendo obedecidos E é claro você pode ter uma validação manual aqui também mas quando eu falo aqui em validação manual é um aceite eh não burocrático vamos dizer assim você não vai pagar o duda reconhecer em cartório nada disso para poder fazer
esse aceite aí tem que ser tão simples quanto o clique de um botão tipo ah clica aí e tá aprovado aí a minha entrega então aqui eu vou começar na minha release no final da pipeline de integração contínua de c e eu vol teri essas etapas o meu teste end to end por exemplo posso ter aqui o meu aate que é tão simples quanto o clique de um botão e aí eu vou ter o meu Deploy em produção ou ou em qualquer outro ambiente Inclusive eu posso ter a pipeline fazendo Deploy em vários ambientes intermediários
antes de fazer a entrega no meu ambiente final eu posso fazer ali num ambiente de homologação fazer meus testes ter ali o aceite fazer o teste novamente para depois promover pra produção essa aqui é a forma mais automatizada possível mas esses são os dois conceitos principais de pipelines quando a gente fala em entrega de software e devops a integração contínua e a entrega contínua Qual é a dica que eu te dou ah Fabrício Putz eu comecei agora e eu não sei nada de de pipeline e tal o que que eu faço cara começa pelo básico
começa ali com uma automação simples de c e de CD e vai evoluindo ah Fabrício eu por onde eu começo a dica que eu dou é integração contínua se você ainda não tem nenhuma aut ação começa pela integração contínua porque é o que vai gerar é menos impacto na no ambiente de produção e é o que vai entregar um enorme valor porque você já vai eliminar todo aquele processo manual que você normalmente faz e fazendo ali e tudo na sua máquina executando os testes muitas vezes você esquece e você não para ali toda a sua
equipe para fazer esse processo então começa pela pipeline de integração contínua a pipeline de ci E aí depois você vai pra pipeline de CD e sempre pensando em evoluir sempre pensando em otimizar você não vai chegar ali no resultado final logo de cara até porque o seu processo ele vai evoluindo também e a sua pipeline vai evoluir junto ok aqui no caso que que a gente vai trabalhar para construir essa nossa PIP Line CCD Eu tenho várias ferramentas hoje no mercado que fazem a construção de pipeline jenkins github Actions gitlab e tem diversas ferramentas mas
aqui a gente vai utilizar o gth Hub Actions o github Actions é a ferramenta de automação e construção de pipelines do próprio github então se você já trabalha aí com gerenciamento de código se você já versiona o seu código no github você já tem aí um passo dado para trabalhar com o github Actions e como hoje é boa parte dos profissionais trabalha ali utiliza o github tem uma conta no github para versionar o seu código é a melhor forma de você começar utilizando o github Actions porque você já tem a conta e para você utilizar
ali de uma forma geral ele é gratuito e você consegue criar facilmente sem muito atrit sem ter muitos requisitos Então cara tá na dúvida com qual ferramenta começar github Actions É com certeza e a melhor opção e pra gente criar uma automação com github Actions eu tenho alguns conceitos que são importantes você entender primeiro é o workflow workflow é o fluxo que eu vou construir qualquer automação qualquer pipeline que você vá criar no github Action você vai utilizar um workflow ele é criado a partir do código iemo então você vai declarar o seu workflow utilizando
iemo onde você vai ter ali todas as sequências de tarefas todas as ações que você vai executar e qualquer workflow qualquer automação ela vai ser disparada a partir de um evento Então eu tenho o conceito também aqui de events que vai ser a Trigger vai ser ali o start para eu poder Executar a minha automação e aí eu posso ter ali como evento é comite de código eu posso ter criação de card eu posso ter ali um evento manual onde eu executo ali manualmente tem diversas formas tem diversos eventos que você pode trabalhar e o
outro conceito importante é o conceito de job onde eu vou ter ali um conjunto de tarefas que vão ser executadas de forma ordenada né Cada tarefa vai ser uma ação então qualquer eh ação ou passo que eu vou ter que executar eu vou declarar ali no meu Job eu tenho o step que é o conjunto de etapas que eu vou executar o conjunto de ações de forma ordenada e eu tenho as Actions que são as tarefas são as ações realmente que eu vou executar e eu posso executar um simples comando ou um script ou eu
tenho ações mais complexas que encapsulam ali eh código para fazer ali uma tarefa que em conjunto com várias outras outras ações e tarefas vão ter ali o meu resultado e eu tenho também o Runner o Runner é o meu agente de execução é aonde que eu vou executar essa minha automação eu posso executar em ambiente Mac em ambiente Windows em ambiente Linux é só você especificar isso no seu Job Ok bom então com todo esse conceito agora que você sabe né o de integração contínua de contínua e essa estrutura básica que eu vou montar com
Git Hub Actions vamos entender o que a gente vai fazer aqui no projeto e o projeto que nós vamos fazer aqui de automação nada mais é do que entrega né da nossa aplicação onde cada commit que eu vou fazer ali no repositório vai disparar a minha automação no github Actions onde eu vou fazer o processo de integração contínua que eu vou gerar ali a minha minha imagem doc que vai ser a minha release e depois vou executar aqui o processo de CD onde eu vou fazer a entrega da minha aplicação no ambiente kubernetes e é
claro kubernetes ele vai acessar lá a minha imagem certo então agora que você entendeu aqui todos esses conceitos o que a gente vai fazer vamos botar a mão na massa aqui e implementar a nossa pipeline de CCD Então vamos começar aqui a montar a nossa pipeline CCD para fazer o Deploy da aplicação de forma automática eu tenho alguns requisitos aqui para começar a montar esse projeto primeiro você precisa ter um cluster kubernetes igualzinho que a gente fez na aula anterior no meu caso aqui ó eu já tenho se eu executar aqui Cub CTL get noes
tá aqui ó eu tenho aí o cluster kubernetes segundo ponto a gente vai trabalhar com o github Action direto no repositório do github então é importante também você fazer um fork do projeto aqui do fake Shop não adianta usar aqui o repositório original faa aqui o fork aqui ó vindo aqui em fork colocando aqui a sua conta fazendo ali o fork do projeto eu no caso aqui Inclusive eu fiz também ó para minha conta pessoal para eu não mexer lá no repositório original Então faça isso aqui também certo tem que ter o repositório aqui separado
eu já tenho aqui ó inclusive com o Manifesto do kubernetes a imagem docker tudo que a gente fez até agora e para começar a construir a nossa pipeline para construir aqui e a nossa automação Se você olhar aqui ó em cima em Actions aqui eu tenho uma aba aqui ó Actions que é justamente eh a aba onde eu tenho as automações utilizando github Actions e assim que eu entro na aba no caso não tendo nada nela ele vai me mostrar aqui algumas sugestões do que eu posso fazer baseado no conteúdo do repositório então ele viu
aqui que eu tenho código Python ele viu ali que eu tenho algum JavaScript né HTML e ele viu ali um docker F então já recomendou aqui e essas automações e aqui embaixo aí também recomendo alguns de Deploy de segurança e tudo mais então cara eu tenho aqui diversas recomendações que eu posso utilizar como um start como um template para iniciar no caso eu vou fazer aqui do zero então para isso eu vou vir aqui ó setup a workflow yourself que eu vou criar aqui o meu próprio workflow e ele vai me dar uma página em
branco ele vai me dar aqui um ar arquivo eemo em branco e como eu vou criar aqui o meu workflow eu vou trabalhar com a declaração do workflow no formato emo e isso aqui é muito legal por quê Porque como o meu a minha pipeline a minha automação ela também é um código e tá junto do meu repositório eu também vou ter o versionamento vou poder trabalhar com o fluxo de criação de autorização vou ter controle sobre as alterações histórico então eu consigo evoluir a minha pipeline junto com o projeto e ter todo esse histórico
registrado Então cara isso é excelente utilizar código também para declarar a sua automação também é uma boa prática então aqui eu vou montar uma estrutura base de pipeline tudo que vai ter que ter aqui no meu workflow eu vou montar aqui uma estrutura Inicial com alguns comandos mocados ali simplesmente e simulando ali algumas ações e depois a gente vai preenchendo esse cara primeira coisa que eu tenho que ter aqui no meu workflow é o nome né o name dele deixa eu até aumentar ele aqui um pouquinho mas eu tenho que ter aqui ó o name
o nome desse meu e workflow E aí como é uma pipeline CD eu vou criar aqui no num arquivo único poderia fazer aqui separadamente Sem problema mas como aqui vai ser único eu vou botar o nome de c e CD certo dessa forma aqui depois que eu declaro o nome eu preciso declarar o evento que vai ser disparado né o evento que eu preciso e disparar para iniciar esse workflow para iniciar a minha automação e aí eu faço isso aqui com o on certo e aí eu vou colocar dois eventos aqui eu vou colocar o
evento de push que é quando eu envio ali um código para uma Brand E aí a aqui eu vou colocar a Branch que eu vou ficar observando que no caso aqui e eu vou botar a Branch Main certo dessa forma aqui ok Ah aqui ó Main dessa forma OK e eu também vou colocar aqui o workflow workflow dispatch esse cara aqui ele permite eu executar a minha pipeline de forma manual então se eu fizer aqui um commit na bran M ele vai disparar se eu quiser disparar manual eu também vou conseguir disparar Então quando você
tá construindo aqui a pipeline é uma boa você colocar o workflow dispatch para você testar ali não precisar ficar ali comit o tempo inteiro o código para ele disparar Ok então coloquei o nome coloquei o evento e agora eu vou definir aqui os Jobs n qual ser as seci de etap que eu defin aqui no meu workflow como é uma pipeline CCD simples e eu colar aqui tudo no mesmo arivo no mesmo workflow eu criar dois Jobs eu V criar o job de c e o job de CD O Job de integração contínua e o
job de entrega contínua então eu vou colocar esse aqui Como disse I certo vou declarar aqui o primeiro e toda vez que eu declaro um Job que eu vou colocar al a minha sequência de ações para serem executadas nesse job eu preciso declarar também o runs on o runs on é exatamente o meu Runner qual vai ser o meu agente de execução em qual ambiente que eu vou disparar essa automação no caso aqui eu vou trabalhar com o o Boom latest eu vou trabalhar com a última versão do Ubunto como eu vou trabalhar aqui com
Dock com kubernetes que são tecnologias baseadas em Linux faz sentido eu fazer dessa forma eu vou trabalhar aqui então com esse ambiente Linux utilizando o buun latest mas posso botar o Windows posso botar Mac não tem problema nenhum tem diversos agentes Runners diferent então declarei aqui o Run Zone agora eu vou colocar os meus steps Quais são os meus passos de execução o que que eu vou ter que executar aqui na minha pipeline de C Como eu disse aqui agora eu vou montar essa estrutura básica só para você ver como montar um workflow e depois
a gente vai voltar aqui e alterar colocando realmente as funcionalidades Mas como eu vou simular agora eu vou fazer o seguinte eu vou colocar aqui algumas Actions e já simulando que a gente vai fazer nessa pipeline de deci no caso como é uma pipeline deci o objetivo é pegar o código existente e garantir que eu vou criar uma nova release eu vou fazer aqui na primeira eu vou botar aqui o name E aí a primeira coisa que eu vou fazer aqui é autenticar no docker Hub né autenticar ali fazer a autenticação do meu usuário no
docker Hub aí no caso aqui eu vou botar ação né que é o Run E aí eu vou simular Vou botar aqui Eco E aí eu vou botar eh executando o comando docker login certo dessa forma aqui essa é a minha primeira Action A segunda vai ser a criação da imagem né então aqui vou colocar também name e envio ou melhor construção da imagem construção da imagem imag do botar aqui do cer e aun eu coloco aqui executando comando docker build E aí vou até copiar aqui depois eu tenho o envio da imagem op faz
cer certo depois eu formato aqui beleza aqui ó botar envio da imagem doc envio da imagem Dock executando o comando docker push então isso aqui é a minha pipeline DCI né é a simulação da minha pipeline DCI É claro aqui tem muito mais coisa que eu poderia colocar eu poderia executar teste executar o Build do código e tudo mais mas aqui o objetivo é montar uma pipeline simples com o básico necessário para entregar a aplicação para montar uma pipeline de produção e tal tem muito muitos outros conceitos que a gente pode abordar aqui mas aí
seria brother cara é um mês inteiro falando sobre pipeline por isso que na formação Dev devops pro lá cara o módulo de de github Actions tem quase 30 horas de conteúdo porque pipeline cara é tem muita coisa mas aqui é o básico para você já pegar a ideia e já conseguir montar uma automação de entrega então aqui ó eu vou colocar dessa forma né montei minha pipeline DCI e agora eu vou colocar a pipeline de CD e aí eu vou criar um novo Job tem que tá aqui no mesmo alinhamento certo eu vou copiar essa
estrutura aqui Inicial tá pra gente só alterar o que é necessário então colo aqui beleza o runs on eu vou manter porque eu vou também trabalhar com ambiente e Linux e e aqui o que que eu vou fazer eu vou autenticar na aws né que é o primeiro passo para fazer a entrega dessa release né eu vou ter que pegar essa release aqui e executar no ambiente né que vai ser o meu cluster kubernetes então primeiro passo executar e autenticar na aws E aí eu vou botar aqui executando o comando e aws eh configure né
que é o comando lá para fazer a configuração do cai da aws depois eu preciso eh configurar configurar o Cub CTL né o o Cub config para que eu tenha ali acesso ao cluster kubernetes aí no caso executar o comando aws eeks update eh Cub config Cub config aquele comando lá que faz a atualização aqui eu tô só Moc tô só botando ali um print é muito mais coisa que eu vou ter que fazer tem muito mais complexidade mas é é só para você ter uma ideia do que a gente vai fazer e agora aqui
o próximo passo é executar o Cub CTL apply não aplicar melhor botar aqui aplicar os manifestos no no kubernetes certo é ou fazer aqui Deploy dos manifestos vamos botar aqui Deploy dos manifestos enfim e aqui eu vou botar executando o comando Hub CTL apply então basicamente é isso que eu vou fazer junto com você eu vou montar a estrutura de c com mais ou menos isso aqui né e o CD dessa forma também agora já que a gente montou um template aqui inicial a gente montou essa estrutura básica vamos ver o que que vai acontecer
se eu der um comit aqui no código vamos dar uma olhada eu pego aqui dou um commit e aqui eu vou fazer o commit aqui direto na B na Brant Main Não façam isso em produção crianças e eu vou fazer aqui o comit do código e aí você vai ver aqui ó se eu vir aqui em Actions você vai ver que aqui ó ele criou aqui ó eh uma lista de workflows que no caso só tem um workflow né se eu clicar nesse cicd aqui ó você vê que ele tá disparando a automação como eu
coloquei aqui o meu arquivo e ele já já tá aqui no repositório eu fiz ali o comit ele já disparou o evento né eu botei isso lá no on botando para ele disparar assim que eu subir o código se eu clicar nesse cara aqui ele mostra a execução inclusive ó executou com sucesso cada um dos Jobs E se eu vir aqui no ci eu vou ver todas as Actions que foram executadas tudo que eu coloquei lá no Job para ser executado então aqui ó o autenticado no docker Hub tá aqui a construção da imagem docker
tá aqui o envio da imagem docker também tá aqui então tudo vai tá aqui né em relação a execução por isso que eu moei ali coloquei um Eco para eu ver ali a estrutura eu gosto de montar esse template Inicial mocado só com eco ali mostrando os outputs para eu ter uma visão ali exatamente do que eu preciso inserir e colocar as funcionalidades se eu vir aqui no cd eu vejo também aqui ó autenticar na WS configurar Cub CTL Deploy dos manifestos no kubernetes e tudo mais então eu vejo aqui todas as etapas muito bem
Claras é só ir colocando a funcionalidade acabou aqui esse template Inicial não eh se a gente voltar aqui no sumário né eu vejo a execução aqui do c cd mas não tá correto Por quê Porque o CIA e o CD eles estão sendo executados ao mesmo tempo paralelamente e não faz sentido o CD né a minha entrega contínua ela só pode ser disparada depois da Integração contínua depois que eu tenho a nova release Então eu preciso fazer um ajuste aqui porque por padrão os Jobs no github Actions eles são executados de forma paralela Então eu
preciso definir aqui que o job de CD ele depende do Job deci para poder ser executado de forma sequencial E aí para fazer isso eu vou vir aqui no código n vou voltar aqui no code e se você olhar aqui no meu no meu repositório eu tenho aqui ó um diretório pgub bar workflows e dentro dele eu tenho o meu arquivo Main pemo todo o workflow né Toda a automação que eu monto no github Actions ele tem que tá nesse nesse diretório no pon github bar workflow senão ele não identifica fica então agora que que
eu vou fazer eu vou alterar aqui Falando Ah deixa eu botar aqui para editar eu vou botar aqui ó que o meu Job de Não não é o job deci é aqui embaixo o meu Job de CD ele depende certo botar aqui o nits ele depende do Job deci E aí dessa forma eu consigo criar a dependência e vai ser executado de forma sequencial eu venho aqui faço o commit ele vai ter aqui agora a automação disparado ó vem aqui em Actions E aí aqui ó eu tenho ele já sendo disparado de novo aqui com
a mensagem do comit Aí eu entro aqui ó olha lá como é que a execução mudou ele primeiro executa o c para depois executar aqui o CD E aí agora eu tô executando da maneira correta viu porque que é legal criar esse template colocar ali o eco simulando você consegue pegar esses probleminhas antes mesmo de começar a montar a sua pipeline então agora a estrutura tá correta primeiro executo c a e depois executo CD eu tenho ali e simulado todo o passo a passo agora vamos botar na prática aqui primeiro criando a nossa pipeline de
ci para criar aqui a nossa pipeline deci o que que eu vou ter que fazer eu vou ter que voltar lá no meu arquivo emo onde eu simplesmente coloquei lá os comandos ecos imprimindo e ali no output e o resultado do que eu quero fazer e realmente implementar então agora a gente vai substituir aqueles moocs aqueles fakes realmente por Actions e comandos certo eu vou realmente trabalhar com ações e para monar aqui a pipeline eu tenho três formas diferentes de fazer eu posso executar aqui o clone e trabalhar localmente subindo o meu código com o
Git commit e o Git push eu posso vir aqui né No meu arquivo m. iemo e editar Como Eu Fiz antes aqui ou eu posso utilizar um outro recurso que eu quero mostrar aqui para você aqui na página inicial aqui do meu projeto no meu repositório se eu digitar aqui ó um ponto ele vai abrir o vs code para mim aqui ó ele abre o editor e no terminal web mesmo então eu consigo ter um vs code aqui direto no meu navegador E aí eu posso editar todo o Emo aqui e direto não preciso fazer
aqui o clone não preciso abrir aquela edição ali que não tem uma interface tão amigável aqui é um vs code praticamente eu tenho aut complete eu posso vir aqui ó lá ele vai me mostrando aqui o que eu posso utilizar posso botar extensão aqui e tudo mais então para editar pipeline normalmente eu utilizo esse cara né porque eu consigo fazer aqui direto no navegador até mexer em código muitas vezes eu faço aqui também então você pode utilizar sem pagar nada esse aqui é um recurso gratuito Então pode utilizar tá aí tranquilamente ou você pode também
fazer o clone aí fazer o push não tem problema nenhum e então beleza dito isso vamos começar aqui a editar essa pipeline deci tornar esses mocks aqui esses fakes algo realmente é real primeiro ponto aqui eu coloquei todo o passo a passo que eu preciso fazer aqui no ci na integração contínua autenticar no Doc Hub executar docker build E também o docker push mas para tudo isso antes de qualquer coisa eu preciso ter o meu código eu preciso ter aqui eh o meu código em Python da aplicação com docker file aqui com o Manifesto eu
não vou utilizar agora mas eu preciso dessa base de código e por padrão pelo simples fato de eu ter aqui um Job sendo executado e eu tá aqui no repositório não significa que o meu de execução ele tem esse meu código lá na base não não significa isso se eu executar esse cara agora executar al um Ls e eu vou ver o diretório vazio não tem nada ali não tem o meu código então antes disso tudo aqui o que que eu preciso fazer eu preciso obter o meu código E aí eu vou executar aqui um
gitc não a gente tá trabalhando aqui com github Actions que tem o conceito de Actions que são ações eh são blocos de código e encapsulados ali para executar uma tarefa executar uma ação então cada Action que você for trabalhar aqui no github Actions nada mais é do que um código que é armazenado em um repositório E você tá chamando a execução desse código utilizando aqui o emel eu vou mostrar isso para você daqui a pouquinho mas como é que você você faz para ver essas Actions como é que você faz para saber quais Actions que
você pode utilizar onde é que você tem um catálogo dessas Actions se a gente voltar aqui no repositório e eu vir aqui ó aqui na minha no meu editor aqui no workflow e no Main pemo se eu vir aqui eu até fiz muito rápido deixa eu mostrar de novo ó vir aqui no menu e acessar repositório ele abre aqui para mim mas se eu vir aqui aqui né no na e editar o código por aqui ele abre para mim ó um Marketplace aqui do lado e aí eu consigo buscar diretamente por aqui as minhas Actions
então por exemplo a Action que vai pegar esse código é a Action de checkout ah lá e aí ele aparece aqui para mim ó checkout criado aqui pela pelo próprio Actions E aí se eu abrir aqui ele me dá lá um exemplo de código chou com todos os parâmetros que eu posso utilizar Mas tem uma outra forma de fazer isso também eu posso vir aqui deixa eu abrir aqui o meu browser certo e aqui ó eu tenho se eu procurar aqui ó e Actions Marketplace Opa Marketplace certo se eu vir aqui ó eu tenho o
Marketplace do github Actions E aí eu tenho aqui ó todas as Actions disponíveis e eu posso buscar aqui também ó se eu pegar aqui ó checkout ele mostra aqui para mim ó a minha Action aqui certo e aí vamos entender aqui a estrutura da Action como é que eu declaro a Action Como eu disse antes a gente vai utilizar emo porque aqui é um nada mais nada menos do que um arquivo emo e aqui eu posso ter um nome aqui também então eu posso botar aqui por exemplo ó name eh obter o código do projeto
certo tão simples quanto isso e aqui em seguida Opa deixa eu abrir aqui Ah beleza e aqui eu tenho que declarar o uso da Action aqui no na execução do meu script do meu comando eu só botei o Run porque tô executando um comando mas aqui não eu vou utilizar uma Action Então eu tenho que utilizar aqui o US eu falar ó vou usar uma Action E aí eu passo aqui o nome da Action e a versão da Action então eu já posso pegar esse cara aqui sem o traço né porque eu já declarei aqui
o nome e aí eu coloco aqui ó uses e Action checkout e v4 é importante você colocar aqui a versão da Action porque aí é o meso a mesma ideia do da imagem DOC se você não coloca a versão e for executar esse cara ele sempre vai Executar a última versão E aí pode gerar incompatibilidade você não quer isso Você quer garantir que você sempre vai executar com o mesmo comportamento Então coloca a versão é uma boa prática sempre coloque a versão E aí em seguida eu tenho aqui os parâmetros que eu posso colocar repositório
ref token SSH posso colocar aqui todas as configurações para obter esse código na documentação aqui ele dá todo passo a passo ele explica aqui esses parâmetros sempre que você for usar uma Action e consulta a documentação certo no nosso caso aqui como eu vou trabalhar com o próprio repositório aqui que eu tenho declarado o meu workflow eu não preciso colocar mais nada e já entende que é o código desse próprio repositório Então beleza não tem problema nenhum preciso fazer mais nada e só para você ver que a Action nada mais é do que um código
que é executado ali que é chamado para ser executado Se você olhar aqui no site na documentação eu tenho aqui ó o link pro repositório do projeto E aí você vê aqui ó eu tenho o código que é utilizado eu tenho aqui ó o Action pemo que é a configuração aqui que diz que esse cara ele é uma Action certo e tem muito mais detalhes tá eu não vou entrar aqui a fundo nisso eu mostro com mais detalhes na formação devops pro eu mostro como criar Action e tudo mais mas aqui eu só quero te
mostrar que nada mais é do que um bloco de código e um repositório e você tá chamando esse cara remotamente aqui declarando com o eemo então agora aqui eu já tenho o meu o meu código eu já baixei aqui o meu código agora eu tenho que realmente é autenticar eu tenho que colocar aqui que eu sou o usuário né Fabrício Veronez e autenticar lá no dockerhub com o meu usuário e a minha senha então para isso eu vou ter que procurar aqui uma Action poderia executar o docker login poderia mas Git Hub Action A gente
é uma boa a gente trabalhar com Actions então será que tem uma Action para isso com toda certeza né a gente tá falando aqui de uma operação né trabalhando com docker é algo que cara você vai fazer com muita frequência então com toda certeza tem aqui se eu procurar aqui ó em Actions certo você vai ver e buscar aqui ó docker a gente vai ver ó olha a quantidade de Actions que eu tenho aqui pra Dock eu tenho aqui para setar o build x eu tenho o build and push eu tenho o docker Scout e
eu tenho o docker login então com esse cara aqui eu consigo né fazer a autenticação inclusive aqui ó ele me dá um bloco de código já para eu utilizar então se eu pegar aqui vou até verificar a versão ó 3.3.0 beleza eu coloco aqui ó pego esse carinha E aí ok né já posso e substituir aqui eu vou até fazer o seguinte eu vou colar aqui e aí eu vou dar uma formatada é importante me preocupar com a identação no caso aqui o nome eu vou botar autenticar no docker Hub certo só vou fazer aqui
essa troca subir aqui beleza E esse cara aqui eu já posso eliminar Vou deixar um passo um espaço aqui para ficar mais organizadinho legal E aí agora você deve ter visto aqui pô pera aí Fabrício Que negócio é esse que tá aparecendo soltou um spoiler aqui né soltou aqui um um spoiler do que a gente vai fazer que que acontece eh como eu tô trabalhando aqui com autenticação no meu Dock Hub eu vou ter que colocar aqui usuário senha né para poder autenticar tanto que ele bota aqui ó username e peça e Putz cara imagina
eu colocar aqui né A minha meu usuário né usuário até vai né até vai mas puts colocar aqui né A minha senha né pô direto no no código ali hard code né comit esse código ficando lá no repositório não é uma boa prática né meu é um dado sensível que eu tô expondo Então como não é uma boa prática e existe um recurso no github que é o recurso de Secrets onde eu armazeno as minhas credenciais ou dados sensíveis e eles não são exibidos eles não vão ser aqui expostos porque eu tô trabalhando com seids
então eu sempre vou armazenar e elementos chave e valor O valor vai ser um dado sensível e o Git rub el vai armazenar isso para mim e eu vou conseguir né manipular o utilizar aqui como parâmetro na execução da minha pipeline do meu workflow então aqui no caso né no usuário ele tá utilizando aqui um var um vars que é são variáveis que eu não vou entrar aqui em detalhes Mas você pode trabalhar com variáveis também eu falo em mais detalhes lá no devops pro e aqui ó eu tenho a chamada desse squet então você
vê que eu tenho diversos parâmetros no github no Git Hub Actions que eu posso acessar aqui na nas minhas automações tem diversas outras informações que eu posso utilizar mas sempre que eu vou utilizar aqui um dado como esse utilizar aqui acessar um contexto no github Actions eu vou utilizar aqui essa expressão que é o dólar com dois com duas Chaves n dólar abre Chaves duas vezes e Chaves e aqui eu coloco a informação o contexto que eu quero acessar Beleza então aqui para facilitar eu vou botar os dois como sequs então eu troco aqui beleza
esses dois aqui vão sair e aí eu vou armazenar essas duas Secrets eu preciso pegar essas duas Chaves e criar ali os valores no meu repositório para poder acessar então eu vou fazer isso agora eu adicionei aqui aqui e aí agora eu vou vir aqui no meu projeto né no na página do meu repositório e eu vou vir aqui ó em settings né Eh vem aqui ó nas configurações aqui embaixo ó eu tenho Secrets e variables Secrets and variables né então aqui em Actions eu posso colocar eh os Secrets ou as variáveis eu vou colocar
aqui no caso um repositório Secret Na verdade dois e eu vou copiar aqui o username Beleza vou botar aqui username e aí eu vou botar aqui o meu usuário Fabrício Veronez certo vou adicionar essa Secret e aqui eu vou pegar o token que no caso vai ser a minha senha e eu vou adicionar aqui também colocar aqui beleza como é uma senha um dado sensível se eu digitar aqui ó ó ele aparece eu vou tirar aqui rapidinho certo e vou colocar aqui vamos lá vamos deixa eu colocar aqui na minha outra tela beleza adicionei Ok
volto aqui e é lá ó eu já tenho aqui ó o meu doc Hub token e aqui o meu username e um ponto importante você vê que aqui ó eu posso atualizar né atualizar a informação ou deletar tá eu não tenho acesso direto à variável valor que foi armazenado aqui Então beleza vamos só testar agora eu vou só fechar aqui na verdade eu vou voltar aqui vou fazer um commit desse código né porque aí eu vou ter autenticação e também aqui o meu código e vamos ver só se ele vai autenticar tudo certo e depois
a gente volta então adiciono aqui e aí eu vou botar aqui adicionando o docker login certo salvo aqui commit and push Ok E aí vamos ver aqui disparando volto aqui vamos vir aqui em Actions e vamos ver ó á ele mostra a execução mostra aqui a mensagem do comit E aí vamos ver se ele autenticar tudo certo beleza ó tá pegando o código Ok autenticou então o meu usuário e a senha tão corretos beleza e aqui ele já mostrou também o final da execução bele tudo certo volto aqui vai executar aqui o CD mas repara
que aqui ó quando eu abro o autenticar no Dock Hub ele mostra aqui ó username password não mostra nada por porque tá em Secret não vai mostrar essa informação Então beleza tudo certo lá tudo verdinho quando tá verdinho tá tudo certo então volto aqui tá funcionando aqui a autenticação agora que que eu vou ter que fazer eu vou ter que executar aqui o build da minha imagem eu V construir a minha imagem poderia executar aqui o docker build o comando poderia mas não vou fazer vou utilizar uma Action para isso Inclusive a gente viu que
tinha lá Action já se eu voltar aqui ó eu tenho aqui o docker login se eu voltar aqui vamos ver eu tenho aqui ó o build and push docker images certo E aí eu tenho aqui todas as informações que eu preciso passar utilizando aqui a documentação Cadê ó ele mostra aqui para mim os parâmetros ele mostra aqui alguns exemplos ele tem diversos exemplos que eu tenho várias formas de utilizar aqui esse esse build and push certo mas o que eu vou utilizar aqui os parâmetros que eu vou utilizar vão ser o contexto aqui ó que
é uma string que vai ser o contexto né o diretório que eu vou enviar pro docker Hub né ou melhor pro pro meu docker Demon para ir construir a minha imagem e aqui o meu file que vai ser o docker file que eu vou utilizar e o p eu tenho aqui uma outra Flag aqui ó push para ele enviar direto a imagem assim que construir e eu tenho aqui e o tags cadê cadê Aqui ó o tags que vai é nomear essa imagem que eu tô construindo então beleza vou utilizar esse essa esses parâmetros eu
vou só pegar aqui esse exemplo Inicial que inclusive tem muita coisa aqui que eu já vou utilizar E aí eu vou colar ele aqui e aí olha só que legal é como o a Action ela é build and push ela constrói a imagem Depois envia eu já posso tirar esse Car aqui ó esse envio da imagem eu posso tirar porque em uma ação apenas em uma Action eu faço duas etapas ah Fabrício Mas isso é ruim não necessariamente você poderia colocar duas Actions diferentes poderia mas Car eu já tô construindo vou enviar não tem problema
nenhum A não ser que você fosse fazer algo antes disso por exemplo Ah eu só vou enviar essa imagem se não tiver brecha de segurança se não tiver vulnerabilidade aí você pode construir primeiro n construir aqui fazer a verificação de segurança utilizando o docker Scout utilizando triv qualquer ferramenta de verificação de vulnerabilidade e depois fazer o push da imagem caso passe em todos os testes e eu não vou entrar nesse detalhe mas tem lá no devops pro tem um tem um capítulo só sobre segurança em relação à construção de pipelines mas poderia colocar aqui o
push ou não certo então vou botar aqui construção e envio botar aqui ó construção e envio da imagem Dock e aqui o contexto Bele Ah vai ser na verdade não tá beleza vou ter que colocar aqui o src que é o diretório né onde eu tenho aqui o docker file Ah aqui a tag eu vou tirar eu vou deixar aqui por enquanto assim pois Beleza vou enviar e eu tenho que colocar aqui o file também E aí eu vou até fazer o seguinte para facilitar aqui colocar o diretório certinho ó eu venho aqui em docker
file clico com o botão direito e aí eu tenho aqui ó copiar o caminho relativo e aí já me dá o caminho certinho ó beleza facilita bastante a vida então contexto push file Agora eu tenho que botar a tag que que eu vou fazer aqui eu vou botar o nome da imagem junto com a versão e já que é uma boa prática também subir a tag latest a última versão da imagem eu vou subir ele também então vou botar aqui duas tags como eu vou colocar duas tags eu posso fazer isso aqui ó eu boto
esse Pipe dou um um Tab aqui para ele ficar dentro aqui do tags E aí eu coloco ó Fabrício Veronez barra fake Shop E aí eu coloco aqui eh a versão latest certo e aqui eu vou colocar a versão que eu vou utilizar também né no caso sei lá v1 V2 V3 E por aí vai só que o que que acontece se eu colocar aqui v1 V2 E por aí vai né colocar qualquer um aqui hardcode eh toda vez que eu executar essa automação ele vai utilizar sempre essa tela ele vai sempre escrever a tag
e eu não quero isso eu quero que ele vá incrementando né ou que eu utilize lá versão 1.0.0 enfim que eu faça ali a parametrização aqui para facilitar eu vou utilizar uma informação um um dado que tem em um contexto aqui do github que é o Run Number que é o número de execução dessa pipeline E aí dessa forma toda vez que eu executar aqui a PIP Line Eu vou ter esse número incrementado E aí eu garanto que eu vou est sempre ali criando uma nova versão gerando uma nova tag então aqui eu vou deixar
o v porque eu quero deixar o v na frente ou poderia tirar não tem problema e aqui eu vou chamar aqui a expressão para pegar essa informação que tá em github.run Number E aí cara olha como é que o autoc complete ajuda né eu executo aqui ele me dá um autoc complete fica é legal de trabalhar beleza bom então é isso é isso peguei aqui o meu código executei aqui o login esse carinha aqui vai embora eu tenho aqui a construção e envio da imagem docker né Vou colocar aqui certo as informações e agora se
eu executar aqui o commit ele vai fazer a pipeline vai construir a imagem para mim então eu vou executar aqui certo vou fazer aqui o commit vou botar pipline de C certo e vou fazer aqui o commit e o push beleza e aí ele vai disparar aqui a automação ó lá já começou pipeline deci ele vai fazer aqui o c primeiro Beleza Lá tá fazendo todo o processo de construção da imagem então aparentemente tá funcionando autenticou né E aí terminando a construção ele vai enviar a imagem lá pro pro Dock Hub Então eu vou deixar
ele terminar aqui vamos ver o processo aqui juntos é um pouquinho mais demorado mas eu quero acompanhar aqui com você ó lá ó ele tá puxando tá enviando a imagem beleza aí agora ele tá executando ali as finalizações ok então aparentemente ó lá tudo funcionou certo agora ele vai est executando aqui o CD mas o processo de C Ó lá ele aconteceu lá beleza então aqui ó eu tenho é a autenticação que eu fiz eu tenho aqui a construção né Tá tudo certo Inclusive eu consigo ver aqui ó tudo que ele executou lá beleza lá
show de bola então pra gente validar se realmente rolou deixa eu autenticar aqui certo botar aqui hub.docker.com deixa eu abrir aqui eh no navegador deixa eu autenticar aqui na minha outra tela só para colocar aqui o usuário senha e tudo mais poderia ter deixado aqui poderia mas acabou que não não coloquei aqui ó fake Shop o nosso repositório e olha só que legal eu tenho aqui ó a imagem e V6 Ou seja eu executei aqui seis vezes já esse workflow e eu tenho aqui eh o latest e aqui eu tenho os outros dois que eu
utilizei esse número aqui o V6 ou 7 8 vai variar dependendo da quantidade de vezes que você executou aí A pipeline então agora esse processo de ci onde eu faço aqui e a criação da minha imagem eu pego esse código novo né que eu subi e incorporo numa nova versão do projeto já foi feito então agora que eu tenho a release criada eu tenho o entregável criado eu posso fazer a construção da minha pipeline de CD para fazer o continuous delivery para fazer a entrega contínua para pegar essa nova versão e rodar no ambiente kubernetes
agora pra gente criar aqui a nossa pipeline decid de continuous deployment eu vou transformar aqueles moocs aqueles ecos que print output e tal no processo de Deploy da aplicação pegar essa release que é criada pela pipeline DCI e fazer o Deploy no ambiente e aqui a gente vai utilizar o kubernetes utilizando o Eks então é importante você já ter o seu cluster kubernetes criado no Eks Fabrício funciona no ambiente local rodando com k3d não por quê Porque aqui o github Actions ele precisa ter acesso ao cluster kubernetes Você tá na sua máquina você não vai
ele não vai conseguir ter esse acesso dá para fazer isso e utilizando um agente local mas não vou fazer isso aqui não tá no escopo aqui da nossa aula eu falo isso em detalhes também na formação devops pro então aqui vamos trabalhar com o nosso cenário com a aws Então vamos voltar aqui pro nosso arquivo emo pro arquivo da pipeline e e aqui eu vou digitar aqui o ponto entrar com o vs code web pra gente começar aqui a editar esse cara então a gente vai pegar esse esse mooc aqui e transformar no processo de
entrega primeiro ponto primeiro ponto aqui eu vou utilizar o arquivo de deployment o arquivo e emo com o Manifesto do kubernetes com tudo que precisa ser criado lá no cluster com o postgre com aplicação web e tudo mais então Primeira coisa eu preciso ter o código aqui do meu repositório como eu tô num outro Job por padrão ele não vai pegar esse código então eu preciso o quê pegar essa Action aqui obter o código do projeto e colocar esse carinha aqui dessa forma para ir pegar o código também então agora que eu fiz isso vamos
autenticar na aws fazer esse processo aqui de autenticação basicamente o que que eu vou ter que fazer executar o aws configur né para poder eh fazer a autenticação e eu vou precisar do Access Key e também do Secret access k da mesma forma que eu precisei quando eu configurei local na minha máquina E para isso eu tenho uma Action Claro claro que a gente tem uma Action eu consigo trabalhar aqui com o github Actions em diversos Cloud providers diferentes se eu vir aqui ó a WS por exemplo eu tenho ah lá as Actions da WS
se eu botar aqui ó Google vão aparecer aqui Actions relacionadas ao Google e se eu colocar aqui sei lá Oracle vai aparecer também né algumas actions relacionadas a Oracle vamos ver aqui ó ó digital Ocean certo vamos ver se tem Será que tem Ah tem também é Actions da Digital oce Então cara você tem aí Actions para trabalhar com os principais serviços e Cloud providers aqui no caso a gente vai utilizar né o da aws e para fazer a configuração de credencial eu tenho aqui o aws credential ah lá aqui ó configure aws credentials no
github então é esse cara aqui que a gente vai usar e aí o que que eu vou ter que configurar Se eu olhar aqui ó na documentação eu tenho o aws region que é a região eu tenho aqui ó o access Key e eu tenho Secret access Key Então são esses três parâmetros que eu vou ter que configurar então aqui embaixo eu tenho um exemplo vamos achar aqui né um exemplo cadê vamos ver aqui mais embaixo P aqui emai baixo deixa eu ver aqui não mais embaixo Aqui ó eu tenho tenho até configurando outros outras
credenciais mas aqui ó eu tenho o principal que eu vou precisar que são as credenciais com o access Key o Secret access Key e a região então copio aqui certo e vou colar esse carinha aqui dessa forma é claro deixa eu pegar aqui o nome do que eu botei aqui mocado né que eu fiz aqui eh simulando e agora eu vou deletar esse carinha e vou substituir com o original onde eu tô pegando realmente a credencial se você reparar aqui eu tenho ó aqui ó o access Key id e o Secret access Key já pegando
aqui da Secret como eu peguei ali do exemplo ele já tá seguindo as boas práticas trabalhando com cets Então eu preciso dessas informações lá na Secret do meu repositório para poder n executar e me autenticar aqui a região eu vou deixar hardcode mesmo o1 que é o que a gente tá utilizando mas poderia ser uma variável aqui poderia est também numa squet não tem problema aqui não vou me preocupar o objetivo é fazer aqui o básico não tem problema então agora eu coloquei aqui mas eu vou voltar no meu repositório para colocar essas informações mas
para poder inserir essas informações eu preciso ter essas credenciais Eu já não tenho mais porque eu usei né na última aula então aqui eu vou criar uma nova para poder e utilizar Então vamos voltar aqui pra minha conta na aws você vai entrar aí na sua conta da aws onde você criou aí o seu cluster kubernetes o seu usuário utilizando aqui ó o iam a gente vai entrar aqui eu já tenho o meu usuário né o usuário aqui ó aula e eu vou criar aqui o Security credentials que foi o que eu fiz também na
aula anterior aqui ó já tem aqui Um foi o que eu usei na minha máquina Agora eu vou criar aqui um segundo aqui comand Line serrie I aqui eu entendo beleza next mesmo processo que a gente fez Vou botar aqui o nome dele de github Actions certo vou criar esse access Key E aí eu vou colocar aqui as informações vou copiar aqui e vou copiar aqui também então eu já vou colocar aqui direto deixa eu vir aqui em settings Ah deixa eu vir aqui ó Secret e variables vou adicionar aqui no repositório mesma coisa que
eu fiz lá com doc aws access Key ID Vou colocar aqui e agora eu vou pegar aqui o meu access Key e vou colar aqui e aí adiciono Beleza já adicionei aqui agora vou adicionar o próximo vai ser o aws Secret access Key vou colar ele aqui e vou colar aqui o valor Beleza vou colocar aqui porque depois eu vou cancelar não tem problema nenhum agora eu adiciono e Teoricamente né Teoricamente se eu fizer aqui o commit ele vai autenticar vamos testar vou fazer aqui o commit vir aqui eh Opa autenticação autenticação na aws vem
aqui comit and push Beleza agora ele vai disparar aqui a automação certo e vamos esperar agora o processo aqui terminar vai fazer o processo de C vai fazer o processo de CD como demora eu vou fazer aqui o seguinte eu vou cortar e vou mostrar para você aqui no final depois que ele executou tudo e Verê se a autenticação funcionou show de bola aqui ó ele foi fez aqui o processo de ci e de CD só que o CD ainda tem aqui só a autenticação Mas vamos dar uma olhada no que interessa agora que é
a autenticação ó tudo verdinho tudo certinho ó lá tudo tudo marcado aqui ok se a gente ver aqui ó em autenticar na aws ele mostra lá o aws access Key o Secret access Key a região e beleza aí não mostra porque tô utilizando aqui Secret mas tá funcionando a gente consegue já autenticar na aws Então esse passo já foi agora tem um outro ponto importante vamos pra próxima etapa que também tá ligada ainda em autenticação e autenticação e configuração né que que acontece eu agora tenho a etapa de configuração do CUB CTL Ou seja eu
preciso aqui né Eh fazer a configuração do CUB config pegar as credenciais do kubernetes e configurar no Cub CTL ali da pipeline para ele poder executar o cubs apply e fazer o Deploy da ação lá na na aula anterior para configurar aqui no meu ambiente o que que eu fiz eu executei aqui o aws Eks update Cub config certo e passei aqui o name colocando o aula e k8s que foi o nome ali do cluster kubernetes né eu executei aqui e ele a lá configura eu posso vir aqui Cub CTL get nodes e lá ó
ele funciona de boa então aqui eu vou fazer a mesma coisa eu vou pegar esse comando e vou executar lá na minha pipeline né Eu não tenho um uma Action específica para isso na aws então aqui eu vou realmente Executar a linha de comando e não tem problema nenhum em relação a isso podem ter vezes que você vai utilizar uma Action podem ter vezes que você vai executar um comando ou um script não tem problema nenhum desde que é claro funcione eh com um desempenho bacana com uma organização legal tá tudo certo então aqui vou
vir aqui vou fazer o commit e vou botar aqui é configuração do CUB config aí vou fazer aqui o commit E aí a gente vê se vai funcionar beleza vamos lá a Action ele vai disparar aqui de novo e aí eu vou esperar aqui novamente ele fazer todo o processo de configuração aí vai executar aqui a pipeline e vai fazer o processo de configuração e eu quero ver se funcionou se deu certo se ele realmente conseguiu fazer essa configuração Então vou cortar e aí a gente volta finalizou aqui a a execução e agora ó deixa
eu ver aqui ó aqui no C né que vai funcionar o CD tá tudo verde também né então beleza show de bola funcionando mas vamos dar uma olhada aqui configurar o Cub CTL ó lá executei o comando E aí pum beleza configurou então Aparentemente tudo ok ah outro detalhe importante aqui é em relação à execução do comando aqui ó aula k8s é o fato de eu est usando aqui o nome do cruster kubernetes não tem problema hard code vou deixar dessa forma mas de novo poderia colocar numa variável poderia colocar aqui num CET vou deixar
aqui hardcode não é um dado sensível então tá tudo certo agora aqui é a nossa etapa final vamos executar o comando Cub CTL apply aqui no no cluster kubernetes masão tá ele muito importante e aí você tem que se atentar no seguinte não é só executar uma um Cub CTL apply que que acontece aqui e o meu arquivo de Manifesto ele tá aqui ó com o nome da Imagem Beleza mas eu tô utilizando aqui a imagem latest né e não é uma boa prática fazer isso eu preciso colocar a tag então Além de eu executar
o cubc apply eu preciso também executar aqui uma alteração nesse Manifesto preciso alterar o Manifesto para ir depois executar o apply Então são duas etapas e aí eu vou botar isso aqui via linha de comando poderia poderia executar aqui um comando Sid né que faz a troca de string no arquivo e depois executar o apply poderia mas puts github Actions tem uma Action para isso né E é claro que tem e aqui se eu vir aqui no Marketplace da do github Actions eu do Git Hub Enfim eu posso procurar aqui ó e kubernetes deployment E
aí vamos ver aqui ó eu tenho aqui ó Deploy to kubernetes cluster Eu tenho um uma Action que é do e para fazer Deploy no kubernetes para executar o apply fazendo essa alteração E aí você pode estar pensando pô Fabrício mas pera aí pera aí pera aí eu tenho uma Action que é criada e mantida pelo e e eu vou utilizar para fazer Deploy na aws É isso aí brother É isso aí não tem problema nenhum você utilizar esse cara desde que você tenha configurado aqui o contexto o seu Cub CG Cub CG tá configurado
Beleza vai funcionar de boa Então a gente vai utilizar ele mas aqui ó ele já diz de cara que essa Action ela tem alguns requisitos de permissão tem algumas permissões aqui que eu preciso ter certo e aí bota aqui ó permission ID token content Actions então aqui eu vou copiar essas permissões e vou colar aqui no meu Job aqui ó junto no meu Job eu vou colar essas permissões especiais eu eu não vou entrar aqui em detalhe de permissão mas cara eu preciso dar algumas permissões diferentes nesse meu Job E aí beleza só copiar colar
aqui que tá tudo certo e aí agora eu vou pegar e seguir as configurações aqui dessa Action E aí eu tenho aqui e dois Campos que eu preciso configurar o campo de manifesto que são os manifestos que eu quero executar eu vou dar uma lista ali dos manifestos que eu quero executar e também as imagens que eu vou utilizar E aí é importante eu ter aqui ó e a minha imagem aqui o nome da minha imagem batendo com o do Manifesto Ah mas pô pode ser tag diferente pode não tem problema nenhum mas o nome
da imagem tem que ser igual a versão pode ser diferente a tag não tem problema Beleza então aqui eu vou pegar esse cara certo pegar pegar esse carinha aqui né vou pegar esse esse esboço aqui mesmo esse template e vou copiar e aqui eu vou colar aqui no no meu no meu arquivo certo beleza aqui ah eu vou manter aqui o nome deixa eu manter aqui o name eí Deixa eu botar ele aqui certo dessa forma aqui ok pá beleza aqui eu já posso remover e agora eu vou remover esse carinha aqui vou remover esse
esses todos aqui eu vou remover vou manter os manifestos e a imagem aqui O Manifesto eu vou pegar esse Manifesto aqui e aí aquele macete clicar com o botão direito copiar o caminho relativo colo aqui e tá tudo certo beleza dessa forma aqui ok e agora eu vou pegar aqui o nome da imagem pá e vou colocar aqui p dessa forma aqui beleza e aí fechou vamos executar agora e ver a magia acontecendo E aí vamos botar aqui depois no kubernetes E aí só para conferir se eu executar aqui ó Cub C get All eu
não vou ter nada eu não vou ter nada aqui em execução Mas vamos fazer aqui o comit e ver o processo acontecendo aqui eu não vou cortar eu quero ver junto com você n tudo acontecendo se eu virar aqui ó Deploy no kubernet Ok ele vai executar todo E aí aqui eu vou narrando né junto com você pra gente ver aqui em tempo real ele vai fazer o processo de construção da minha imagem executando aqui o docker build depois que ele autenticou né com docker login aqui em cima e agora ele ainda tá no processo
de construção né da da minha Imagem Beleza construiu e agora vai fazer ali o pus é importante ah Fabrício eu posso colocar mais coisas Dá para colocar muito mais cois nessa pipeline é teste unitário né teste de unidade teste funcional verificar vulnerabilidade cara tem muito mais cois que eu posso colar aqui na pipeline deci e decid para garantir qualidade do meu código do meu projeto mas aqui vamos trabalhar com o básico e agora ele tá fazendo o processo de CD beleza lá ele autenticou configuração do CUB CTL e agora Manifesto do kubernetes vai aplicar vamos
ver se ele aplicar Beleza a gente conseguiu fazer o Deploy da aplicação a gente só vai conferir lá a aplicação rodando mas aparentemente ó parece que tá dando tudo certo ó lá ele tá executando ele vai mostrar ali o que que tem em execução inclusive ó lá ó ele tá fazendo ali o Deploy de quatro réplicas provavelmente ali no documento né no Manifesto deve tá lá com quatro réplicas tá fazendo aqui o processo beleza Enquanto isso a gente já pode até dar uma olhada aqui no terminal ó Cub CTL get All vamos ver aqui ó
ele já deve ter começado a fazer o Deploy ah lá ó já começou aqui a fazer o processo de Deploy da aplicação e do banco de dados se a gente olhar aqui ó ó lá beleza né show de bola ele conseguiu aqui finalizou Agora se a gente olhar aqui vamos lá Cub CTL get e All eu vou ter aqui Ah já tem até aqui já tá até aqui ó eu tenho o end Point eu consigo acessar a aplicação Vamos abrir aqui né Talvez ele esteja lá com o DNS né esteja ali ainda processando aqui com
o DNS não ó já foi já registrou E aí tá lá aplicação funcionando então a gente conseguiu fazer o Deploy da nossa aplicação eu consigo aqui Navegar lá tudo mais acessando aqui podendo fazer a compra é só você simular aí o processo ó só tentar aí fazer a sua compra dos seus produtos certo agora antes de finalizar aqui com você vamos fazer um teste eu vou agora fazer o seguinte eu vou colocar esse carinha aqui lado a lado certo vamos botar esse cara aqui é lado a lado deixa eu pegar ele aqui e a gente
vai fazer aqui o seguinte e nós vamos vir aqui e alterar o código eu vou colocar aqui a versão dois e eu vou fazer aqui um processo de refres automático você pode pegar aí no Chrome tá Auto refresh Plus e a gente vai colocar aqui sei lá vamos botar 4 Segundos vai de qu em 4 Segundos ele vai fazer refresh aqui na tela e aí eu vou fazer o seguinte vou fazer aqui um vou botar tudo aqui na tela pra gente ver funcionando eu vou alterar aqui o código né Deixa eu vir aqui ó eu
vou entrar aqui em templates shared ã navbar E aí Aqui deixa eu tirar esse carinha por enquanto aqui onde eu tenho o Fake Shop eu vou botar aqui de novo o V2 certo e agora a gente vai fazer o commit desse cara mas antes eu vou fazer outra coisa eu vou já colocar aqui ó menorzinho PR a gente ver aqui todo o processo a gente vai fazer o seguinte vou botar aqui um watch Cub CTL get nodes Ou melhor nodes não get Pods certo e aí aqui e a gente vai ver aqui ó os Pods
em execução e o que que a gente vai fazer aqui eu vou fazer esse comit a gente vai ver aqui a pipeline disparando e vamos ver aqui o processo de troca de versão atualizando aqui fazendo refresh na tela e vendo tudo acontecendo acontecendo automaticamente Então vamos lá versão 2.0 adiciona aqui commit E aí vamos lá vem aqui em Actions ele vai disparar Ó lá tá indo Beleza vamos ver aqui ó lá C E aí aqui não vai acontecer nada porque ainda tá no processo de execução da pipeline de c mas daqui a pouco ele vai
começar aqui o processo de Deploy também né da minha aplicação ó tá fazendo aqui aqui a ali a construção da imagem Ok deixa ele terminar certo tá indo lá deixa ele vira ali tá aqui executando eh o stract tá executando ali a construção da imagem deixa ele continuar beleza tá aqui fazendo agora o envio da imagem certo e aí ele vai começar a fazer o processo de CD deixa aí terminar ah lá beleza ah lá ok E aí agora ele tá fazendo aqui o post né o a finalização vamos vir aqui pro CD Ah já
vai começar E aí agora a gente vai ver aqui a coisa acontecendo quando ele aplicar aqui a atualização a gente vai ver que os Pods vão ser alterados porque eu tô mudando a versão a mudança vai ser progressiva lá já tá acontecendo e Em algum momento ali o Fake Shop ele vai deixar de ter ali e só o Fake Shop e vai ter ali o Fake Shop versão dois a gente vai ver aqui acontecendo Ó lá ele tá processando beleza tá ali ó já tá fazendo ali o encerramento desses Pods Em algum momento Ali vai
aparecer a versão dois tá ali chamando a ainda Ok vamos lá ok tá terminando ali teve algum ali com erro não mas já já resolveu Então já atualizou ali a aplicação E por que que ele não tá aqui com a versão dois ainda por quê será porque é por conta da da responsividade ah é por conta da responsividade mas aqui ó ele já tá com a versão dois eu botei ali no t T com o o TRS Mas enfim você viu aqui que foi a versão dois é vamos rodar de novo pra gente ver aqui
funcionando n só pra gente garantir que tá funcionando mesmo não é papo não é papo meu aqui né Vamos lá vamos fazer de novo e foi por conta da responsividade ali cara não saca de não é poderoso no HTML né Cai nessas armadilhas beleza vamos botar aqui Ah versão trê versão 3.0 e aí vamos fazer aqui o processo de novo ok vamos lá negócio tem que acontecer a coisa tem que acontecer vamos lá deixa eu subir aqui Actions versão TRS E aí vamos lá disparou OK tá aqui ó no ci E aí eu vou até
deixar dessa forma tá vamos deixar aqui dessa forma eu vou botar aqui direto no Ah deixa eu botar aqui no ci eu vou botar aqui Ah ainda não tá aparecendo Mas vamos acompanhar beleza ah cadê Aqui Ok vamos ver assim agora sim vamos ver e disparou ali ó o processo de construção P beleza tá subindo ali já começou aqui e o fim da execução deixa encerrar ali e aí vamos lá deixa eu mudar aqui o pro ci Ah deixa eu ver aqui ó já tá no CD deixa ele executar aqui o CD e eu me
confundi todo de novo mas tá tudo certo agora vai agora tem que ir brother Ó lá tá fazendo a atualização tá fazendo refresh beleza aplicou agora vamos ver aqui ó lá tá fazendo ali a troca em tempo real e você v que assim a aplicação ela não teve Down time eu fiz o comit ele disparou automação e ali eu t fazend Deploy sem Down time vamos lá terminou ali terminando E aí beleza tá em execução tá em execução tá fazendo ali a troca de versão vamos ver agora em algum momento tem que ir V3 vamos
ver tá terminando Ok processando ah lá agora já foi todo eh ah lá já foi pro V3 então você vê que cara com simples comit a gente fez aqui o Deploy da nossa aplicação Então essa aqui é uma estrutura base de c cd cara tem muito mais coisa pra gente colocar pra gente trabalhar mas com uma pipeline como essa como ponto de partida eu tenho certeza que vai fazer toda a diferença que vai ajudar você a entregar software de uma forma muito mais eficiente irado não é e essa foi uma amostra do que você consegue
implementar nas pipelines Existem várias outras possibilidades de integração nas pipelines que facilita demais a nossa vida e que agregam um valor absurdo no projeto por exemplo execução de testes de unidade testes de integração análise de código testes funcionais holback tem muit Muito mais coisa que vale você se dedicar para aprender você consegue entender agora a relevância com profissional que sabe trabalhar bem com devops Cloud tem no mercado e o impacto que ele consegue causar em um projeto cara são essas habilidades que vão fazer com que as empresas queiram investir mais em você por se tratar
de um profissional de alto nível ou como eu chamo profissional de Elite que vai ser capaz de elevar a produtividade da equipe e a qualidade dos sistemas que ent entrega o resultado disso são inúmeras oportunidades que podem surgir dentro e fora da empresa que você atua te dando mais um poder o poder de escolher onde você quer trabalhar dá só uma olhada nisso aqui trabalhava com infraestrutura antes né e queria muito trabalhar com devops tinha muito esse esse desejo né profissional E aí vi vi uma vaga de pleno falei cara vou me candidatar né vou
Pou que eu já já tenho de bagagem de conhecimento Vamos ver que se cola né Fiz a entrevista colou né só que eu cheguei com conhecimento assim muito básico em contêiner né não conhecia nunca tinha tido contato com kubernetes docker muito básico o que eu tinha ali na na bagagem né e falei cara vou vou entrar vou aprender ali na raça né só que aí foi passando uns meses cara foi passando uns meses e eu via que não saía do básico Entendeu cara me sentia burro a perguntaa era assim na minha cabeça quanto tempo eu
vou durar aqui preciso tomar alguma atitude foi tipo onde eu vi o seu curso cara e caiu como uma luva de verdade mesmo né rolou aquele raton né que a Microsoft promoveu aqui dentro da da empresa né a empresa primeiro Convida os colaboradores a se inscreverem pro raton né que é a Microsoft promove e eu falei cara não não vou entrar nisso vou vou passar vergonha vou passar vergonha por isso que eu pensei vou passar vergonha não vou entrar velho e aí minha gerente chegou em mim e falou assim ó tem uma vaga para participar
do racat Tom aqui eh eu falei que você ia participar tá bom falar o qu pra gerente não vou passar vergonha Tá bom então põe aí nesse bagulho cara eu desacreditei que a gente conseguiu ser campeão cara foi coisa mágica mesmo o que eu achei que ia ser uma bosta serviu ali falei cara o que o o curso me agregou é absurdo cara eu assim eu consegui esmagar o Lucas burro né a síndrome ali do impostor ela ficou para trás eu já sabia que eu tava tipo para ser promovido ali né porque já vinham notando
as entregas né Depois que eu comecei o curso o que que eu fui evoluindo eu comecei a me mostrar mais na na no ambiente de trabalho em si né só não esperava que assim tão rápido meu gerente me ligou no fim do dia ó preciso falar com você fá Vou compartilhar minha tela aqui quando você tiver vendo você avisa compartilhou cartinha de promoção você foi promovido para Senior Parabéns pelo seu desempenho F cara do céu velho coisa de louco falei com você em abril ali eu tava burro ainda abril maio junho dois meses cara cara
mudou assim o patamar da da da minha carreira cara mudou mudou totalmente cara o que eu sei o que eu consegui crescer que eu consegui agregar de valor pra empresa foi graças a curso a minha mulher nem aguenta mais ouvir falar cara fazia 10 anos que eu não fazia entrevista eu já tava me sentindo muito acomodado também eu preciso evoluir se eu quero mexer com essas coisas de de nuvem de microsserviço de kubernetes e lá não tinha muito muita saída para esse tipo de de de serviço né abriu a turma né a turma de da
da formação Nossa vou vou fazer né aí depois disso a minha evolução foi muito muito grande realmente eu vou vou entrar para Elite se eu dominar isso daqui pois da aquela conversa que eu puus aquele Open work no no Linkedin Aí choveu proposta inclusive fora do Brasil recebi proposta da Irlanda dos Estados Unidos tanto que eu tive que tirar porque era todo dia eu tive que escolher uma e eu tô como analista pleno nessa empresa então ho Não não sou Júnior Então já entrei como pleno teve um ganho financeiro em em salário bruto né e
com os benefícios dessa nova empresa já dá aí um quase uns 25% de ganho e assim também tô feliz aí com essa mudança que eu tive aí Foi sim foi foi rápido né comecei ali questão de comecei o curso foi em Julho então assim 5 meses Passi teste de seleção do Instituto onde eu tô como Dev Júnior foi foi indo daí como esse meu chefe eu falei ai o que que você faz aqui você não é Dev né dele não não sou Dev sou devops o que que é devops daí ele começou a me explicar
E aí ele me mandou no sábado à noite um link de uma aula ao vivo no YouTube falei mano se o sor te manda no sábado noite um link de aula no YouTube você vai parar tudo que você tiver fazendo você vai assistir a aula era a aula do Fabrício mano e aí eu falei cara eu vou estudar esse negócio e eu comecei a estudar aí eu comecei a fazer o curso do devops pro e cá estou eu agora e foi muito rápido foi um mês entrei no curso um mês depois eles me me botaram
eu mudei de função não na minha vida mudou dava pro V Hoje eu durmo tranquila o meu sário quase dobrou eu quase morri quando a menina da R me falou você tá falando com uma mulher que H um ano atrás não tinha R 1 que dependia da pensão do ex-marido para uma pessoa que agora vai se sustentar e sustentar dois filhos sozinho finalizamos então mais um passo do nosso desafio Então vamos em frente porque agora que a aplicação foi entregue é muito importante também coletar as métricas e monitorar a aplicação para entender quais pontos podem
ser otimizados e fazer os ajustes necessários eu sei que para muita gente isso pode soar algo chato e não tão urgente mas na verdade é o contrário saber implementar observabilidade de forma correta ou seja entender bem os três pilares log mric e trac é o que vai te dar a tranquilidade de colocar o seu sistema de grande porte no ar e aliás eu costumo dizer que nem todo sistema com monitoramento é um sistema de alto nível mas todo sistema de alto nível precisa ter monitoramento cara acredita em mim implementar o monitoramento adequado e coletar as
métricas certas vai te dar um grande diferencial como um super poder que vai garantir o sucesso das suas aplicações além de proteger a sua reputação e ajudar a impulsionar a sua carreira por isso eu te espero na próxima aula
Related Videos
Aula 5 - Desafio Prometheus e Grafana | Desafio DevOps & Cloud
1:32:49
Aula 5 - Desafio Prometheus e Grafana | De...
Fabricio Veronez
268 views
Qualidade de código com Sonarqube e GitHub Actions
1:25:12
Qualidade de código com Sonarqube e GitHub...
Fabricio Veronez
979 views
Xenforo forum PHP script Latest Version 2.3.4  installation in Hostinger
12:34
Xenforo forum PHP script Latest Version 2....
GR Web Dev
3 views
Aula 3 - Desafio AWS | Desafio DevOps & Cloud
2:00:35
Aula 3 - Desafio AWS | Desafio DevOps & Cloud
Fabricio Veronez
1,889 views
7 Design Patterns EVERY Developer Should Know
23:09
7 Design Patterns EVERY Developer Should Know
ForrestKnight
215,261 views
Ferramentas CI/CD: Que vão Revolucionar seu Pipeline de Devops
30:29
Ferramentas CI/CD: Que vão Revolucionar se...
Vlog do Alexsandro
24 views
Coupe du Roi - Mbappé tranchant et pluie de golazos : Le Real qualifié mais bousculé par Celta Vigo
16:19
Coupe du Roi - Mbappé tranchant et pluie d...
L'ÉQUIPE
517,460 views
Evolution of software architecture with the co-creator of UML (Grady Booch)
1:30:43
Evolution of software architecture with th...
The Pragmatic Engineer
107,229 views
Vilebrequin : combien vaut vraiment le 1000TIPLA ?
21:47
Vilebrequin : combien vaut vraiment le 100...
bienvenue au cabinet
790,958 views
O que você precisa saber sobre DevOps em 2025
1:16:46
O que você precisa saber sobre DevOps em 2025
Fabricio Veronez
5,087 views
Aula 1 - Desafio Docker | Desafio DevOps & Cloud
1:47:11
Aula 1 - Desafio Docker | Desafio DevOps &...
Fabricio Veronez
7,527 views
[🇫🇷/🇷🇺] UN AVION FRANÇAIS CIBLÉ PAR LA RUSSIE EN MER BALTIQUE
18:15
[🇫🇷/🇷🇺] UN AVION FRANÇAIS CIBLÉ PAR LA...
Xavier Tytelman
96,979 views
smolagents - HuggingFace's NEW Agent Framework
29:10
smolagents - HuggingFace's NEW Agent Frame...
Sam Witteveen
31,113 views
Terraform: A melhor forma de usar Cloud
1:53:31
Terraform: A melhor forma de usar Cloud
Fabricio Veronez
2,472 views
Andrew Ng Explores The Rise Of AI Agents And Agentic Reasoning | BUILD 2024 Keynote
26:52
Andrew Ng Explores The Rise Of AI Agents A...
Snowflake Inc.
439,685 views
Aula 2 -  Desafio Kubernetes | Desafio DevOps & Cloud
1:38:07
Aula 2 - Desafio Kubernetes | Desafio Dev...
Fabricio Veronez
3,189 views
Dev Containers na prática
1:21:02
Dev Containers na prática
Fabricio Veronez
1,759 views
O que é CI/CD? | DevOps
20:43
O que é CI/CD? | DevOps
Robert Silva
7,070 views
O passo a passo para usar Docker
2:06:23
O passo a passo para usar Docker
Fabricio Veronez
3,287 views
ArgoCD AppProject: O Segredo para Gerenciamento Simples e Seguro
1:09:26
ArgoCD AppProject: O Segredo para Gerencia...
Fabricio Veronez
797 views
Copyright © 2025. Made with ♥ in London by YTScribe.com