[00:00] Terminou a criação aqui, demorou um pouco, o mesmo tempo que demoraria no console. Nós vamos continuar da seguinte maneira, vamos aumentar essa tela para ficar a visualização melhor para mim e para você, e fazer o seguinte. Todo esse guestbook que eu comentei que isso tem na documentação do Google, então tem um GitHub deles que já tem esse projeto todo lá.
[00:25] Vamos lá, pegar esse negócio, vou deixar o link do GitHub e também do ZIP dos arquivos que estamos trabalhando, então você pode fazer o download. Vamos dar uma olhada nesse GitHub, vamos pegar ele, deixa eu colar o link no navegador, só para entendermos.
[00:48] Está aqui o link do GitHub e tem várias coisas legais, aqui dá até para explorar depois, mas vamos lá, eu vou copiar essa pasta, vamos no nosso Shell e vamos fazer um git clone e pegar desse link. Certo, e aí? Vamos olhar o que ele pegou. Está aqui, “Kubernetes-engine-samples”. O que eu quero daqui?
[01:21] Eu quero isso aqui, guestbook. Para facilitar, mv guestbook/ .. para um diretório acima, está aqui, guestbook. É nele que vamos trabalhar. Você já sabe, vamos abrir o nosso editor e já apontamos para o guestbook.
[01:51] "File > Open", olha o "guestbook" aqui. Vamos deixar esse console assim, para visualizarmos de uma forma mais confortável. Está carregando aqui. Está lembrando, a figura está aqui ainda? Está.
[02:13] Vamos trabalhar no deploy primeiro do Redis, e abrimos o arquivo para vermos algumas particularidades. Eu vou pegar aqui o arquivo, olha quem está aqui. Temos o "redis-leader", o deploy do leader e temos, logicamente, o segundo.
[02:32] Vamos pegar o "redis-leader-deployment" e dar uma examinada no arquivo. É o seguinte, o arquivo já está pronto, vem do fabricante, e vamos comentar as partes que são importantes. O que eu quero dizer? Primeira coisa, no caso do Redis, ele funciona com o master e com o slave, aqui ele está chamando de forma diferente, mas a temática é exatamente essa.
[02:57] Ele tem o leader e o seguidor, é exatamente a mesma coisa, essa é a proposta de funcionamento do Redis. O que eu quero destacar aqui? Nós estamos criando um deploy, estamos utilizando um deploy, a imagem está aqui, image: "docker.io/redis:6.0.5", e isso é novo, cpu e memory.
[03:17] Eu tenho aqui request de CPU e de memória. O que isso vai fazer? “Ricardo, eu já estudei sobre Kubernetes, já estudei isso tudo, e tenho uma vaga lembrança. Pode detalhar melhor?”. Vamos lá, quando colocamos essa requisição aqui, de CPU e de memória, você está dizendo para o Kubernetes, você está dizendo o teu cluster o seguinte: esse sujeito, o Redis, você vai alocar esse espaço de CPU e vai alocar isso de memória.
[03:50] Isso é óbvio, é claro, eu sei que você já sabe. Só que tem um detalhe que às vezes a pessoa passa despercebido. Isso não só está alocando o recurso, mas também você não pode ultrapassar esse limite. Como assim? Eu estou dizendo que, em termos de unidade, 100m - você sabe que isso é contado em unidades dividido por dez.
[04:20] Por exemplo, se eu precisasse alocar um core inteiro, eu ia dizer aqui: aloque mil, aí seria um core inteiro. Eu botei 100, então estou dividido por 10, eu estou pegando 1/10 avos do meu core, é isso o que eu quero alocar em termos de CPU.
[04:41] O que acontece, o que temos que ficar atentos, por isso é sempre importante aprofundar os estudos, é o seguinte: se você, por acaso, se o Redis fosse exigir 200m, ou seja, o dobro dessa capacidade para ele subir, para operar, na hora que o contêiner for colocado no ar, daria um erro e ele não conseguiria fazer o provisionamento.
[05:08] Então esses números, é importante sempre pensarmos que tem uma alocação, eu gosto de chamar dessa maneira, temos a alocação, mas também ele é um limitador de quanto você pode trabalhar. Isso é importante para a CPU, lembrando que, no caso, se eu quisesse um core, seria mil. Aqui eu estou com 1/10, eu dividi 1 por 10.
[05:32] E a questão de memória, 100 mega são o suficiente para essa aplicação. Quem me disse isso? No detalhe da aplicação ele dá as especificações, nós colocamos exatamente isso. Diferente aqui também, esse serviço, o Redis que eu chamo de database, eu sei que tem quem não gosta disso e diz que é um armazenamento em memória. Para mim isso é database, enfim.
[06:01] Ele está usando a memória, já reservamos os 100 mega, e ele está rodando como um serviço. O que eu quero dizer com isso? Que em algum momento o meu front-end vai falar com o meu Redis.
[06:18] Como é que se fala com ele? Com uma porta TCP, é claro. A porta que ele funciona é essa 6379.
[06:28] Eu não alterei nenhum default do que eu peguei, vou deixar esse ZIP para você, e vamos fazer o deploy desse sujeito, “redis-leader-deployment.yaml”. Então nós pegamos o nosso console e podemos fazer o seguinte, ls, está aqui. cd guestbook, ls, vamos ver o que ele cria, “redis-leader-deployment.yaml”, esse deploy aqui.
[07:00] Vamos lá, kubectl apply -f e manda ele carregar esse sujeito. Vai fazer o deploy, vamos ver o que ele fez, kubectl get pods. Está criando o nosso contêiner. Enquanto ele cria o contêiner, vamos ver aqui, isso não deve demorar, running, já está pronto.
[07:28] Assim como temos o pod rodando, precisaremos criar um serviço para controlar ele, até para que um fale com o outro, é a mecânica do Redis funcionar. Eu tenho aqui, ele chamou também, já está pronto, o arquivo de serviço. Não tem nada demais, ele só está dizendo o seguinte, que o meu controlador, ele vai apontar para a porta 6379.
[08:01] Isso será responsável para ele poder gerenciar o leader, o slave, o serviço. Uma vez que fizemos do leader, vamos fazer o deploy do serviço do leader também. Voltou no console, estamos aqui: kubectl apply -f redis-leader-service.yaml. Vamos lá, kubectl get service, olha quem apareceu aqui, já está o controle dele, o leader já está aqui.
[08:40] O que vamos fazer? Vamos repetir isso para o slave, para o seguidor. Voltamos para o editor e você verá que o arquivo é exatamente o mesmo. O seguidor, mesma alocação de memória, tudo mais.
[08:58] A imagem que ele usa é diferente, Redis follower, e o outro é o Redis, cadê ele? Está vendo? Isso é importante.
[09:11] Essas imagens eu não alterei nada, como eu já disse para você. O que é legal dessa parte é rever o conceito de alocação de memória, de CPU, tudo mais. Esse arquivo “redis-leader-deployment.yaml” é o deploy e esse “redis-leader-service.yaml” é o serviço.
[09:27] Vamos lá, vamos fazer, vamos mandar isso rodar. Vamos no console, damos uma limpada, vamos fazer o nosso deploy. Vamos usar o kubectl apply -f redis-followe-deployment.yaml. Mandamos ele rodar, damos aquela olhada rápida se está tudo funcionando, kubectl get pods.
[09:52] Os seguidores já estão sendo providenciados, pendentes. Vamos ver aqui, pending, pending. Nós fazemos assim, deixa eu esperar um pouco só e vou carregar aqui os serviços, vou fazer o deploy. Vamos esperar um pouco, vamos repetir o comando, agora já está tudo running.
[10:16] Vale uma pausa rápida, para te lembrar o seguinte: isso aqui você pode detalhar o que está acontecendo, pegar as informações e também, lá no console, você pode acompanhar isso. Está lembrando do módulo 1? Esse cara, o guestbook, está aqui, olha o meu cluster.
[10:37] Quanto está alocado, quanto está alocado de memória, e ele vai começar a alocar conforme a demanda, conforme o que formos utilizar. Está aqui, vamos abrir bem rápido, tem lá os detalhes, vamos ver os workloads.
[10:56] Status ok, se der algum problema você também tem como monitorar por aqui, você já aprendeu isso. Mas vamos fechar essa parte, o que nós precisamos? Fizemos o deploy do Redis, do slave e eu preciso fazer agora aqui o do serviço. Fazemos o do serviço, kubectl get services.
[11:25] Já está o serviço também, 6379, para podermos fazer o acesso a ele. Está pronto? Não. O que precisamos fazer? Nós criamos essa camada aqui, olha os serviços aqui.
[11:40] Os serviços vão permitir, eu estou fazendo a exposição do meu pod para dentro do meu cluster. Se não, como eu iria acessar a porta de serviços? Isso foi resolvido, o que temos que fazer? Trabalhar no front-end, fazer o deploy do front-end, criar o load balance e ver isso tudo funcionando na prática. Na sequência eu volto para fazermos essa segunda etapa.