Criando a Infraestrutura

Como criar a infraestrutura ??

Para replicar a infraestrutura, siga os seguintes passos:

Clone o repositório do GitHub com o terraform e os templates:

git clone https://github.com/RicardoRibeiroRodrigues/AWS-IaC-mlops-pipeline

Crie os repositórios no gitlab (1 para deploy e 1 para build) ou use repositórios já criados:

⚠️

O repositório deve estar vazio para não dar problema na hora de colocar os templates nele. O repositório deve ter a branch definida em variables.tf

Siga o tutorial do gitlab de como criar um projeto (opens in a new tab)

Colocando os templates no seus repositórios.

Siga os passos do README do repositório (opens in a new tab) para colocar os templates nos seus repositórios

Exporte suas credenciais da AWS para o seu env:

Gerando essas credenciais (opens in a new tab)

É recomendado utilizar o docker do projeto, já que é necessário uma versão recente do terraform. Para ver como utilizar, veja a página sobre o docker.

export AWS_ACCESS_KEY_ID=<SUA ACCESS KEY>
export AWS_SECRET_ACCESS_KEY=<SUA SECRET ACCESS KEY>
⚠️

É recomendado que o usuário que você esteja usando as chaves de acesso tenha permissão AdministratorAccess, já que fica mais simples, porém seria possível rodar tendo acesso à todos os serviços que são mostrados na arquitetura.

Agora podemos rodar o terraform!

Na pasta terraform:

terraform init
terraform plan -out pipeline_plan

Você deve ver no terminal todos os recursos que serão criados, para prosseguir:

terraform apply "pipeline_plan"

Ele deve mostrar passo a passo a criação da infra, ao finalizar, você verá algumas saídas no terminal.

Criando o push mirror no gitlab.

No terminal, devem ter algumas saídas:

  • mirror_url_build.
  • mirror_url_deploy.
  • mirror_git_password (essa não sai no terminal, fica em terraform.tfstate).

Com essas saídas, podemos fazer o push mirror no gitlab.

⚠️

Lembre-se de criar a branch configurada nas variáveis do terraform.

Feito isso, a pipeline está no ar, agora você pode:

Na página dos mirrors do repositório:

Forcando o update

Supervisionando deploy.

⚠️

Para o deploy e o build funcionarem, é necessário que a etapa anterior tenha sido feita para ambos os repositórios. É normal que a primeira execução da pipeline de deploy falhe, já que o modelo da etapa de build pode não ter sido registrado ainda, mas ao ter o código da pipeline de deploy no CodeCommit e o build ter sucesso, é só selecionar para tentar novamente, que na segunda vez deve dar certo!

Paciência! é esperado que a pipeline demore um pouco, afinal, estamos criando a infraestrutura para cada etapa, e treinando um modelo, isso leva tempo!

Caso todos os passos tenham sido executados com sucesso, a pipeline de build deve ser executada com sucesso, e o modelo deve ter sido registrado com sucesso pelo SageMaker, nesse caso, você verá que a pipeline de deploy começará automaticamente, e registrará um endpoint de teste, além de pedir a sua aprovação para fazer deploy de um endpoint de produção, dada a aprovação, o deploy de produção começa e ao fim dele, temos o fim de nossa pipeline.

Feito o deploy, você pode testar os endpoints.

⚠️

Caso a pipeline de build tenha dado erro na etapa de build, muito provavelmente a sua conta não tem acesso às instâncias necessárias para o SageMaker, veja um passo-a-passo de como resolver isso.