goisbrunoaugusto / kubeRest

MIT License
0 stars 0 forks source link

Refatorar estrutura seguindo boas práticas #8

Open joapedu opened 1 month ago

joapedu commented 1 month ago

seguindo as boas práticas do Flask Framework devemos refatorar para esquematizar da seguinte forma:

kube_rest/
├── app.py                    # Arquivo principal para iniciar o app Flask
├── config/
│   └── __init__.py            # Inicialização do módulo de configuração
│   └── config.py              # Arquivo de configuração (por exemplo, carregar configs do Kubernetes)
├── deployments/
│   └── __init__.py            # Inicialização do módulo de operações com deployments
│   └── deploy_operations.py   # Lógica de criação e escalonamento de deployments
├── monitor/
│   └── __init__.py            # Inicialização do módulo de monitoramento
│   └── pod_monitor.py         # Função para monitorar recursos dos pods (CPU/Memória)
├── scale/
│   └── __init__.py            # Inicialização do módulo de escalonamento
│   └── autoscaler.py          # Lógica de autoescalonamento com base nas métricas
├── templates/                 # Diretório para templates HTML, se usar templates no futuro
│   └── index.html
├── static/                    # Diretório para arquivos estáticos (CSS, JS, imagens)
├── requirements.txt           # Dependências do projeto (Flask, kubernetes-client, prometheus_client, etc.)
│
└── README.md                  # Instruções de uso do projeto
└── CONTRIBUTING.md       # Arquivo de contribuição para o projeto
└── CHANGELOG.md            # Arquivo de controle de versão
└── LICENSE                         # Licença do projeto
joapedu commented 1 month ago

o app.py, por ser o arquivo principal do projeto deve ficar assim:

from flask import Flask
from monitor.pod_monitor import expose_metrics
from deployments.deploy_operations import create_deployment, scale_up, scale_down
from scale.autoscaler import monitor_and_scale

app = Flask(__name__)

@app.route("/status", methods=['GET'])
def status():
    return expose_metrics()

@app.route("/scale-up", methods=['POST'])
def scale_up_pods():
    return scale_up()

@app.route("/scale-down", methods=['POST'])
def scale_down_pods():
    return scale_down()

@app.route("/deploy", methods=['POST'])
def create_deploy():
    return create_deployment()

if __name__ == "__main__":
    app.run(debug=True)