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

얼마 전에 Argo Tunnels를 사용하게 되었을 때 놀랐습니다. 로컬 컴퓨터에서 인터넷으로 연결되는 멋진 소프트웨어입니다. 며칠 전에 그것에 대해 썼습니다.



저에게 문제는 관심 기반 학습이 있다는 것입니다. 프로젝트에 관심이 없으면 진행할 수 없습니다. 그래서 포트폴리오를 업데이트하기로 했어요! 그러나 연속 배포, podman 및 Argo 터널을 사용합니다!

이 게시물에서 경험하게 될 것들:


  • podman을 사용한 Gitlab 실행기 설정
  • systemd를 사용한 Cloudflared 터널 설정
  • 컨테이너를 사용하여 Gitlab CI/CD를 사용하여 지속적 배포!!
  • 완전히 루트가 없는 설정 실행

  • Cloudflared 설치 및 설정을 시작하겠습니다.

    시작하기 전에 following을 확인하십시오.

    As of now you need a domain name and you need to change the nameservers to that of Cloudflare, which is a bit irritating to do in case you cannot afford a domain name or you do not wish to use their nameservers. I hope they remove this dependency in the future.



    먼저 Downloads section로 가서 편한 방법을 선택하세요.

    저는 Rocky Linux를 사용하고 있어서 amd64/x86-64 RPM을 다운받았습니다.

     $ wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm
    

    wget가 설치되어 있지 않은 경우 다음을 사용하여 Centos/Rocky Linux에서 설치할 수 있습니다.

    $ sudo yum install -y wget
    or
    $ sudo dnf install -y wget
    


    파일을 다운로드하는 다른 방법은 다음을 확인하십시오link.

    최신 다운로드 장소인 Github releases page에서 직접 다운로드하여 cloudflared를 설치할 수도 있습니다.

    터널을 만들려면 팔로우the docs

    다음을 실행하면 내가 원하는 것이 아닌 글로벌 시스템 서비스가 생성됩니다.

    cloudflared --config config.yaml service install
    


    Tunnel을 만드는 방법은 다음을 참조하십시오.

    내 사용자 디렉토리에 구성을 다음과 같이 만들었습니다.

    .cloudflared/config.yml



    tunnel: Tunnel ID
    credentials-file: /home/leon/.cloudflared/TunnelID.json
    ingress:
            - hostname: leonnunes.dev
              service: http://localhost:8080
            #Catch-all rule, which just responds with 404 if traffic doesn't match any of
              #   # the earlier rules
            - service: http_status:404
    


    이를 시스템 폴더/etc/cloudflared/cloudflared-config.yaml에 복사하고 관련 systemd 구성을 생성합니다.
    ~/.config/systemd/user/cloudflared.service에서 다음을 생성할 수 있습니다.

    [Unit]
    Description=Argo Tunnel
    After=network.target
    
    [Service]
    TimeoutStartSec=0
    Type=notify
    ExecStart=/usr/bin/cloudflared --config /home/leon/.cloudflared/config.yml --no-autoupdate tunnel run
    Restart=on-failure
    RestartSec=5s
    
    [Install]
    WantedBy=multi-user.target default.target
    


    그런 다음 사용

    systemctl --user daemon-reload
    and
    systemctl --user enable --now cloudflared.service
    


    이것이 실행 중인지 확인하려면systemctl --user status cloudflared.service
    cloudflared.service - Argo Tunnel
       Loaded: loaded (/home/leon/.config/systemd/user/cloudflared.service; enabled; vendor preset: enabled)
       Active: active (running) since Thu 2021-09-30 12:26:47 IST; 8min ago
     Main PID: 4689 (cloudflared)
       CGroup: /user.slice/user-1000.slice/[email protected]/cloudflared.service
               └─4689 /usr/bin/cloudflared --config /home/leon/.cloudflared/config.yml --no-autoupdate tunnel run
    
    Sep 30 12:26:46 rk-minikube cloudflared[4689]: 2021-09-30T06:56:46Z INF Settings:
    


    이것이 Cloudflared 설정의 전부입니다.

    이제 podman을 사용하여 Gitlab 러너를 설정해 보겠습니다.

    Gitlab docker documentation은 개요를 제공합니다. 이것이 제가 한 일입니다.

    # Create a volume gitlab-test
    $  podman volume create gitlab-test
    
    # Register the gitlab runner
    $ podman run --rm -it  -v gitlab-test:/etc/gitlab-runner:Z gitlab/gitlab-runner:alpine register --docker-privileged
    
    # I had to give the `--docker-privileged` flag without that it wouldn't let me connect to the docker socket.
    




    gitlab 러너를 시작할 시간입니다.

     $ podman  run -dit --security-opt label=disable  --name gitlab-runner-priv -v /run/user/1000/podman/podman.sock:/var/run/docker.sock -v gitlab-runner-config:/etc/gitlab-runner:Z  gitlab/gitlab-runner:alpine
    


    Important Notes(Security):

    1. Mounting the podman socket, is the equivalent of giving full access to the containers under that user. From a security standpoint this is dangerous so please use a locked-down environment and not a public environment.
    2. --security-opt label=disable means SELinux labelling won't happen, in other words, if you do not do this SELinux will complain that your container isn't supposed to access the podman socket.


    부팅 시 GitLab 실행기를 시작하려면 이렇게 하면 됩니다.

    # change directory to the user.
    $ cd ~
    $ podman generate systemd gitlab-runner-priv| tee .config/systemd/user/gitlab-runner.service
    
    # Enable on boot
    $ systemctl --user enable --now gitlab-runner.service
    
    


    많은 미루는 끝에 이만큼 완료할 수 있었습니다. Gitlab CI/CD 파이프라인을 배포할 파트 2를 계속 지켜봐 주시기 바랍니다.

    좋은 웹페이지 즐겨찾기