เบงเบดเบ—เบตเบเบฒเบ™เปƒเบŠเป‰ HashiCorp Waypoint เป€เบžเบทเปˆเบญเบฎเปˆเบงเบกเบกเบทเบเบฑเบš GitLab CI/CD

เบงเบดเบ—เบตเบเบฒเบ™เปƒเบŠเป‰ HashiCorp Waypoint เป€เบžเบทเปˆเบญเบฎเปˆเบงเบกเบกเบทเบเบฑเบš GitLab CI/CD

HashiCorp เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป‚เบ„เบ‡เบเบฒเบ™เปƒเบซเบกเปˆ เบˆเบธเบ”เบขเบทเบ™ เบชเบธเบ” HashiCorp Digital. เบกเบฑเบ™เปƒเบŠเป‰เป„เบŸเบฅเปŒเบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆ HCL เป€เบžเบทเปˆเบญเบญเบฐเบ—เบดเบšเบฒเบเบเบฒเบ™เบชเป‰เบฒเบ‡, เบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡, เปเบฅเบฐเบเบฒเบ™เบ›เปˆเบญเบเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบซเบผเบฒเบเป†เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเบ„เบฅเบฒเบง, เบ•เบฑเป‰เบ‡เปเบ•เปˆ Kubernetes เป€เบ–เบดเบ‡ AWS เบเบฑเบš Google Cloud Run. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบดเบ”เบงเปˆเบฒ Waypoint เป€เบ›เบฑเบ™ Terraform เปเบฅเบฐ Vagrant เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เป€เบžเบทเปˆเบญเบญเบฐเบ—เบดเบšเบฒเบเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡, เบเบฒเบ™เบ‚เบปเบ™เบชเบปเปˆเบ‡, เปเบฅเบฐเบ›เปˆเบญเบเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เปเบ—เป‰เบˆเบดเบ‡เปเบฅเป‰เบง, HashiCorp เป„เบ”เป‰เบ›เปˆเบญเบ Waypoint เป€เบ›เบฑเบ™เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”เปเบฅเบฐเบกเบฒเบžเป‰เบญเบกเบเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบซเบผเบฒเบเบขเปˆเบฒเบ‡. เบŠเบฑเป‰เบ™ orchestrator เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบ—เปˆเบฒเบ™, Waypoint เบกเบฒเป€เบ›เบฑเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป‚เบ”เบเบเบปเบ‡เปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบซเบผเบทเบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เบกเบท orchestration CI / CD เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบฅเบทเบญเบ. เป€เบ›เบปเป‰เบฒเปเบฒเบเปƒเบ™เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบ—เปˆเบฒเบ™เป€เบŠเบฑเปˆเบ™เบเบฑเบ™, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบ Waypoint เบฎเบญเบ‡เบฎเบฑเบš Kubernetes, Docker, Google Cloud Run, AWS ECS เปเบฅเบฐเบญเบทเปˆเบ™เป†เบญเบตเบ.

เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบญเปˆเบฒเบ™โ€‹เบซเบ™เป‰เบฒโ€‹เบซเบงเบฒเบ”โ€‹เบชเบฝเบงโ€‹ เป€เบญเบเบฐเบชเบฒเบ™ เปเบฅเบฐเบŸเบธเปˆเบกเป€เบŸเบทเบญเบเบ—เบตเปˆเบชเบธเบ” เบ•เบปเบงเบขเปˆเบฒเบ‡ เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบชเบฐเปœเบญเบ‡เปƒเบซเป‰เป‚เบ”เบ HashiCorp, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเป€เบšเบดเปˆเบ‡เบ—เบตเปˆเปƒเบเป‰เบŠเบดเบ”เบเบฑเบš Waypoint orchestration เป‚เบ”เบเปƒเบŠเป‰ GitLab CI/CD. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบญเบปเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ Node.js เบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™ AWS ECS เบˆเบฒเบ repository เบ•เบปเบงเบขเปˆเบฒเบ‡.

เบซเบผเบฑเบ‡เบˆเบฒเบ cloning repository, เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบชเบฐเปเบ”เบ‡เบซเบ™เป‰เบฒเบซเบ™เบถเปˆเบ‡:

เบงเบดเบ—เบตเบเบฒเบ™เปƒเบŠเป‰ HashiCorp Waypoint เป€เบžเบทเปˆเบญเบฎเปˆเบงเบกเบกเบทเบเบฑเบš GitLab CI/CD

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™, เป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰เบšเปเปˆเบกเบต Dockerfile. เบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบžเบฒเบฐเบงเปˆเบฒเปƒเบ™เบซเบผเบฑเบเบเบฒเบ™เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบžเบงเบเบกเบฑเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒ Waypoint เบˆเบฐเบ”เบนเปเบฅเบžเบงเบเป€เบ‚เบปเบฒเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ. เปƒเบซเป‰เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป€เบšเบดเปˆเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเปƒเบเป‰เบŠเบดเบ” waypoint.hclเป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เบˆเบฐเป€เบฎเบฑเบ”:

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"
    }
  }
}

เปƒเบ™เป„เบฅเบเบฐเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡, Waypoint เปƒเบŠเป‰ Cloud Native Buildpacks (CNB) เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบกเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เปเบฅเบฐเบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบš Docker เป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เปƒเบŠเป‰ Dockerfile. เปƒเบ™เบซเบผเบฑเบเบเบฒเบ™, เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเบ”เบฝเบงเบเบฑเบ™เบ—เบตเปˆ GitLab เปƒเบŠเป‰เปƒเบ™เบšเบฒเบ‡เบชเปˆเบงเบ™ Auto DevOps เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบ”เบตเบ—เบตเปˆเบˆเบฐเป€เบซเบฑเบ™เบงเปˆเบฒ CNB เบ‚เบญเบ‡ CNCF เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฎเบฑเบšเบฎเบญเบ‡เป€เบญเบปเบฒเบซเบผเบฒเบเบ‚เบถเป‰เบ™เปƒเบ™เบšเบฑเบ™เบ”เบฒเบœเบนเป‰เปƒเบŠเป‰เบญเบธเบ”เบชเบฒเบซเบฐเบเปเบฒ.

เป€เบกเบทเปˆเบญเบฎเบนเบšเบžเบฒเบšเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™, Waypoint เบˆเบฐเบญเบฑเบšเป‚เบซเบฅเบ”เบกเบฑเบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปƒเบ™เบ—เบฐเบšเบฝเบ™ AWS ECR เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เบเบฝเบกเบžเป‰เบญเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡. เป€เบกเบทเปˆเบญเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบชเปเบฒเป€เบฅเบฑเบ”, เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡เปƒเบŠเป‰ เปเบญเบ”เบญเบญเบ™ AWS ECS เป€เบžเบทเปˆเบญเบ™เบณเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบ‚เบปเป‰เบฒเปƒเบ™เบšเบฑเบ™เบŠเบต AWS เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เบˆเบฒเบเบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ‚เบญเบ‡เบ‚เป‰เบญเบ - เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ. เบ‚เป‰เบญเบเป€เบญเบปเบฒ Waypoint เบ—เบตเปˆเบ–เบทเบเบขเบทเบ™เบขเบฑเบ™เปเบฅเป‰เบงเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบšเบฑเบ™เบŠเบต AWS เบ‚เบญเบ‡เบ‚เป‰เบญเบเปเบฅเบฐเบกเบฑเบ™ "เบžเบฝเบ‡เปเบ•เปˆเป€เบฎเบฑเบ”เบงเบฝเบ". เปเบ•เปˆเบˆเบฐเป€เบเบตเบ”เบซเบเบฑเบ‡เบ‚เบถเป‰เบ™เบ–เป‰เบฒเบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เป„เบ›เป€เบเบตเบ™เบเบงเปˆเบฒเบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‚เบ™เบ”เบšเบธเบเบ‚เบญเบ‡เบ‚เป‰เบญเบ? เบซเบผเบทเบ—เบฑเบ™เบ—เบตเบ—เบฑเบ™เปƒเบ”เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ™เบตเป‰เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ—เปเปˆ CI / CD เป‚เบ”เบเบฅเบงเบกเบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบšเปˆเบญเบ™เบ—เบตเปˆเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž, เปเบฅเบฐเบญเบทเปˆเบ™เป†เปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบšเป? เบ™เบตเป‰เปเบกเปˆเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เป€เบฅเบทเปˆเบญเบ‡เบ—เบตเปˆ GitLab CI / CD เป€เบ‚เบปเป‰เบฒเบกเบฒ!

NB เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ” CI / CD เบซเบผเบทเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เปเปˆ, เปƒเบซเป‰เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบเบฑเบšเบซเบผเบฑเบเบชเบนเบ”เปƒเบซเบกเปˆเบ‚เบญเบ‡ Slurm. โ€œCI/CD เปƒเบŠเป‰ Gitlab CI เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡โ€. เบ•เบญเบ™เบ™เบตเป‰เบกเบตเบขเบนเปˆเปƒเบ™เบฅเบฒเบ„เบฒเบ—เบตเปˆเบชเบฑเปˆเบ‡เบเปˆเบญเบ™เปเบฅเป‰เบง.

Waypoint เปƒเบ™ GitLab CI/CD

เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เปƒเบ™ GitLab CI / CD, เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบ™เป„เบŸเบฅเปŒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. .gitlab-ci.yml:

  • เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบฎเบนเบšเบžเบฒเบšเบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบžเบทเปˆเบญเปเบฅเปˆเบ™เบžเบฒเบเปƒเบ™เบกเบฑเบ™. Waypoint เป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปเบˆเบเบขเบฒเบ Linux เปƒเบ”, เบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™ Docker, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเบฑเบšเบฎเบนเบšเบžเบฒเบš Docker เบ—เบปเปˆเบงเป„เบ›.
  • เบ•เปเปˆเป„เบ›, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Waypoint เปƒเบ™เบฎเบนเบšเบ™เบตเป‰. เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เบžเบงเบเป€เบฎเบปเบฒเบญเบฒเบ”เบˆเบฐเป€เบเบฑเบšเบเปเบฒ เบเบฒเบ™เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบš meta เปเบฅเบฐเบšเบฑเบ™เบˆเบธเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ™เบตเป‰เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบ—เปˆเบฒเบ™เป€เบญเบ‡.
  • เบชเบธเบ”เบ—เป‰เบฒเบเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ Waypoint

เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ™เบตเป‰เบญเบฐเบ—เบดเบšเบฒเบเบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ—เปเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เปƒเบŠเป‰เบชเบฐเบ„เบฃเบดเบšเบ—เบตเปˆเบˆเบณเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบณเป€เบฅเบฑเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™, เปเบ•เปˆเป€เบžเบทเปˆเบญเบ™เบณเป„เบ›เปƒเบŠเป‰เบเบฑเบš AWS เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบญเบตเบเบขเปˆเบฒเบ‡เปœเบถเปˆเบ‡: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบšเบฑเบ™เบŠเบต AWS เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เปƒเบ™เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบ Waypoint เบกเบตเปเบœเบ™เบเบฒเบ™ เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเปเบฅเบฐเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”. HashiCorp เบเบฑเบ‡เป„เบ”เป‰เป€เบ›เบตเบ”เป€เบœเบตเบเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบซเบ™เป‰เบฒเบ›เบฐเบ—เบฑเบšเปƒเบˆเปƒเบ™เบญเบฒเบ—เบดเบ”เบ™เบตเป‰ เบŠเบฒเบเปเบ”เบ™. เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเปเบฅเบฐเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡.

เบกเบตเบซเบผเบฒเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบขเบฑเป‰เบ‡เบขเบทเบ™ GitLab CICD เปƒเบ™ AWS. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปƒเบ™ HashiCorp Vault. เบ™เบตเป‰เปเบกเปˆเบ™เบ”เบตเบซเบผเบฒเบเบ–เป‰เบฒเบ—เบตเบกเบ‡เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปƒเบŠเป‰ Vault เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบเบฒเบ™เบขเบฑเป‰เบ‡เบขเบทเบ™. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบ–เป‰เบฒเบ—เบตเบกเบ‡เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เป‚เบ”เบเปƒเบŠเป‰ AWS IAM เปเบกเปˆเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบงเปˆเบฒเบงเบฝเบเบ‡เบฒเบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡เป„เบ”เป‰เบ–เบทเบเบเบฐเบ•เบธเป‰เบ™เบœเปˆเบฒเบ™. เปเบฅเปˆเบ™ GitLab, เป„เบ”เป‰เบฎเบฑเบšเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบœเปˆเบฒเบ™ IAM. เปเบ•เปˆเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบš Waypoint เปเบฅเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบกเบฑเบ™เบขเปˆเบฒเบ‡เป„เบงเบงเบฒ, เบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเบธเบ”เบ—เป‰เบฒเบเบซเบ™เบถเปˆเบ‡ - เป€เบžเบตเปˆเบก AWS API เปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปƒเบชเปˆ. เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก GitLab CI/CD AWS_ACCESS_KEY_ID ะธ AWS_SECRET_ACCESS_KEY.

เป€เบญเบปเบฒเบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบฎเปˆเบงเบกเบเบฑเบ™

เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป€เบ‚เบปเป‰เบฒเปƒเบˆเบเบฒเบ™เบเบงเบ”เบชเบญเบš, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป„เบ”เป‰! เบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ .gitlab-ci.yml เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ™เบตเป‰:

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

เบ—เปˆเบฒเบ™เป€เบซเบฑเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบฎเบนเบšเบžเบฒเบš docker:latest เปเบฅเบฐเบเปเบฒเบ™เบปเบ”เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบ”เบ Waypoint. เปƒเบ™เบšเบปเบ” script เบžเบงเบเป€เบฎเบปเบฒเบ”เบฒเบงเป‚เบซเบฅเบ”เป€เบงเบตเบŠเบฑเบ™เบซเบผเป‰เบฒเบชเบธเบ”เบ‚เบญเบ‡ Waypoint executable เปเบฅเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบกเบฑเบ™เปƒเบ™ /usr/local/bin. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ™เบฑเบเปเบฅเปˆเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบญเบฐเบ™เบธเบเบฒเบ”เปเบฅเป‰เบงเปƒเบ™ AWS, เบ•เปเปˆเป„เบ›เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเปเบฅเปˆเบ™ waypoint init, build, deploy ะธ release.

เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบ‚เบญเบ‡โ€‹เบงเบฝเบโ€‹เบ‡เบฒเบ™โ€‹เบเบฒเบ™โ€‹เบเปเปˆโ€‹เบชเป‰เบฒเบ‡โ€‹เบˆเบฐโ€‹เบชเบฐโ€‹เปเบ”เบ‡โ€‹เปƒเบซเป‰โ€‹เป€เบซเบฑเบ™โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบธเบ”โ€‹เบชเบธเบ”โ€‹เบ—เป‰เบฒเบโ€‹เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰ rolled เบญเบญเบโ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹:

เบงเบดเบ—เบตเบเบฒเบ™เปƒเบŠเป‰ HashiCorp Waypoint เป€เบžเบทเปˆเบญเบฎเปˆเบงเบกเบกเบทเบเบฑเบš GitLab CI/CD

เบˆเบธเบ”เปœเบถเปˆเบ‡เบ‚เบญเบ‡ เบงเบดเบ—เบตเปเบเป‰เป„เบ‚ HashiCorp เบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบ, เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ”เบตเบเบฑเบš GitLab. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡, เบ™เบญเบโ€‹เป€เบซเบ™เบทเบญโ€‹เป„เบ›โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เบชเบฐโ€‹เป€เบซเบ™เบตโ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹, เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบˆเบฑเบ”โ€‹เบงเบฒเบ‡โ€‹เป‚เบ„เบ‡โ€‹เบฅเปˆเบฒเบ‡โ€‹เบžเบทเป‰เบ™โ€‹เบ–เบฒเบ™โ€‹เป‚เบ”เบโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹ Terraform เปƒเบ™ GitLab. เป€เบžเบทเปˆเบญเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž SDLC, เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰ GitLab เบเบฑเบš Vault เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบ„เบงเบฒเบกเบฅเบฑเบšเปเบฅเบฐ tokens เปƒเบ™เบ—เปเปˆ CI / CD, เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เบฅเบงเบกเบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบœเบนเป‰เบšเปเบฅเบดเบซเบฒเบ™เบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบ„เบงเบฒเบกเบฅเบฑเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบœเบฐเบฅเบดเบ”.

เบเบฒเบ™เปเบเป‰เป„เบ‚เบฎเปˆเบงเบกเบเบฑเบ™เบ—เบตเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบ HashiCorp เปเบฅเบฐ GitLab เบŠเปˆเบงเบเปƒเบซเป‰เบšเปเบฅเบดเบชเบฑเบ”เบŠเบญเบเบซเบฒเบงเบดเบ—เบตเบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป‚เบ”เบเบเบฒเบ™เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบ—เบตเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบ‚เบญเบ‡เบ—เปเปˆเบชเบปเปˆเบ‡เปเบฅเบฐเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™. Waypoint เป„เบ”เป‰เบเป‰เบฒเบงเป„เบ›เบญเบตเบเบšเบฒเบ”เบเป‰เบฒเบงเบซเบ™เบถเปˆเบ‡เปƒเบ™เบ—เบดเบ”เบ—เบฒเบ‡เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบซเบงเบฑเบ‡เบงเปˆเบฒเบˆเบฐเบกเบตเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบฎเบนเป‰เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบš Waypoint เบ—เบตเปˆเบ™เบตเป‰, เบเบฑเบ‡เบกเบตเบกเบนเบ™เบ„เปˆเบฒเบเบฒเบ™เบ‚เบธเบ”เบ„เบปเป‰เบ™ เป€เบญเบเบฐเบชเบฒเบ™ ะธ เปเบœเบ™โ€‹เบเบฒเบ™โ€‹เบžเบฑเบ”โ€‹เบ—เบฐโ€‹เบ™เบฒโ€‹ เป‚เบ„เบ‡เบเบฒเบ™. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบฎเบนเป‰เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš เป€เบญเบเบฐเบชเบฒเบ™ GitLab CICD. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบžเบฐเบเบฒเบเบฒเบกเบ—เบธเบเบขเปˆเบฒเบ‡เบ”เป‰เบงเบเบ•เบปเบงเบ—เปˆเบฒเบ™เป€เบญเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒเบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เปƒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ repository เบ™เบตเป‰.

เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เปƒเบˆโ€‹เบซเบผเบฑเบโ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡ CI/CD, เบŠเปเบฒโ€‹เบ™เบดโ€‹เบŠเปเบฒโ€‹เบ™เบฒเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ” intricacies เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เบเบฑเบš Gitlab CI เปเบฅเบฐโ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบ—เบตเปˆโ€‹เบ”เบตโ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบฎเบฝเบ™โ€‹เบงเบดโ€‹เบ”เบตโ€‹เป‚เบญ โ€œCI/CD เปƒเบŠเป‰ Gitlab CI เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡โ€. เป€เบ‚เบปเป‰เบฒโ€‹เบฎเปˆเบงเบกโ€‹เบ™เปเบฒโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒ!

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™