Como usar o HashiCorp Waypoint para colaborar com o GitLab CI/CD

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 usar o HashiCorp Waypoint para colaborar com o GitLab CI/CD

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/CD AWS_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:

waypoint:
  image: docker:latest
  stage: build
  services:
    - docker:dind
  # Define environment variables, e.g. `WAYPOINT_VERSION: '0.1.1'`
  variables:
    WAYPOINT_VERSION: ''
    WAYPOINT_SERVER_ADDR: ''
    WAYPOINT_SERVER_TOKEN: ''
    WAYPOINT_SERVER_TLS: '1'
    WAYPOINT_SERVER_TLS_SKIP_VERIFY: '1'
  script:
    - wget -q -O /tmp/waypoint.zip https://releases.hashicorp.com/waypoint/${WAYPOINT_VERSION}/waypoint_${WAYPOINT_VERSION}_linux_amd64.zip
    - unzip -d /usr/local/bin /tmp/waypoint.zip
    - rm -rf /tmp/waypoint*
    - waypoint init
    - waypoint build
    - waypoint deploy
    - waypoint release

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:

Como usar o HashiCorp Waypoint para colaborar com o GitLab CI/CD

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!

Fonte: habr.com

Adicionar um comentário