HashiCorpãæ°ãããããžã§ã¯ããæ«é²ããŸãã
æåéããHashiCorp 㯠Waypoint ããªãŒãã³ãœãŒã¹ãšããŠãªãªãŒã¹ããŠãããå€ãã®ãµã³ãã«ãä»å±ããŠããŸãã ãªãŒã±ã¹ãã¬ãŒã¿ãŒã®ã¬ãã«ã¯ãŠãŒã¶ãŒæ¬¡ç¬¬ã§ãWaypoint ã¯ã©ãããããäžã§çŽæ¥å®è¡ããããéžæãã CI/CD ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ ããŒã«ããå®è¡ã§ããå®è¡å¯èœãã¡ã€ã«ãšããŠæäŸãããŸãã Waypoint 㯠KubernetesãDockerãGoogle Cloud RunãAWS ECS ãªã©ããµããŒãããŠãããããã¢ããªã±ãŒã·ã§ã³ã®ãããã€å ãèªç±ã«éžæã§ããŸãã
çŽ æŽããããã®ãèªãã åŸã
ãªããžããªã®ã¯ããŒã³ãäœæããåŸãXNUMX ããŒãžã衚瀺ããã¢ããªã±ãŒã·ã§ã³ã®æ§é ãèŠãŠã¿ãŸãããã
ãæ°ã¥ãããšæããŸããããã®ãããžã§ã¯ãã«ã¯ 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 ã¯ã¯ã©ãŠã ãã€ãã£ã ãã«ãããã¯ã䜿çšããŸã (
ã€ã¡ãŒãžãæ§ç¯ããããšãWaypoint ã¯ããã AWS ECR ã¬ãžã¹ããªã«èªåçã«ã¢ããããŒãããåºè·ã®æºåãæŽããŸãã ã¢ã»ã³ããªã®æåŸã«ãé
ä¿¡ã¹ãããã§ã¯æ¬¡ã®ãã®ã䜿çšãããŸãã
ç§ã®ã©ãããããããã¯ç°¡åã§ãã AWS ã¢ã«ãŠã³ãã§ãã§ã«èªèšŒãããŠãã Waypoint ãè¿œå ããŸãããããæ£åžžã«æ©èœãããŸããã ããããã©ãããããã®æ ãè¶ ãããå Žåã¯ã©ãããã°ããã§ãããã? ãããšããçŸåšã®çµ±åãã¹ããã»ãã¥ãªã㣠ãã¹ããªã©ãå®è¡ããã CI/CD ãã€ãã©ã€ã³å šäœã®äžéšãšããŠããã®ãããã€ã¡ã³ããèªååãããã§ãããã? ããããGitLab CI/CD ãç»å Žããéšåã§ãã
N.B. CI / CD ã®å®è£ ãèšç»ããŠããå ŽåããŸãã¯ãã€ãã©ã€ã³æ§ç¯ã®ãã¹ã ãã©ã¯ãã£ã¹ã®é©çšãéå§ãããå Žåã¯ãæ°ãã Slurm ã³ãŒã¹ã«æ³šç®ããŠãã ããã
ãGitlab CI ã®äŸã«ããã CI/CDã ã çŸåšãäºçŽäŸ¡æ Œã§ãè³Œå ¥ããã ããŸãã
GitLab CI/CD ã®ãŠã§ã€ãã€ã³ã
GitLab CI/CD ã§ããããã¹ãŠã調æŽããã«ã¯ããã¡ã€ã«ã«äœãå¿
èŠããèŠãŠã¿ãŸããã .gitlab-ci.yml
:
- ãŸããå éšã§å®è¡ããããã®åºæ¬ã€ã¡ãŒãžãå¿ èŠã§ãã Waypoint ã¯ä»»æã® Linux ãã£ã¹ããªãã¥ãŒã·ã§ã³äžã§å®è¡ã§ããŸããå¿ èŠãªã®ã¯ Docker ã®ã¿ã§ãããããæ±çšã® Docker ã€ã¡ãŒãžã䜿çšããŠå®è¡ã§ããŸãã
- 次ã«ããã®ã€ã¡ãŒãžã« Waypoint ãã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã å°æ¥çã«ã¯åéããå¯èœæ§ããããŸã
ã¡ã¿ãã«ãã€ã¡ãŒãž ãã®ããã»ã¹ãèªåã§ã³ã³ããåããŸãã - æåŸã«ããŠã§ã€ãã€ã³ã ã³ãã³ããå®è¡ããŸãã
äžèšã¯ããããã€ãå®è¡ããããã«å¿
èŠãªã¹ã¯ãªãããå®è¡ããããã«ãã€ãã©ã€ã³ãå¿
èŠãšãããã¹ãŠã®ãã®ã§ãããAWS ã«ãããã€ããã«ã¯ããã XNUMX ã€å¿
èŠããããŸããAWS ã¢ã«ãŠã³ãã«ãã°ã€ã³ããå¿
èŠããããŸãã ãŠã§ã€ãã€ã³ãã®èª¬æå
AWS ã§ã® GitLab CICD èªèšŒã«ã¯ããã€ãã®ãªãã·ã§ã³ããããŸãã æåã®ãªãã·ã§ã³ã¯ãçµã¿èŸŒã¿ã® 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 å®è¡å¯èœãã¡ã€ã«ãããŠã³ããŒãããŠã /usr/local/bin
ã ç§ãã¡ã®ã©ã³ããŒã¯ãã§ã« AWS ã§èªå¯ãããŠããã®ã§ãåã«å®è¡ããŸãã waypoint init
, build
, deploy
О release
.
ãã«ã ã¿ã¹ã¯ã®åºåã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãããŒã«ãããšã³ããã€ã³ãã衚瀺ãããŸãã
ãŠã§ã€ãã€ã³ã XNUMX ã€ç®
HashiCorp ãš GitLab ãéçºããå
±åãœãªã¥ãŒã·ã§ã³ã¯ãäžè²«ãããµãã©ã€ ãã§ãŒã³ãšã€ã³ãã©ã¹ãã©ã¯ãã£ç®¡çã確ä¿ããããšã§ãäŒæ¥ãã¢ããªã±ãŒã·ã§ã³ãéçºããæé©ãªæ¹æ³ãèŠã€ããã®ã«åœ¹ç«ã¡ãŸãã Waypoint ã¯æ£ããæ¹åã«åããŠæ°ããªäžæ©ãèžã¿åºãããããžã§ã¯ãã®ãããªãçºå±ã楜ãã¿ã«ããŠããŸãã ãŠã§ã€ãã€ã³ãã«ã€ããŠè©³ããç¥ãããšãã§ããŸã
ãã㪠ã³ãŒã¹ãå®äºãããšãCI / CD ã®ååãç解ããGitlab CI ã®æäœã®åŸ®åŠãªç¹ããã¹ãŠãã¹ã¿ãŒãããã¹ã ãã©ã¯ãã£ã¹ã®é©çšãéå§ã§ããŸãã
åºæïŒ habr.com