Como usar o HashiCorp Waypoint para colaborar com o GitLab CI/CD
HashiCorp mostrou um novo projeto Waypoint em HashiCorp Digital. Ele usa um arquivo baseado em HCL para descrever a criação, o envio e o lançamento de aplicativos para várias plataformas de nuvem, desde Kubernetes até AWS e Google Cloud Run. Pense no Waypoint como Terraform e Vagrant juntos para descrever o processo de criação, envio e liberação de seus aplicativos.
Fiel à forma, a HashiCorp lançou o Waypoint como código aberto e vem com muitos exemplos. O nível do orquestrador depende de você, o Waypoint vem como um executável que pode ser executado diretamente em seu laptop ou na ferramenta de orquestração de CI/CD de sua escolha. O destino de implantação do aplicativo também depende de você, pois o Waypoint oferece suporte a Kubernetes, Docker, Google Cloud Run, AWS ECS e muito mais.
Depois de ler o incrível documentação e o mais chique exemplos aplicativos fornecidos pela HashiCorp, decidimos examinar mais de perto a orquestração do Waypoint com o GitLab CI/CD. Para fazer isso, usaremos um aplicativo Node.js simples em execução no AWS ECS do repositório de amostra.
Depois de clonar o repositório, vamos ver a estrutura do aplicativo que exibe uma página:
Como você deve ter notado, não há Dockerfile neste projeto. Eles não são adicionados no exemplo porque realmente não precisamos deles, porque o Waypoint cuidará deles para nós. Vamos dar uma olhada no arquivo waypoint.hclpara entender o que ele vai fazer:
project = "example-nodejs"
app "example-nodejs" {
labels = {
"service" = "example-nodejs",
"env" = "dev"
}
build {
use "pack" {}
registry {
use "aws-ecr" {
region = "us-east-1"
repository = "waypoint-gitlab"
tag = "latest"
}
}
}
deploy {
use "aws-ecs" {
region = "us-east-1"
memory = "512"
}
}
}
Durante a fase de construção, o Waypoint usa Cloud Native Buildpacks (CNB) para determinar a linguagem de programação do projeto e criar uma imagem do Docker sem usar um Dockerfile. Em princípio, esta é a mesma tecnologia que é usada pelo GitLab em parte DevOps automático na etapa Auto Build. É ótimo ver que o CNB do CNCF está ganhando cada vez mais adoção entre os usuários da indústria.
Depois que a imagem é criada, o Waypoint a carrega automaticamente em nosso registro AWS ECR para que esteja pronta para envio. No final da montagem, a etapa de entrega usa Complemento AWS ECS para implantar nosso aplicativo em nossa conta da AWS.
Do meu laptop é fácil. Coloquei o Waypoint que já está autenticado na minha conta da AWS e "simplesmente funciona". Mas o que acontece se eu quiser ir além do meu laptop? Ou talvez eu queira automatizar essa implantação como parte de meu pipeline geral de CI/CD, onde meus testes de integração, testes de segurança e outros são executados? Esta é a parte da história em que o GitLab CI/CD entra!
NB Se você está apenas planejando implementar CI/CD ou deseja começar a aplicar as melhores práticas para construção de pipelines, fique atento ao novo curso Slurm. "CI/CD no exemplo do Gitlab CI". Já está disponível pelo preço de pré-venda.
Waypoint no GitLab CI/CD
Para orquestrar tudo isso no GitLab CI/CD, vamos ver o que precisamos em nosso arquivo .gitlab-ci.yml:
Primeiro de tudo, você precisa de uma imagem base para rodar dentro dela. O Waypoint roda em qualquer distribuição Linux, só precisa do Docker, então podemos rodar com uma imagem Docker genérica.
Em seguida, você precisa instalar o Waypoint nesta imagem. No futuro, podemos coletar imagem de metaconstrução e conteinerize esse processo para você.
Por fim, executaremos os comandos do Waypoint
Acima está tudo o que nosso pipeline vai precisar para executar os scripts necessários para realizar a implantação, mas para implantar na AWS, precisamos de mais uma coisa: devemos fazer login em nossa conta da AWS. Na descrição do ponto de referência tem planos sobre autenticação e autorização. HashiCorp também lançou um projeto impressionante esta semana Boundary. Mas, por enquanto, podemos apenas pegar e manipular a autenticação e a autorização nós mesmos.
Existem várias opções para autenticação do GitLab CICD na AWS. A primeira opção é usar o built-in Cofre HashiCorp. Tudo bem se sua equipe já estiver usando o Vault para gerenciamento de credenciais. Outro método que funciona se sua equipe gerencia a autorização usando o AWS IAM é verificar se as tarefas de entrega são acionadas por meio de GitLab RunnerNameUm que está autorizado a iniciar a implantação por meio do IAM. Mas se você quer apenas se familiarizar com o Waypoint e quer fazer isso rapidamente, a última opção é adicionar sua API AWS e chaves secretas para Variáveis de ambiente GitLab CI/CDAWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY.
Colocando tudo junto
Assim que descobrirmos a autenticação, podemos começar! nossa final .gitlab-ci.yml Parece que este:
Você vê que começamos com uma imagem docker:latest e defina algumas variáveis de ambiente exigidas pelo Waypoint. No capítulo script baixamos o último executável do Waypoint e o colocamos em /usr/local/bin. Como nosso executor já está autorizado na AWS, simplesmente executamos waypoint init, build, deploy и release.
A saída da tarefa de compilação nos mostrará o endpoint onde rolamos o aplicativo:
Ponto de passagem um de inúmeras soluções da HashiCorp, que funcionam muito bem com o GitLab. Por exemplo, além de entregar o aplicativo, podemos orquestrar a infraestrutura subjacente com Terraforma no GitLab. Para padronizar a segurança SDLC, também podemos implementar GitLab com Cofre para gerenciar segredos e tokens em pipelines de CI/CD, fornecendo uma solução completa para desenvolvedores e administradores que dependem do gerenciamento de segredos para desenvolvimento, teste e uso em produção.
As soluções conjuntas desenvolvidas pela HashiCorp e GitLab ajudam as empresas a encontrar a melhor maneira de desenvolver aplicativos, garantindo uma cadeia de suprimentos consistente e gerenciamento de infraestrutura. A Waypoint deu mais um passo na direção certa e estamos ansiosos para um maior desenvolvimento do projeto. Você pode aprender mais sobre o Waypoint aquitambém vale a pena explorar documentação и plano de Desenvolvimento projeto. Acrescentamos nosso conhecimento a Documentação do GitLab CICD. Se você quiser experimentar você mesmo, você pode verificar o exemplo de trabalho completo em este repositório.
Você pode entender os princípios do CI/CD, dominar todas as sutilezas de trabalhar com o Gitlab CI e começar a aplicar as melhores práticas concluindo o curso em vídeo "CI/CD no exemplo do Gitlab CI". Entrar!