Prática DevOps com Docker para Machine Learning
  • Prática de DevOps com Docker para Machine Learning
  • Autores e Agradecimentos
  • Uso do Livro
  • Contribua com o Livro
  • Licença
  • Organização do Livro
  • 1. Introdução
    • 1.1 Máquinas Virtuais e Contêineres
    • 1.2 DevOps e Docker
    • 1.3 Configuração do Ambiente - Python
    • 1.4 Configuração do Ambiente - Docker
    • 1.5 Dockerfile, Imagem e Contêiner Docker
    • 1.6 Docker Hub e Comandos Adicionais
  • 2. Desenvolvimento
    • 2.1 Do notebook para aplicação - parte 1
    • 2.2 Do notebook para aplicação - parte 2
    • 2.3 Do notebook para aplicação - parte 3
  • 3. Produção
    • 3.1 Desenvolvimento vs Produção: o fim ou o início?
    • 3.2 Ambiente de Produção - parte 1
    • 3.3 Ambiente de Produção - parte 2
    • 3.4 Ambiente de Produção - parte 3
  • 4. Monitoramento
    • 4.1 Introdução
    • 4.2 Configurando o Servidor de Monitoramento
    • 4.3 Monitorando Servidores do Ambiente de Produção
    • 4.4 Comandos de Verificação do Nagios
    • 4.5 Criando Verificações Mais Específicas
    • 4.6 Criando Alertas
    • 4.7 Recuperando de Problemas
    • 4.8 Verificação de Contêineres via NRPE
  • 5. Infraestrutura como Código e Orquestração
    • 5.1 Introdução
    • 5.2 Orquestração com Docker Compose
    • 5.3 Orquestração com Kubernetes
  • 6. Integração Contínua
    • 6.1 Introdução
    • 6.2 Controle de Versão
    • 6.3 Configurando um repositório no GitLab
    • 6.4 Branch e merge
    • 6.5 Pipeline de Integração Contínua com GitLab CI/CD
  • 7. Entrega Contínua
    • 7.1 Introdução
    • 7.2 Implantação automática no Docker Hub
    • 7.3 Implantação automática no Heroku
    • 7.4 Implantação automática no Google Kubernetes Engine (GKE)
    • 7.5 Testando tudo junto
  • 8. Model serving
    • 8.1 Introdução
    • 8.2 Model serving com mlserver
    • 8.3 CI/CD com GitLab e mlserver
    • 8.4 Testando tudo junto
  • 9. Model serving batch
    • 9.1 Introdução
    • 9.2 Spark
    • 9.3 Airflow
    • 9.4 Testando tudo junto
  • 10. MLOps com mlflow
    • 10.1 Introdução
    • 10.2 Visão geral do MLflow
    • 10.3 Configuração do MLflow
    • 10.4 Testando MLflow
  • 11. MLOps com Kubeflow
    • 11.1 Visão geral do Kubeflow
    • 11.2 Configuracão
    • 11.3 Kubeflow Pipeline
    • 11.4 Kserve
    • 11.5 Testando tudo junto
  • 12. Conclusão
    • Conclusão
Powered by GitBook
On this page
  • 6.3.1. Download e preparação do projeto
  • 6.3.2. Configuração do repositório
  1. 6. Integração Contínua

6.3 Configurando um repositório no GitLab

Previous6.2 Controle de VersãoNext6.4 Branch e merge

Last updated 3 years ago

Vamos começar a colocar esses conceitos em prática então. Retomando a figura, estamos no passo 2, ou seja, vamos começar colocando um de nossos projetos nesse ciclo, iniciando pelo sistema de controle de versões. Utilizaremos o .

Fluxo de trabalho genérico e para o ciclo de vida do aplicativo em contêineres do Docker (extraída de Torre (2020))

6.3.1. Download e preparação do projeto

Sempre certificando-se que o ambiente virtual está ativado, execute o comando pip install -r requirements.txt para instalar os pacotes caso necessário.

6.3.2. Configuração do repositório

Crie um novo projeto vazio, e escolha um nome para ele. O importante é que este nome seja único dentro do seu conjunto de repositórios. Vamos escolher "classificador-produtos". Também é importante escolher a visibilidade. A opção "Private" mantém o repositório inacessível a outros usuários, permitindo que você libere o acesso apenas a quem desejar, enquanto a opção "Public" permite que qualquer pessoa consiga vê-lo, o que é ideal para projetos abertos, open source, etc. Para este exemplo, tanto faz a opção. Por último, vamos desmarcar a opção "Initialize repository with a README", pois queremos inicializar o repositório com a pasta que acabamos de criar.

As Figuras a seguir ilustram as opções a serem adotadas para este exemplo.

Ao concluir a criação do projeto, você será levado até sua página inicial. Lá serão exibidas algumas informações interessantes. Uma delas é uma sequência de comandos para configurar seu usuário padrão do GitLab na máquina (não se preocupe, isso pode ser alterado posteriormente caso queira outros usuários):

git config --global user.name "Daniel Lucrédio"
git config --global user.email "daniel.lucredio@ufscar.br"

Em seguida, precisamos configurar uma forma segura para acessar o repositório a partir da nossa máquina local. Há diferentes formas para fazer isso. Faremos utilizando um token de acesso pessoal.

Clique no ícone para editar seu perfil, no canto superior direito da página:

Em seguida, clique em "Access Tokens":

Na página que aparecer, escolha um nome para seu token (no exemplo, colocamos "notebook-samsung"), ative a opção write_repository, e crie o token. Se quiser definir uma data para que o token expire, é possível. Caso deixe em branco, o token terá validade indeterminada.

Assim que o processo for concluído, será exibido o token criado. Conforme as instruções, copie-o agora e salve-o em algum local seguro, pois o mesmo não poderá ser visto novamente assim que sair da página (será necessário revogá-lo e criar novamente).

Agora podemos inicializar nosso repositório com o conteúdo que criamos anteriormente. Abra um terminal e navegue até a pasta com o projeto classificador-produtos. Execute os seguintes comandos, substituindo o nome ("notebook-samsung") e conteúdo do token (xxxxxxxxxxxxxxxxxxxxx) pelos valores que você acabou de criar.

git init --initial-branch=main
git remote add origin https://notebook-samsung:xxxxxxxxxxxxxxxxxxxxxxxxxxx@gitlab.com/daniel.lucredio/classificador-produtos.git
git add .
git commit -m "Initial commit"
git push -u origin main

Se tudo der certo, algo parecido com o seguinte deve aparecer no terminal:

Enumerating objects: 12, done.
Counting objects: 100% (12/12), done.
Delta compression using up to 8 threads
Compressing objects: 100% (9/9), done.
Writing objects: 100% (12/12), 434.51 KiB | 5.79 MiB/s, done.
Total 12 (delta 0), reused 0 (delta 0), pack-reused 0
To https://gitlab.com/daniel.lucredio/classificador-produtos.git
 * [new branch]      main -> main
branch 'main' set up to track 'origin/main'.

Acessando a página do projeto no GitLab, você deve conseguir ver o mesmo conteúdo que criamos anteriormente:

Não é aqui o objetivo ensinar todos os detalhes e procedimentos para utilização do git. Existem muitos tutoriais, livros e artigos sobre o assunto, sendo de fácil acesso e aprendizado. Deixamos para o leitor a tarefa de se familizarizar com o uso desse sistema para controle de versões. Mas iremos demonstrar a seguir o processo de criação de uma "branch" e o processo de "merge", pois é importante para a integração contínua.

Faremos o exemplo baseado no aplicativo para classificação de produtos que utiliza contêiner único. Faça o e salve-o em seu computador (precisaremos apenas da pasta referente ao projeto da API HTTP com contêiner único). Caso ainda não exista, não se esqueça de criar e ativar um ambiente virtual para esse projeto. A estrutura de diretórios deve ser a seguinte:

Agora vamos colocar esse projeto no . A primeira coisa a fazer é criar uma conta de usuário. O processo é simples e rápido, basta acessar a página e seguir as instruções. Assim que estiver concluído, você verá a página inicial:

download aqui
GitLab
GitLab
Página inicial do GitLab
Página inicial do GitLab
Criação de projeto no GitLab - parte 1
Criação de projeto no GitLab - parte 2
Criando um token de acesso pessoal - parte 1
Criando um token de acesso pessoal - parte 2
Criando um token de acesso pessoal - parte 3
Criando um token de acesso pessoal - parte 4
Inicialização do repositório aparecendo no GitLab