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:
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.