Argo Workflows 로컬에서 실행하기 - 재도전

뚜비·2023년 7월 31일
0

참고 영상
참고 문서
다혜님의 블로그



이번에는 멘토님이 참고 영상과 참고 문서를 통해 argo workflows 환경을 직접 로컬에서 실행해보라는 지령을 주셨다.



Running Locally

Argo workflow를 실행하기 위해서는 2가지 방법이 존재하는데
1. VSCode를 활용하여 Dev-container를 사용하는 방법 (7분 예상)
2. Requirements들을 컴퓨터에 순서대로 직접 설치하는 방법(1시간)


한 팀원 분께서 2가지 방법에 대한 차이를 질문하셨는데 멘토님과 팀원 분이 저렇게 답변을 주셨으니 참고! 그냥 여러가지 필요한 환경세팅을 자동으로 할 것이냐 수동으로 할 것이냐의 차이인듯 하다.



1. Go 환경 설치

예제로 배우는 Go 프로그래밍[Go프로그래밍] Golang 설치 - gopath, goroot란? | 데인트리 라이브러리을 참고하였습니다.
Download and Install에서 OS에 맞게 다운로드를 해주고

설치 시 경로를 선택하는 부분에서 해당 위치로 지정해주었다. 여기서 설정한 부분이 GOROOT가 된다.
default 값으로 C:\Program Files\Go\였는데 해당 위치에 존재하는 경우 계속 폴더 접근 에러가 떠서 위의 위치로 수정해주었다.



명령 프롬포트에서 go version을 확인해주고 정상적으로 설치 되었는지 확인해준다.

Windows > 고급 시스템 설정 > 환경변수 > 사용자 변수 혹은 시스템 변수에 들어가보면 GOPATH 값이 자동으로 설정되어 있는 것을 확인할 수 있는데 이를 내가 원하는 폴더 위치로 바꿔준다. 또한 GOROOT는 GO가 설치된 경로로 추가해준다.


GOROOT와 GOPATH

  • GOPATH
    : Go 언어로 된 프로젝트를 사용하거나 개발할 때 사용할 Working directory를 가리키는 환경변수를 의미한다. 즉 GO 소스코드 및 외부 패키지가 저장되는 장소이다.
  • GOROOT
    GOROOT 위치에는 GO가 실행되기 위한 파일들이 존재하고 실제 GO 명령어 입력시 실행되는 exe 파일을 볼 수 있다.

프롬포트에 go env 명령어를 입력하면 golang의 환경을 확인할 수 있다. 여기서 GOPATHGOROOT의 경로를 확인할 수 있다.



2. Argo workflows 레포 clone

git clone https://github.com/argoproj/argo-workflows.git %GOPATH%/src/github.com/argoproj/argo-workflows

즉 GOPATH의 src 폴더 아래에 github.com 폴더 아래에 argoproj 폴더 아래 argo-workflows 폴더를 생성해서 해당 폴더 안에 git clone을 하던지 위의 명령어를 입력하여 clone을 받는다.



3. Development Container

Dev-container cli를 활용하는 방법에도 2가지가 있다.

1. VSCode extension을 설치 후 실행
2. Dev-container CLI이용 

나는 2번째 방법을 활용해보려고 한다.


수녕님께서 도움을 주셨다. 흙흙...

우선 devcontainer cli를 사용하기 위해 설치를 해줘야 한다.


나는 이미 npm이 설치되어 있기 떄문에 해당 명령어로 바로 devcontainer를 설치했다.

npm install -g @devcontainers/cli

devcontainer <command>

Commands:
  devcontainer up                   Create and run dev container
  devcontainer build [path]         Build a dev container image
  devcontainer run-user-commands    Run user commands
  devcontainer read-configuration   Read configuration
  devcontainer features             Features commands
  devcontainer templates            Templates commands
  devcontainer exec <cmd> [args..]  Execute a command on a running dev container

Options:
  --help     Show help                                                 [boolean]
  --version  Show version number                                       [boolean]

devcontainer 명령어의 경우 위와 같다!



클론 받은 폴더 내부로 이동한 후

devcontainer up --workspace-folder .

위의 명령어를 실행한다. 해당 작업 폴더에서 dev container를 생성하고 실행하라는 뜻인가?!



문제 발생 - /usr/bin/env : 'sh\r' : No such file or directory

onCreateCommand failed with exit code 127. Skipping any further user-provided commands.
Error: Command failed: /bin/sh -c .devcontainer/pre-build.sh


즉 .devcontainer/pre-build.sh 파일에 들어가보면 onCreateCommand 명령어가 있는데 해당 명령어에 개행문자가 포함되어 있는 듯 하다.

  • 해결방법
    즉 운영체제가 다른 이슈로 인해 인식을 못 한것!!

우선 docker destop에 생성된 이미지, 컨테이너 등을 모두 삭제하고 clone 받은 레포도 삭제해주었다.

git config --global core.autocrlf false


즉 해당 git 설정은 LF의 라인엔딩을 CRLF로 바꿔준다고 한다.
설정 후 git 레포를 clone 받고 다시 위의 과정을 반복했다.

onCreateCommand가 잘 실행되었음을 확인할 수 있었다!



문제 발생 - failed to solve executor failed running

1시간동안 진행해도 결과가 안 나오길래 확인해보니 계속 위의 error가 반복해서 실행 중이었다..

해결방범

wsl로 vscode 접속

아놔 npm이랑 devcontainer를 새로 설치해줘야 하나봗

apt-get update 이후 
sudo apt-get install npm

https://kwon-eb.tistory.com/81



2. remote-ssh로 wsl 접속 후 decontainer extension 실행

참고자료
wsl 설치와 vscode 연동
Using Dev Containers in WSL 2

  • WSL 2
    WSL 2는 경량 virtual machine 안에 실제 Linux kernel를 사용하여 Linux 용 windows subsystem에서 새로운 접근 방식을 가져온다.

  • Docker
    The new May 2020 version of Docker Desktop can build containers much faster and consume fewer resources as it leverages WSL 2's dynamic memory allocation.

먼저 Docker와 WSL 활성화를 진행해야 한다.

Docker Desktop > settings(톱니바퀴) > Resources > WSL Integration에서 Enable integration with my default WSL distro를 클릭해준다.


이후 WSL2 엔진과 VScode를 연결해줄 것이다! Ubuntu 터미널을 열고 내가 작업할 소스 코드 폴더에 접근한다.

이후 code . 명령어 visual studio code ide를 연다.
명령어를 입력하였는데도 안 열린다면 VSCODE에서 STRL+SHIFT+P를 입력하고 wsl를 입력하여 reopen folder in WSL을 클릭해도 된다. Linux용 Windows 하위 시스템에서 Visual Studio Code 사용 시작
WSL 2에서 Docker 원격 컨테이너 시작


WSL에는 extension이 아무것도 설치되지 않았음을 알 수 있다. go version을 해보니 go를 설치해야 한다고 한다! 이미 windows에 go가 설치되어 있는데 다른 환경인 친구를 만들어줬음을 알았다.
Remote-SSH는 VSCode에서 ssh를 연결하여 원격지에 있는 컴퓨터에 연결하여 개발할 수 있게 도와주는 확장 기능이다.

새로운 SSH dusruf


remote-ssh 로 wsl로 폴더를 열고 npm install -g @devcontainers/cli를 하려고 했으나

Error: EACCES: permission denied, rename 'path' -> 'dest'

stack overflow에서 나와 같은 문제를 가진 사람을 발견했다!!! 근데 가장 따봉을 많이 받은 답변이 ide를 끄고 다시 명령어를 실행시키라는 것이다. 계속 해봐도 안 된다.. 하.. 계속




Add option to allow running devcontainer inside a WSL2 Docker instance 자료를 확인해보니 VSCode에서 .devcontainer을 열여고 하면 windows 경로 때문에 실패한다는 내용이었다. 그래서 Remote-containers에서 Windows Path를 WSL path로 mount 하라고 한다.

즉 F1 > Remote Containers : Settings for Remote-Containers 에 들어가서

해당 mention을 클릭하면 된다고 한다! 알아서 경로 번역도 해준다고!!
WSL 2에서 Docker 원격 컨테이너 시작
그후 F1 > Remote-Containers : Open Folder in Container로 했는데.. 이전에 나온 에러가 나왔다..

Command failed docker-compose in VScode Devcontainer 에서 보니 Docker Desktop에 가서 settings > General 에 가서 Use Docker Compose V2를 클릭하라고..

profile
SW Engineer 꿈나무 / 자의식이 있는 컴퓨터

0개의 댓글