Introdução
Neste tutorial, abordaremos como integrar o Django, um poderoso framework Python, com o React, uma biblioteca JavaScript popular, e o Kubernetes, uma plataforma de automação de contêineres, para criar aplicações web escaláveis e responsivas. Você aprenderá desde a configuração do ambiente até a implementação, testagem e implantação em um cluster Kubernetes. Este guia é ideal para desenvolvedores que desejam dominar a criação de aplicações modernas, utilizando as melhores práticas de desenvolvimento de software, arquitetura de microservices e contêinerização. Vamos explorar juntos os passos necessários para construir uma aplicação robusta e escalável que atende às demandas do mercado atual.
Etapas
Configuração do Ambiente de Desenvolvimento
Antes de começarmos, certifique-se de ter Python, Node.js e Kubernetes instalados. Você pode verificar as versões instaladas usando os comandos `python –version`, `node -v`, e `kubectl version –client`. Se não tiver essas ferramentas instaladas, siga as instruções nos sites oficiais para cada tecnologia.
commands# Verificar versões instaladas
python --version
node -v
kubectl version --clientCriação do Projeto Django
Usaremos o Django para criar a API RESTful. Primeiro, crie um novo projeto Django chamado `api`. Navegue até a pasta desejada e execute o seguinte comando.
commands# Criar novo projeto Django
django-admin startproject api
# Navegar para o diretório do projeto
cd apiCriação da Aplicação Django
Dentro do projeto Django, criaremos uma nova aplicação chamada `produtos` que conterá nossa lógica de negócios.
commands# Criar nova aplicação
python manage.py startapp produtosDefinindo o Modelo de Produto
No arquivo `models.py` da aplicação `produtos`, defina um modelo chamado `Produto` que representará os produtos na loja.
produtos/models.pyfrom django.db import models class Produto(models.Model): nome = models.CharField(max_length=100) preco = models.DecimalField(max_digits=10, decimal_places=2) def __str__(self): return self.nome
Criando a API REST usando Django REST Framework
Instale o Django REST Framework e crie um arquivo de serializer. No terminal, execute `pip install djangorestframework`. Depois, crie um novo arquivo chamado `serializers.py` na pasta `produtos`.
commands# Instalar Django REST Framework
pip install djangorestframeworkprodutos/serializers.pyfrom rest_framework import serializers from .models import Produto class ProdutoSerializer(serializers.ModelSerializer): class Meta: model = Produto fields = '__all__'
Criando as Views da API
Crie uma view para gerenciar as operações CRUD para o modelo `Produto`. Edite o arquivo `views.py` da aplicação `produtos`.
produtos/views.pyfrom rest_framework import viewsets from .models import Produto from .serializers import ProdutoSerializer class ProdutoViewSet(viewsets.ModelViewSet): queryset = Produto.objects.all() serializer_class = ProdutoSerializer
Configurando as URLs
Configure as URLs para a API em um novo arquivo chamado `urls.py` dentro da aplicação `produtos`. Em seguida, adicione as URLs no arquivo principal `urls.py` do projeto.
produtos/urls.pyfrom django.urls import path, include from rest_framework.routers import DefaultRouter from .views import ProdutoViewSet router = DefaultRouter() router.register(r'produtos', ProdutoViewSet) urlpatterns = [ path('', include(router.urls)), ]
api/urls.pyfrom django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('api/', include('produtos.urls')), ]
Testando a API Localmente
Antes de implantar, teste a API localmente. Execute o servidor e use o Postman ou cURL para interagir com a API.
commands# Executar o servidor Django
python manage.py runservercurl_examples# Criar um novo produto
curl -X POST -H "Content-Type: application/json" -d '{"nome":"Produto 1", "preco":99.99}' http://localhost:8000/api/produtos/
# Listar todos os produtos
curl http://localhost:8000/api/produtos/Configuração do Ambiente React
Agora, crie um novo aplicativo React que será a interface do usuário para a API Django. Use o Create React App para inicializar o projeto.
commands# Criar novo aplicativo React
npx create-react-app frontend
# Navegar para o diretório do frontend
cd frontendInstalando Axios para Requisições HTTP
Instale o Axios, que será utilizado para fazer requisições para a nossa API Django.
commands# Instalar Axios
npm install axiosCriando o Componente ProductList
Crie um componente React chamado `ProductList` que irá exibir a lista de produtos que estão sendo buscados da API.
frontend/src/ProductList.jsimport React, { useEffect, useState } from 'react'; import axios from 'axios'; const ProductList = () => { const [produtos, setProdutos] = useState([]); useEffect(() => { const fetchData = async () => { const result = await axios('http://localhost:8000/api/produtos/'); setProdutos(result.data); }; fetchData(); }, []); return ( <ul> {produtos.map(produto => ( <li key={produto.id}>{produto.nome} - R$ {produto.preco}</li> ))} </ul> ); }; export default ProductList;
Conectando o Componente ao App
Adicione o componente `ProductList` ao seu componente principal `App.js`.
frontend/src/App.jsimport React from 'react'; import ProductList from './ProductList'; const App = () => { return ( <div> <h1>Lista de Produtos</h1> <ProductList /> </div> ); }; export default App;
Executando o Aplicativo React
Execute o aplicativo React e verifique se a lista de produtos é renderizada corretamente.
commands# Executar o aplicativo React
npm startCriando o Arquivo Dockerfile para Django
Crie um arquivo Dockerfile no diretório do seu projeto Django para empacotar a aplicação.
DockerfileFROM python:3.9 # Set the working directory WORKDIR /app # Install dependencies COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # Copy project files COPY . . # Expose port and run the application EXPOSE 8000 CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
Construindo a Imagem Docker
Na raiz do projeto Django, construa a imagem Docker usando o comando abaixo.
commands# Construir a imagem Docker
docker build -t django-api .Criando o Arquivo Kubernetes Deployment
Crie um arquivo chamado `deployment.yaml` para definir o deployment do Django no Kubernetes.
deployment.yamlapiVersion: apps/v1 kind: Deployment metadata: name: django-api spec: replicas: 2 selector: matchLabels: app: django-api template: metadata: labels: app: django-api spec: containers: - name: django-api image: django-api:latest ports: - containerPort: 8000
Criando o Serviço Kubernetes
Para expor o Django para o exterior, adicione um serviço Kubernetes em um arquivo chamado `service.yaml`.
service.yamlapiVersion: v1 kind: Service metadata: name: django-api-service spec: selector: app: django-api ports: - protocol: TCP port: 80 targetPort: 8000 type: LoadBalancer
Implantando no Kubernetes
Use os comandos abaixo para implantar o Django e o serviço no Kubernetes.
commands# Aplicar o Deployment
kubectl apply -f deployment.yaml
# Aplicar o Serviço
kubectl apply -f service.yamlVerificando o Status da Implantação
Verifique o status da implantação e encontre o endereço IP do serviço usando o comando a seguir.
commands# Verificar implantações
kubectl get deployments
# Verificar serviços
kubectl get services
Conclusão
Neste tutorial, você aprendeu como integrar Django, React e Kubernetes para desenvolver uma aplicação web escalável. Começamos configurando o ambiente, desenvolvendo a API em Django, construindo a interface de usuário com React e, finalmente, implantando a aplicação no Kubernetes. Este fluxo de trabalho fornece uma base sólida para projetos futuros e a capacidade de escalar suas aplicações conforme necessário. Sinta-se à vontade para explorar mais e adicionar novos recursos às suas aplicações.