728x90 반응형 SMALL App Programming255 [Git] GitHub Action GitHub Action GitHub Action은 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 지속적 통합 및 지속적 배포 (CI/CD) 플랫폼이다. secrets 설정 Github Action을 사용하여 ssh 접속할 때, 민감한 정보나 환경 설정들을 직접 코드에 포함시키지 않고 안전하게 workflow에서 사용할 수 있게 secrets을 설정한다. secrets는 다음과 같이 추가한다. EC2_HOST EC2 : Public IP 주소EC2_USER : ubuntuEC2_SSH_KEY : EC2 키 페어 값 Github Actions Workflow 작성 로컬 환경에서 Github 레포지토리에 push한 commit을 EC2에서 확인할 수 있도록 워크플로우인 yml파일을 작성한다. #.. 2024. 6. 16. [Apache Airflow] 개발 환경 구성 개발 환경 구성 DAG 개발시 서버에서 직접 개발하지 않으며, 일반적으로 git을 활용한 CI/CD 환경을 주로 이용한다. Airflow 서버가 별도로 존재한다고 가정할 때, 코드 개발은 로컬에서 개발 후 완성된 코드를 서버로 배포하는 식으로 진행한다. 다음 명령어로 파이썬 버전을 확인하고 로컬에서 동일한 버전을 설치한다. sudo docker exec -it {스케줄러 컨테이너ID} bashdefault@~: python-V 가상 환경 파이참에서는 프로젝트마다 가상 환경 생성이 가능하다. Git 구성 git 홈페이지에서 프로그램을 OS에 맞게 다운 받고, git 계정을 설정한다. git config --global --edit 그 다음, 코드를 올리기 위한 github Repository 만들고, 레.. 2024. 6. 14. [Apache Airflow] DAG 개발 DAG DAG는 AirFlow에서 실행할 작업들을 순서에 맞게 구성한 워크플로우 (workflow)를 의미하는 방향성 있는 비순환 그래프라고 불린다. 여러 Task가 의존 관계를 통해 연결되어 있으며, 의존 관계는 순환되지 않고 한 방향으로 연결된다. DAG 개발 DAG는 1개 이상의 오퍼레이터로 정의되며 오퍼레이터는 하고자 하는 기능에 대한 설계도라 할 수있다. Task는 오퍼레이터 (클래스)를 통해 생성된 객체로 실제 job을 수행하는 대상이 된다. EC2서버의 /home/ubuntu/dags 디렉토리에 DAG 파일을 다음과 정의한다. /home/ubuntu/홈 디렉토리dags/dag을 모아놓는 디렉토리해당 디렉토리에 dag 파일을 저장해 두면 일정 시간이 지난 후 web에서 확인 가능plugins.. 2024. 6. 14. Apache Airflow Apache Airflow Apache Airflow는 파이썬을 이용해 워크플로우를 만들고 관리할 수 있는 오픈소스 기반 워크플로우 관리 도구이다. 2014년, 에어비앤비에서 만든 워크플로우 관리 솔루션이다. 파이썬으로 제작된 도구이며, 이용자가 워크플로우 생성시에도 파이썬으로 구현하나의 워크플로우는 DAG (Directed Acyclic Graph)이라 부르며, DAG 안에는 1개 이상의 Task가 존재Task간 선후행 연결이 가능하되, 순환되지 않고 방향성을 가짐 (DAG)Cron 기반의 스케줄링모니터링 및 실패 작업에 대한 재실행 기능이 간편 워크플로우를 관리하는 여러 오픈소스 도구 중 가장 인기가 많다. UI로 워크플로우를 만들지 못해 어려우나, 파이썬 언어가 허락하는 한 거의 모든 유형의 파이.. 2024. 6. 14. [AWS] 도커 PostgreSQL 배포 PostgreSQL 이미지 docker image pull postgresdocker image ls PostgreSQL 컨테이너 실행 docker container run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres docker container ls PostgreSQL 컨테이너 내부 docker container exec -it {컨테이너 ID} /bin/bashpsql -U postgresALTER USER postgres WITH PASSWORD 'postgres';CREATE DATABASE ml; \listpostgres=# \qexit 데이터 보관 docker container stop {컨테이너 ID}do.. 2024. 6. 11. [AWS] 도커 컴포즈 배포 도커 컴포즈 (Docker Compose) 도커 컴포즈 (docker compose)는 여러 개의 컨테이너를 가동할 때 사용하는 도커 어플리케이션이다. 도커 컴포즈를 사용하기 위해 docker-compose.yml이라는 YAML 파일을 사용한다. sudo apt-get updatesudo apt-get install docker-compose-plugindocker compose version flasktest 디렉토리 vim requirements.txtscikit-learn==1.5.0flask==3.0.3psycopg2==2.9.9gunicorn==22.0.0vim DockerfileFROM python:3.11.9WORKDIR /usr/src/appCOPY . .RUN python -m pip .. 2024. 6. 11. [AWS] 도커 컨테이너 nginx 배포 디렉토리 생성 docker 디렉토리에서 nginxtest 디렉토리를 생성한다. mkdir nginxtestcd nginxtest/ Dockerfile 생성 nginx를 foreground에서 실행하기 위해 CMD에 -g와 daemon off;를 추가한다. 컨테이너가 background로 실행되므로, nginx를 foreground에서 돌리지 않으면 nginx가 exited된다. vim DockerfileFROM nginx:1.26.0CMD ["nginx", "-g", "daemon off;"] 도커 이미지 빌드 docker image build . -t mynginx01 빌드된 이미지를 확인한다. docker image ls 컨테이너 실행 ocker container run -d mynginx01d.. 2024. 6. 11. [AWS] 도커 컨테이너 배포 파일 구조 확인 mv flaskapp myappmkdir flaskappmv myapp flaskappsudo apt install treetree ./ 라이브러리 버전 확인 pyenv activate py3_11_9pip list | grep -E 'scikit-learn|Flask|gunicorn|psycopg2' requirements 작성 flaskapp 디렉토리에서 requirements를 작성한다. vim requirements.txtscikit-learn==1.5.0flask==3.0.3psycopg2==2.9.9 Dockerfile 파일 생성 마찬가지로, flaskapp 디렉토리에서 Dockerfile를 생성한다. vim DockerfileFROM python:3.11.9WORKDIR .. 2024. 6. 11. [K8s] 크론잡 (CronJob) 크론잡 (CronJob) 크론잡은 일정한 기간마다 잡을 생성하여 수행하는 것으로 정기적이고 반복적인 작업을 만드는데 사용된다. 즉, 반복 일정에 따른 잡을 만든다. 파일 작성 vim job-cronjob02.ymlapiVersion: batch/v1kind: CronJobmetadata: name: cronjob-test02spec: schedule: "*/1 * * * *" jobTemplate: spec: template: spec: containers: - name: nginx-test02 image: nginx:1.25 command: - /bin/sh .. 2024. 6. 9. [K8s] 잡 (Job) 잡 (Job) 잡은 하나 이상의 파드를 생성하고 지정된 수의 파드가 성공적으로 종료될 때까지 계속해서 파드의 실행을 재시도한다. 파일 생성 vim job-cronjob01.ymlapiVersion: batch/v1kind: Jobmetadata: name: job-test01spec: template: spec: containers: - name: nginx-test01 image: nginx:1.25 command: ["echo", "Hello, Kubernetes!"] restartPolicy: Never backoffLimit: 3 잡 실행 kubectl apply -f job-cronjob01.ymlkubectl get jobkube.. 2024. 6. 9. 이전 1 2 3 4 5 6 ··· 26 다음 728x90 반응형 LIST