Introduction

As a data scientist and a DevOps enthusiast, I was searching for a way to deploy a Machine Learning app decoupled from its model because I was struggling to use embedded models due to massive container sizes. Imagine adding a 3GB neural network model inside a container image!!! That’s a huge infrastructure problem.

Browsing on internet, I found the following article about a concept called CD4ML.

That definitely caught my attention. Decoupling a model from its app results on several advantages:

  • It’s possible to train, save and change…


Logo do Bitnami Harbor.

Introdução

Por anos tenho usado o Bitnami para imagens de container e VMs para implantar apps para fins de estudo, porque eles realmente fazem um ótimo trabalho simplificando o seu uso, mas este foi um caso atípico. Por esse motivo, decidi escrever um guia de instalação passo a passo.

Bitnami Harbor:

Informação do Sistema:

  • I5 CPU
  • 100 GB de disco
  • Ubuntu 20.10

Pré-requisitos

  • Snap
  • Kubernetes Cluster (microk8s, minikube, K3s) — Neste guia estou usando o microk8s.
  • Kubedns (microk8s enable dns)
  • Helm

Bitnami Harbor logo.

Introduction

For years I’ve been using Bitnami’s VMs and container images to deploy appliances for study purposes, because they really do a great job simplifying the usage, but this one was an outlier. For this reason, I’ve decided to write a step-by-step installation guide.

Bitnami Harbor:

System info:

  • I5 CPU
  • 100 GB Disk
  • Ubuntu 20.10

Prerequisites

  • Snap
  • Kubernetes Cluster (microk8s, minikube, K3s) — In this case i’m using microk8s.
  • Kubedns (microk8s enable dns)
  • Helm

Check Kubernetes environment

Wait for microk8s start, it is possible to check the status by using the following…


Há uns meses atrás fiz uma publicação sobre criação de uma esteira CI/CD para Python usando o Jenkins (link abaixo), mas não foi explicado como escrever um pipeline como código. Nesta publicação tentarei explicar as diferenças entre pipelines (Scripted vs Declarative) e os blocos, seções e diretivas mais usuais.

Scripted vs Declarative

O pipeline do tipo Scripted foi o primeiro a ser implementado como código pelo Jenkins, escrito em groovy e tem como propósito ser uma estrutura de fácil adaptação pelo usuário, sendo de responsabilidade do desenvolvedor criar a estrutura lógica do pipeline.

Para simplificar a vida do engenheiro DevOps, foi criado posteriormente…


Devido ao grande crescimento da utilização de Python, decidi criar um pipeline de entrega de código para esta linguagem, utilizando somente o Jenkins como orquestrador.

Repositório do GitHub deste projeto:

Objetivos:

  1. Construir uma imagem Python usando Dockerfile;
  2. Realizar testes estáticos;
  3. Quebrar a entrega caso falhe nos testes (Quality Gate);
  4. Enviar a imagem para um repositório remoto;
  5. Ao final do build, executar um container com base na imagem criada.

Matheus Villela Torres

Data scientist and devops enthusiast.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store