Olá!! Boas-vindas a mais um curso de Apache Airflow.
Autodescrição: Meu nome é Millena Gená, eu sou uma mulher branca de cabelos longos, escuros e cacheados, meus olhos são castanhos escuros, estou utilizando batom vermelho e vestindo uma blusa preta com o símbolo da escola de dados em verde no meio.
Estou sentada em uma cadeira gamer, na cor azul. Ao meu fundo, existe um guarda-roupa preto, com iluminação verde, alguns livros da saga Harry Potter, uma pelúcia de polvinho roxo, um funko da personagem Eleven, da série Stranger Things e, mais uma vez, o símbolo da escola de dados em verde.
Eu sou a instrutora que te acompanhará neste treinamento, onde aprofundaremos nossos conhecimentos na ferramenta Apache Airflow e estudaremos mais um de seus executores, o Kubernetes. Então, vamos conferir os principais conteúdos que aprenderemos durante o curso!
Começaremos configurando todo o ambiente Kubernetes na nossa máquina, utilizando o minikube. Para isso, precisaremos instalar o Docker, Minikube e Helm.
Em seguida, vamos preparar o nosso ambiente Kubernetes para configuração e instalação do Airflow. Neste momento, compreenderemos o que é o executor Kubernetes, quais as suas principais vantagens e criaremos alguns volumes persistentes.
Depois disso, configuraremos o Chart do Airflow, criando uma imagem customizada e realizando a instalação do chart. Por fim, vamos criar um DAG com algumas tarefas que extraem dados do mercado financeiro e testar o DAG no Kubernetes. Temos muito a aprender!
Para que você consiga acompanhar o curso da melhor forma, é importante que você tenha algum conhecimento em: comandos Linux; linguagem Python; Docker; e Kubernetes.
Se interessou pelo assunto? Então, vamos aprender a configurar o Airflow no Kubernetes e a utilizar o Kubernetes Executor.
Vamos começar o nosso curso! Vamos utilizar o terminal WSL 2 para executar todos os comandos e realizar todos os passos. Ele garantirá também que não teremos nenhum erro inesperado.
Inclusive, há uma atividade nessa aula que se chama Preparando o Ambiente, onde ensino o que é o WSL e a configurá-lo na sua máquina. Não deixe de conferir essa atividade e realizar todas as suas etapas antes de prosseguir.
Para conseguirmos utilizar o executor kubernetes da melhor forma, configuraremos o Airflow em um ambiente kubernetes. O primeiro passo, portanto, é preparar todo o ambiente kubernetes na nossa máquina, começando pela instalação de um gerenciador de máquinas virtuais, o Docker.
É importante realizar a instalação do gerenciador de máquinas virtuais, porque o kubernetes precisa dele para funcionar "por baixo dos panos".
Então, vamos instalar o Docker. Para configurar o repositório do docker e também a sua instalação, é preciso seguir o passo a passo descrito na documentação dessa ferramenta. O link também ficará disponível em uma atividade após esse vídeo.
Vamos abrir o Windows Terminal. Ele abriu o PowerShell na primeira aba. Nós trabalharemos com WSL, portanto, apertaremos a seta para baixo que está na barra superior do Terminal e selecionaremos a opção de Terminal WSL, que está como Ubuntu-20.04.
Agora, podemos começar a executar os comandos, conforme descrito na documentação. Nós realizaremos os comandos para que a versão mais recente seja instalada, a versão 20.10.20. Recomendo que você utilize a mesma.
Podemos colar o primeiro comando que a documentação pede, que serve para remover outras versões do Docker instaladas na máquina.
sudo apt-get remove docker docker-engine docker.io containerd runc
Pressionaremos "Enter". Ele pediu a senha. Vamos preencher.
sudo apt-get remove docker docker-engine docker.io containerd runc
[sudo] password for millenagena
Ele retornou uma mensagem avisando que nenhum pacote com nome de Docker foi encontrado. Está certo, porque não instalamos nenhum.
sudo apt-get remove docker docker-engine docker.io containerd runc
[sudo] password for millenagena
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package 'docker.io' is not installed, so not removed
E: Unable to locate package docker
E: Unable to locate package docker-engine
O próximo comando servirá para a atualização dos pacotes da nossa máquina.
sudo apt-get update
Finalizamos a atualização dos pacotes. É sempre importante fazer isso antes de realizar qualquer nova instalação na máquina. Agora, vamos pressionar "Ctrl + L" para limpar o Terminal e colar o próximo comando, que serve para instalar pacotes recomendados. Assim, instalaremos o Docker sem nenhum problema.
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
Agora, executaremos mais dois comandos para a configuração da chave oficial do Docker. Limparemos o Terminal com "Ctrl + L" e colaremos o primeiro, o sudo mkdir
.
sudo mkdir -p /etc/apt/keyrings
Vamos colar o segundo comando e, definitivamente, adicionarmos a chave oficial do Docker.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
A chave foi adicionada e podemos executar o comando para a configuração do repositório do Dcoker na nossa máquina.
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Por fim, vamos executar novamente o comando de atualização de pacotes.
sudo apt-get update
Feito isso, podemos, definitivamente, executar o comando de instalação do Docker.
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
A instalação foi finalizada e precisamos executar o comando que vai inicializar o docker. Vamos limpar o Terminal novamente e colar o comando.
sudo service docker start
No Terminal do WSl, o Docker não é inicializado automaticamente, por isso, sempre será necessário executar esse comando. Apertamos "Enter" e o Docker foi inicializado. Para conferirmos se a instalação está correta, vamos executar uma imagem Docker chamada "Hello World", apenas ao nível de teste.
sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1db29710123e: Pull complete
Digest: sha256:c77beld3a47d0caf71a82dd893ee61ce01f32fc758031a6ec4cf1389248bb833
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
The Docker client contacted the Docker daemon.
The Docker daemon pulled the “hello-world” image from the Docker Hub. (amd64)
The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
The Docker daemon streamed that output to the Docker client, which sent it to your terminal.
To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
For more examples and ideas, visit:
O comando foi executado corretamente e retornou a mensagem "Hello from Docker!". Vamos limpar o Terminal outra vez. Agora, executaremos mais alguns comandos para habilitarmos o uso do Docker como usuário comum, ou seja, sem a necessidade de adicionar sudo
à frente do comando todas as vezes em que executarmos algo no Docker.
Além disso, é importante realizarmos esse passo para que o Kubernetes consiga utilizar o Docker sem nenhum problema. Então, vamos inserir o comando para adicionar um grupo docker.
sudo groupadd docker
groupadd: group 'docker' already exists
Ele retornou uma mensagem avisando que esse grupo já existe. Não tem problema. Podemos passar para o segundo comando, que serve para adicionar o usuário ao grupo docker.
sudo usermod -aG docker $USER
Para garantirmos que essas configurações serão aplicadas, podemos fechar o nosso Terminal e abri-lo outra vez. Essa é uma recomendação da própria documentação. Vamos abrir uma nova guia e selecionar Ubuntu.20.04.
Testarmos se as configurações foram devidamente aplicadas executando novamente o comando da imagem "Hello World", desta vez, sem o sudo
.
docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
The Docker client contacted the Docker daemon.
The Docker daemon pulled the “hello-world” image from the Docker Hub. (amd64)
The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
The Docker daemon streamed that output to the Docker client, which sent it to your terminal.
To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
For more examples and ideas, visit:
A imagem foi executada corretamente e ele trouxe a mensagem "Hello from Docker!" sem precisar do sudo
antes do comando. Se você tiver algum erro nesta etapa, talvez seja necessário desligar o WSL e ligá-lo novamente. Mas, não se preocupe! Uma atividade também será disponibilizada nessa aula, ensinando a reiniciar o Terminal WSL.
Agora que o Docker está instalado e configurado, podemos partir para a configuração do Cluster Kubernetes na nossa máquina. Faremos isso nos próximos vídeos!!
Para instalarmos um ambiente Kubernetes em nossa máquina, utilizaremos uma ferramenta chamada Minikube - uma das formas mais simples de configurar um cluster Kubernetes na máquina local, utilizada principalmente para realização de testes de aplicações.
Para que realizemos a instalação do Minikube, é importante que tenhamos um gerenciador de máquinas virtuais, no caso, o Docker, que instalamos anteriormente. Inclusive, é necessário garantir que o Docker esteja rodando antes de iniciarmos a instalação e configuração do Minikube, porque ele precisa desse gerenciador para funcionar corretamente.
Inicializaremos o Docker com o comando sudo service docker start
, que pedirá nossa senha.
sudo service docker start
Com o Docker inicializado, podemos partir para a instalação no Minikube, e, assim como fizemos para instalá-lo, seguiremos os comandos da documentação do próprio Minikube. Optaremos pela versão mais atual até o momento, que é a 1.28.0. Para isso, usaremos dois comandos. São eles:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
Para checar se a instalação foi realizada corretamente, iniciaremos o Minikube com o comando mikube start
.
minikube start
Este processo pode levar alguns minutos. Quando finalizado, podemos conferir se o Minikube foi inicializado e o cluster Kubernetes configurado através do comando minikube status
.
minikube status
Ao executá-lo, deve nos retornar uma mensagem semelhante à esta:
minikube type: Control Plane host: Running kubelet: Running apiserver: Running kubeconfig: Configured
Isso significa que o cluster está configurado e os demais tópicos estão sendo executados.
É interessante sabermos que, ao instalarmos e inicializarmos o Minikube, automaticamente também é instalado o Kubectl, uma ferramenta de linha de comando utilizada para controlar e configurar clusters no Kubernetes.
Para executar comandos do Kubectl dentro do minikube, sempre utilizaremos a estruturação minikube kubectl --
e o comando que desejamos executar, como, por exemplo help
.
minikube kubectl --help
O comando help
nos retorna outros comandos do Kubectl. Aqui, o utilizamos de maneira exemplificativa.
Com o minikube instalado, podemos acessar o dashboard do Kubernetes para visualizar, configurar e gerenciar o cluster. Para isso, executaremos o comando minikube dashboard
que deve nos retornar, entre outras informações, uma URL pela qual acessaremos o dashboard.
minikube dashboard
Acessando a URL pelo navegador, estaremos na dashboard do Kubernetes, onde conseguimos gerenciar todos os serviços que estão rodando.
Na barra lateral esquerda, iremos em "Nodes", na seção de "Cluster". Note que temos um único node rodando, no caso, o minikube
, então o acessaremos. Feito isso, teremos acesso a algumas informações sobre este node, além da alocação de recursos da nossa máquina.
Agora, novamente na barra lateral, acessaremos "Pods". Perceba que não temos nenhum pods rodando, mas, posteriormente, quando instalarmos e configurarmos o Airflow no Kubernetes, teremos alguns pods em execução responsáveis pela execução dos serviços do Airflow e das tarefas dos DAGs.
Caso você não se lembre do que é um pods, há uma atividade revisando essa conceituação.
Para finalizar, vejamos como podemos parar o cluster Kubernetes quando quisermos.
No terminal, teclaremos "Ctrl + C" para encerrar o processo de execução da dashboard e, para encerrar o Minikube, executaremos minikube stop
.
minikube stop
Pronto! O Minikube foi finalizado!
Quando quisermos executá-lo novamente, precisaremos inicializar o Docker e executar o comando minikube start
.
Agora que já temos um cluster Kubernetes configurado em nossa máquina, precisamos descobrir uma maneira de configurar o Airflow dentro desse cluster. É o que faremos a seguir!
O curso Aprofundando no Airflow: Executor Kubernetes possui 113 minutos de vídeos, em um total de 56 atividades. Gostou? Conheça nossos outros cursos de Engenharia de Dados em Data Science, ou leia nossos artigos de Data Science.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.