재미를 위해 Argo Tunnels 및 컨테이너로 간단한 포트폴리오 배포 🚀 - 2부

자 이제 드디어 1부가 끝났으니 2부입니다!

이제 Cloudflare Argo 터널과 Gitlab 러너가 실행 중이어야 합니다.

$ podman ps
CONTAINER ID  IMAGE                                  COMMAND               CREATED     STATUS                PORTS       NAMES
31f46243cbe9  docker.io/gitlab/gitlab-runner:alpine  run --user=gitlab...  8 days ago  Up About an hour ago              gitlab-runner

$ systemctl --user status cloudflared
Loaded: loaded (/home/leon/.config/systemd/user/cloudflared.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2021-10-10 14:51:26 IST; 1h 8min ago


Gitlab CI/CD가 작동하려면 프로젝트의 루트 폴더에 .gitlab-ci.yml 를 추가해야 합니다. 이것은 주요 성분과 같습니다.

이것이 내 .gitlab-ci.yml의 모습입니다.

stages:
  - publish
  - deploy
variables:
  TAG_LATEST: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest
  TAG_COMMIT: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHORT_SHA
# Begin building the image
publish:
  image: quay.io/podman/stable:latest
  stage: publish
  tags:
    - publish
  script:
    - podman build -t $TAG_COMMIT -t $TAG_LATEST .
    - podman login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
    - podman  push $TAG_COMMIT
    - podman push $TAG_LATEST

# Deployment
deploy:
  image: alpine:latest
  stage: deploy
  tags:
    - deployment
  before_script:
    - apk update && apk add openssh-client
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - eval $(ssh-agent -s)
    - echo "${PK_KEY}" |tr -d '\r' | ssh-add -
    - ssh-keyscan $SERVER_IP

  script:
    - ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "podman login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY"
    - ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "podman pull $TAG_COMMIT"
    - ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "podman container rm -f $WEB_NAME || true"
    - ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "podman run -d -p 8080:80 --name $WEB_NAME $TAG_COMMIT"
  environment:
    name: production
    url: https://portfolio.afro-coder.com/
  # Run only on the main branch
  only:
    - main


이제 여기에서 몇 가지 중요한 변수에 대해 살펴보겠습니다. 이러한 변수는 Gitlab 저장소(개별 저장소) => 설정 => CI/CD => 변수에서 정의해야 합니다.

Make sure you mask the important and sensitive variables, and protect them so that they do not show up in your logs,
your username also needs to be longer than 4 chars to mask it and also meet their RegEx criteria


  • $SERVER_USER - 사용자의 SSH 로그인입니다.
  • $SERVER_IP - 이러한 컨테이너를 실행할 VM
  • $WEB_NAME - 유지하려는 컨테이너 이름
  • $PK_KEY - 서버에 대한 SSH에 사용되는 개인 키입니다. ssh-keygen를 사용하여 키를 생성하고 공개 키를 .ssh/authorized_keys 파일
  • 에 추가할 수 있습니다.

    Gitlab 변수에 대한 추가 설명서를 찾을 수 있습니다here.

    이제 이 파일을 저장소에 커밋하십시오.

    git add .gitlab-ci.yml
    git commit -s -m "Added Gitlab CI"
    git push -u
    


    If your gitlab CI/CD doesn't run after pushing it to the main branch re-check the branch name
    and the tags you've given your runner, they should match the one in the .gitlab-ci.yml file



    빌드가 성공적으로 진행되면 다음이 표시되어야 합니다.





    파이프라인 빌드 후 컨테이너는 호스트에서 실행되어야 합니다.

    $ podman ps
    CONTAINER ID  IMAGE                                                     COMMAND               CREATED         STATUS             PORTS                 NAMES
    31646243cbe9  docker.io/gitlab/gitlab-runner:alpine                     run --user=gitlab...  8 days ago      Up 16 minutes ago                        gitlab-runner-priv
    4930b205caa1  registry.gitlab.com/leon9923/new-portfolio/main:c2054av4  httpd-foreground      15 minutes ago  Up 15 minutes ago  0.0.0.0:8080->80/tcp  portfolio.afro-coder.com
    


    이제 자체 호스팅 루트리스(그러나 올바르게 보호되지 않으면 여전히 안전하지 않습니다.) gitlab CI/CD with podman 및 Argo Tunnels가 있고 작동합니다!



    내 다음 목표는 도커 인터페이스 없이 podman을 사용하는 gitlab용 사용자 지정 실행기를 만드는 것입니다. 읽어 주셔서 감사합니다!

    좋은 웹페이지 즐겨찾기