 Agora não é hora de dormir. Toma um cafezinho e vamos começar. Um aviso antes que perguntaram aqui no chat sobre os vouchers do Exame de CKA. A gente tem uma lista de todos os participantes do evento e essa lista está sendo sorteada aleatoriamente pelo sorteia-me aí e a CNCF está pegando os nomes que são sorteados aleatoriamente e divulgando. Vocês viram no chat e agora pouco a Emily botou o nome da primeira grupo de ganhadores. Vai ter mais durante essa tarde, vai ter mais alguns sorteios e vamos divulgar assim que possível. Agora esse bloco de palestras agora que vai ter a primeira customise com a Julia, depois vai ter um atop falando do VTES com o Willian e para fechar o bloco open telemetro e com Joracy. Então vamos lá Julia, bem-vindo. Deixa um palco para ti. Olá galera, tudo bem? Primeiramente, me perdoe pela sua zona de Tamakali para me mudar. É isso. Segundamente. Obrigada pela CNCF por me chamar, mesmo que a gente mora aí, muito feliz de estar aqui. Bom, hoje vou falar sobre customise na prática. Acho que eu cheguei das palestras para TDC, mas para quem não assistiu sempre é um pouco diferente, mas espero que vocês gostem. Bom, eu atualmente moro em Barcelona, na Espanha, estou na quase três anos e já estou como devolvos desde os meses mais anteriores. Atualmente eu tenho feito um canal lá no YouTube para, se eu tenho falado um pouco sobre vida na Europa e outras coisas, então quem quiser saber um pouquinho sobre como migra ele, etc. Procure lá no YouTube. Bom, o que é o customise? O customise é uma forma que ele apresenta uma maneira de template free, de personalizar os objetos de Kubernetes. O legal do customise é que ele hoje já é nativo dentro de Kubernetes, então assim, você não precisa, em teoria, instalar nada. Ele também funciona bem com Ctl e ele na verdade é um emo. Então assim, você não precisa escrever um template diferente. Então praticamente quando você escreve seus objetos de Kubernetes, seus manifestos, ele vai dar um arquivo chamado customisation.emo, que é para você fazer a parte da sua customização, como o nome já disse. Porém, ele vai se fazer mesmo dentro de seus objetos, deployment, secret, etc. O legal dele é que assim, se você tem vários ambientes para deployar, é bem mais prático digamos assim, é rápido, então como ele, eu vou mostrar um pouquinho mais das estruturas, mas como ele trabalha com o overlay, como sobre a posição, então quando você tem um customisation base, e daí se você pode fazer sobre a posição para outros environments ou para outros objetos, o jeito que você quiser. Então sempre fazer pequenos ajustes e coisas mais simples, ele é bem bom, ele é super declarativo, é emo. E assim, muita gente compara ele com realm, a maioria das pessoas ficou lá, tá, entre realm e o customised que eu usava, vou falar um pouquinho sobre isso, só passar um pouco pela estrutura. Então assim, como eu falei antes, você sempre vai ter uma estrutura base, que você tem um diretor, que vai ter lá a sua aplicação, você serve, você serve, você serve o space, e fora dessa tree aqui, você vai ter um customisation point, e aí, por exemplo, depois você vai ter, dentro de sua base, depois vai ter o que você precisar de overlay. Aqui normalmente as pessoas, às vezes, escrevem, criam um outro folder chamado overlay, sobre a posição, e dentro da sua overlay, se você bota lá deve, pra onde você quiser, eu não vejo muita necessidade. Então, acho bom fazer do jeito, acho interessante fazer assim, pra mim funciona, mas claro que de repente pode ser que não, que não funcione. Tipo, também é confuso, beleza, criei ali outro folder, bota o overlay, e seja feliz. Dá uma ideia, na realidade é meio isso, você vai ter lá a sua base, o custom deployment com seus serviços, depois vai ter um nome, se quiser, sequence, confirm app, que mais você precisa. E aí você vai ter seus outros environments, deve, provavelmente, logo que você quiser, e aí nesses environments vai ter um customisation que eu vou mostrar depois, você meio que vai puxar alguns, digamos assim, a base da base. É meio estranho de falar, mas é meio isso, porque por isso que se chama de sobreposição. Então, no caso aí, você vai ter a base, e ela vai puxar do customisation dentro do customisation onde deve, vai ter o que você quer especificado pra deve, o que você quer especificado de teste, mas ele vai sempre olhar aqui pro arquivo da base. Normalmente, como eu falei, muita gente tenta entender a diferença do customisation pro realm. A primeira coisa de se olhar a estrutura do file, é como eu falei, você vai ter lá uma sobrecação, a base, deployment, customisation, vai ter as suas overlays, como eu falei, ou se você quiser ter direto a produção, deve lá, lá, do jeito que você quiser. E aqui é uma estrutura do realm, aqui é um WordPress, por exemplo, se eu tenho um chart, vou ter o license, os bolos, o JSON, alguns charts, templates e tal. Então assim, o realm, ele já é um, ele já não é um template free, ele tem um template dele, ele é feito em, ele tem um chart template, um realm template pra seguir, né? Então assim, você não vai escrever tudo simplesmente em album ou em declarativo. Então assim, pra mim, esse customisation funciona a partir de um conceito de onde o que e como, pra repaturar os manifestos, né? Então assim, o onde ele seria pra repaturar, alterar os manifestos da base, o declarador, por exemplo, o que seria pra desenvolver posições ou pequenos fragmentos, por ser, como a gente viu ali naquela estrutura, teria um outro replica count, um volume mount, etc. E o como ele vai mudar através dos fichuras de customisation, que é o costumais, né? É, ponteano. E o realm, ele já vai funcionar com o set de realm chart e o template. Então assim, os templates, eles vão ser sempre comandados com valores. Então assim, pra gerar os manifestos do Kubernetes, você sempre vai, você vai precisar de variável valor. É, tipo, em relação a isso, eu sei que tem outras questões interessantes, assim, por exemplo, é, o realm, dizem que tem uma possibilidade de fazer hellback mais facilmente. Você também, às vezes, sobe vários, você tem, por exemplo, vários realms aí, hoje em dia, repositórios de realm, tipo um Docker hub de set de realm. E aí, você já tem várias aplicações que você consegue deployar facilmente com o realm. O realm, no começo, ele precisava que você instalasse o tiller hoje em dia, acho que na versão 3, acho que tá na versão 3, ou pelo menos eu sei que na versão 3 já não precisava, isso melhorou bastante. A grande diferença que eu vejo de um de outro, a fato de um do que o som é ser totalmente declarativo e emo já tá nativo, eu acho que a curva de aprendizado é menos, é menos chato, assim, tipo, ele é mais dinâmico, tipo, você bateu o olho, entendeu o que tá acontecendo. O realm ele é mais chatinho pra isso. E também eu vejo alguns problemas na hora de você integrar com o CICD, o custo mais um pouco mais simples pra você comunicar com alguns CICDs, mas também o interessante é que você consegue utilizar os dois, você consegue utilizar tanto, se você consegue, aliás, combinar os dois, utilizar o custo mais eu, o realm, junto. O que eu queria mostrar aqui é que se você chegar, por exemplo, no realm contemplante, quando a gente fala de chave e valor ali, você vai ter sempre, você vai ter uma, aqui um, seria um, um volos contigo, que vai ter lá seus, seus, seus volumes mesmo, seus, seus, sem sentar em variável. É, você vai ter um chat, você precisa escrever, e aí você vai ter esse template, sabe, por exemplo, deployment, você, tudo o que você pega, né, de duas épricas, ele vai buscar lá, ele vem como uma variável, que ele vai buscar lá do volos, sabe. Então, assim, as vezes você olha assim, bate o olho, você não entende muito, tem que ficar abrindo os dois juntos, bate o olho assim, às vezes pra criar, eu não sei, é, eu gosto e não gosto. Quem é super, super experte de realm é o Panathas, por acaso, é, e, e é isso, assim, tipo, aqui só pra, antes de sair daqui, só pra mostrar, a gente tem um costumeis AIO, que é a documentação, é a página da documentação do costumeis, e aqui você tem várias coisas em tutoriais, como o instalável, como eu disse, ele já vem nativo hoje em dia, mas enfim, por acaso você precisa instalar de alguma forma, e aí tem exemplos, introduções, e por aí vai. Então, assim, eu aconselho sempre que você queira utilizar qualquer ferramenta, vá pra, vá pra documentação, porque, porque é importante. Aí a gente vai, meu monitor deu, tinha parado de apresentar, mas voltou, é bom, voltando aqui na apresentação, desculpa, eu tá fungando, cara, que eu com uma frio aqui, eu tô, acho que eu tô com a gripa. Então, assim, voltando a, a, a perguntação, eu vou fazer uma demo, mais ou menos. Então, assim, é, eu, no final daqui, eu vou mostrar pra vocês, onde está esse repositório, tem um repositório bonitinho, então. Então, esses podem olhar esse repositório, pra brincar em casa, isso que é. Então, assim, aqui eu tenho um repositório normal, costumado na prática, que aí eu tenho aquela, aquela estrutura que eu mostrei, não, no caso, tem um Redmi aqui. Mas é isso, eu tenho aqui minha base, dentro da base eu tenho amplificação, eu vou ter um deployment service, normal, tá vendo? Um objeto mesmo, tipo, nois, manifesto, nada demais. Aqui eu vou ter um nois face, eu vou criar um nois face chamado e aqui eu tenho, melhorou? Tá melhor? Tá melhor? Ainda não? Opa, beleza. Então, tá. Então, assim, em novo, vocês não estavam chegando antes. Aqui vocês têm a base, é, igual àquela estrutura mesmo de onde? Vou ter a app que eu botei, os mesmos manifestos de aplicação, o serviço, nois face, nois face, nada super, nada super difícil, tipo, simples, né, super básico. E aqui você vai ter o customisation. E aí o customisation é onde eu acho que acontece, né? Aí ele vai ser um caixa do customisation, eu digo aqui qual é o nois face, porque eu tenho nois face, então ele, quando eu criar a minha base, qual é o nois face que ele vai pegar, como um lebo, então eu falo, eu quero que o environment seja a base. A imagem da minha, a imagem da minha, do meu container, a tag, a réplica, quantas réplicas eu quero e os ressources. E aqui, que que são, né, os ressources? Aqui é onde eu falo pra ele, olha, customise, você vai lá no app service, rapid deployment, lebo space, você pega esses emus e daqui que ele vai criar isso daqui, entendeu? Julio, eu não entendi, beleza. Vamos, assim, tipo, vamos imaginar que eu estava deployando um aplicação normal. Você vai chegar aqui, lá no seu, você chega aqui no seu terminal, né? Peraí que eu vou aumentar aqui também. Se ele chega aqui no seu terminal, sei lá, mas lá, você está aqui deployment, você dá um, como CTL, apply, menos F, né, no deployment, pra deploy esse deployment, né? Depois faríamos uma coisa no service e pronto, então, certo? Beleza. Nesse caso, a gente não vai usar isso, por quê? Porque a gente está, a gente vai deploy pelo customise. Então, quando o customise ele for ler, ele vai ler esse customisation.yaml, ele não vai ler o app. Tá, como assim? Lembra que eu falei também do overlay? Ele sempre vai ter um customisation. Então, aqui no base, ele vai ter o customisation dele pra dizer onde ele vai pegar esse resorce. E no overlay dele, né, que é, sei lá, o que eu quero sobrepô, ele vai falar, olha, aqui que vai ser o meu dev, ele vai falar, olha, os resorces estão lá na base, vai lá ver qual é a base. Aí, quando ele vai ler na base, ele vai ler no customisation da base. E a customisation da base está como? Ah, app service, deploy no new space. Beleza. Então, ele vai ficar, beleza, vou pegar isso aqui como base, né? Aí, eu falo lá, é só que, ó, como no labels aí, eu já mudo. Eu falo, olha, pra esse caso aqui, pra esse dev, eu não quero mais o base, eu quero o dev. Eu quero também que o new space não seja lá base. Seja dev e pra e vai. E tipo, eu quero também que todos os meus manifestos sejam criados com o suffixo traço dev. E aí eu digo qual é a imagem, por exemplo. Imagina que eu tivesse uma imagem diferente, que eu quero pegar aquela base toda lá, mas a minha imagem seria 0.2.0, que eu colocaria. A imagina que um dev eu colocou uma app que eu fiz dessa 15, eu troco aqui, entendeu? E aí é isso. Então, assim, fazendo além disso, deixa eu ver só uma coisa. Além disso, é, não é isso mesmo. Nada muda, aqui, por exemplo, eu tenho um service, eu coloco o Ingress que eu vou usar, né? Tipo, não muda nada, assim, se você tá usando o Ingress, se você não tá usando, o que tipo de serviço você vai usar? Bom, então, pra gente, desculpa, que tinha um parado pra ler ali o chat, pra ver se tava alguma coisa wrong. Então, beleza. Então, pra deployar isso, eu vou, eu só preciso rodar o Customize.build, aí eu boto ponto, porque ele vai pegar todos os arquivos que ele achar do Customize, eu dou um byte com o BCTL apply, menos F, menos. Então, assim, o comando do Customize, ele também tá, ele também tá acoplado ao Coupcetel. Isso é legal, porque ele vai chamar mesmo o apply lá do Coupcetel. Bom, aí eu vou chegar aqui e vou andar onde? Ele deu um Unchange aqui, porque eu já tinha rodado isso, eu deletei o service e o deployment, mas eu tinha deletado isso do namespace. Então, ele deu o que ele não mudou. Então, se eu chegar agora aqui, por exemplo, e mudar, vou botar aqui um namespace, vou colocar demo1 e fizer isso de novo, ele vai mudar, ele vai criar, tá vendo? Aí ele vai criar outro, outro service, outro deployment. Então, se eu chegar aqui, botar com o Coupcetel, ele vai mudar aqui qual foi a pod, tá vendo? E aí, se eu chegar também no, sei lá, meu service, ele vai me mostrar qual é o que eu tenho. Beleza, eu deployei e aí o cara, eu quero ver se isso aqui tá funcionando. Vou deixar só chegar aqui, ele tá aplicando acho que no load balance ou não tá, não tá o que ainda? Então, não tem no IP ainda. Acho que agora eu tenho, tá funcionando, tá funcionando. Legal, né? Aí imagina que agora eu quero fazer o dev, eu chegaria aqui no, eu tô na base, né? Então, eu entraria aqui no dev e faria a mesma com o dev, né? Tipo, vou rodar isso aqui, se eu puder aqui com o Coupcetel, get pod, né? Tá funcionando. Então, ele, ele deployou aqui no namespace, demo dev, service demo app, service de traço dev, e dev. Note que assim aqui, a única coisa que eu fiz no dev foi colocar isso aqui. Eu falei, vai ser um environment fionado dev, vai ser um namespace dev, tudo que eu criado no meu manifesto pior que tem um suficio dev e pronto. Mais nada. Aí falei, ó, vai ser, vai buscar os meus ressources lá na base, simples. Se amanhã eu quiser mudar isso aqui pra 20, 100, eu mudo e crie de novo, né? Aí provavelmente aqui no meu, no meu digital, tá criando outro loadbox, porque ele vai criar outro loadbox. Aqui não é o melhor jeito de fazer não, mas é só pra testar, né? Porque eu vou apagar se não eu vou pagar um dinheiro pra eu digital. E, e praticamente, e praticamente é isso. Mais aqui pra vocês verem isso aqui melhor. Ih, aqui eu não consigo fazer mais. Vocês estão vendo? Não vai. Vou testar aqui, vou testar aqui. O pequeno montou que eu não vou aumentar, então vai, vai do jeito manual aqui. Se tem uma pergunta. Então, a questão é, tipo, essa questão de deletar na mão, eu não sei um jeito de deletar isso sem ser normal na real. Você sabe, Panath? Não pode ser Panath, deve ser aí pra ver algo. É, eu não sei. Eu não sei. Tem duas perguntas no chat aqui. Uma, a primeira é, você consegue fazer condicionais? Cara, eu já vi que tem como fazer algum tipo de condicionais. Eu não sei até onde ele vai, mas eu já vi que sim, eu não cozei. A próxima é, percebi que o namespace anterior ficou para trás, se alterar o nome do deployment, ele também fica para trás, sendo necessário de deletar na mão. Cara, então, no caso do namespace, ele ficou pra trás como dei direto ali, né? Se eu estivesse, eu mudei aqui no, cadê? Eu mudei aqui no customization. Se eu tivesse mudado no namespace, ele, eu acho que ele ia só fazer um change. Vou ver. Vamos testar. Ele dá, ele não faz um, porque não foi. Ele mudou. Tá aí, não sei. Uma boa pergunta. Eu vou pesquisar essa questão e vou postar aí no Twitter, mas acredito que tem algum jeito de fazer assim. Eu lembro que eu já fiz, viu? Só que agora eu não estou sabendo dizer ao certo, porque em teoria era para ele falar que ele mudou e não criar um novo. Então, a ideia é ter aqui, por exemplo, matar na mão, mas teve, existe algum jeito. Eu estava até procurando hoje. Existe algum jeito mais automatizado de matar com o costume mais, mas não achei. Nesse sentido, acho mais fácil mesmo, como eu falei, o realm você tem como fazer roubé, que tem como fazer umas updates um pouquinho melhores. Mas é uma coisa assim, para se pesquisar. Vou até notar aqui. Vou ver se eu lembro para postar para vocês no Twitter. Sim, pois é. Eu pensei nisso, que é um novo recurso mesmo, mas aí eu pensei que no sentido que eu já fiz isso de uma certa forma. Em teoria, se eu tivesse mudado aqui, era para ele fazer um change, não uma criação nova. Se eu precisasse estar mudando uma coisa específica só, justamente porque às vezes você tem que mudar coisas pequenas, ele só faz o change e não cria tudo de zero. Sim, mas com o costume mais vai para o costume mais, você vai matar tudo. Se você quiser se matar de uma forma... Algumas coisas específicas. Não, você tem que se pode botar como você está donando um minuto, você pode só passar os arquivos que você quer. É uma boa. Mas assim, é quase rodar na mão, não é? Quase a mesma coisa se você botar um copo satélite. Como assim, isso ficaria complicado usar num pipeline de GitHub? Você teria apenas o código novo, em que sentido? Não, porque você pode manter ele num repositório. Então você pode chegar lá para o GitHub e falar, puto, vai lá para o repositório e ele só vai fazer as mudanças do jeito que você quiser. Por isso que eu estou falando que tem como você criar assim sem ele ter que ficar criando um novo recurso, um novo recurso direto. Eu realmente não lembro como, mas tem, porque justamente, porque se você tem uma base de imagina, você tem que deployar no mesmo name space. Você não precisa... Você não precisa ficar mexendo, né? Naquilo ali. A ideia, na real, eu acho que é porque eu estou fazendo isso no base. Porque o base é o base de tudo. Então ela vai sempre criar um novo meta-data. Mas aí se eu mudasse aqui, eu acredito que, de repente, eu botasse só demo. Talvez aqui daria o world change ou sei, não sei. Tá vendo? Isso mesmo. Ele já fala, já tá configurado, entendeu? Então se eu trocar na base, como é uma base, ela sempre vai ter um novo recurso. Mas se eu criar pelo name space, se eu manter o meu name space no meu overlay, ele vai dizer pra mim que eu já confurei. Pronto, resolvemos. Julia, tem uma outra pergunta no chat aqui no chat. Ativa com o Argo CD? Cara, acho que sim. Eu já mexei com ele no Jenkins, já fiz algumas coisas também no GitHub. Acho que sim. Porque, em teoria, você passa um cup CTL, né? Então se você tem ele nativamente, se o seu Argo tem lá o cup CTL, não tem porque não funciona. Aí segue os outros aí, quem perguntou do Argo. Matheus falou que o Argo CD é mais lindo, cola nele. Mas alguma pergunta, pessoal? Não tô vendo nada aqui no chat. Mas alguma coisa, Julia? Acho que tá no lado do chat, era isso. Se alguém tiver mais uma pergunta, tiver qualquer pergunta. E também não sejam necessariamente sobre isso também, a gente vai à vontade. Ok, então obrigado, Julia, pela tua participação e pela palestra. Obrigada, Parato, por me roxar. Vamos ver se a gente se barra por aí. Até mais, então. Até mais. Vou trazer o William aqui agora e o William quer muita tecnologia aqui pra apertar o botão.