Airflow
Airflow를 컨테이너 기술로 운영하는 방법
- Airflow Operator로 KubernetesPodOperator, DockerOperator를 사용
- Airflow Executor를 KubernetesExecutor, CeleryKubernetesExecutor, LocalKubernetesExecutor로 사용
Executor
Executor의 종류
- Sequential Executor
- default
- Sqlite와 같은 싱글 스레드 DB에서만 사용 가능하다.
- Local Executor
- task들을 Airflow 마스터 노드 안에서 실행한다.
- worker node가 하나이다.
- Celery Executor
- 다수의 worker 노드가 있는 경우 사용된다.
- Celery 큐를 사용해 task들을 worker 노드로 분산해서 실행
- Kubernetes Executor
- Local Kubernetes Executor
- Celery Kubernetes Executor
Docker
Image의 구성 요소
- OS
- 소프트웨어 자체 코드
- 소프트웨어가 필요로 하는 라이브러리
- 파일 시스템 스냅샷
- 환경 변수
- 메타데이터
DOCKER FILE에서 사용하는 변수
DOCKER 명령어
CMD vs ENTRYPOINT
- Container가 시작할 때 실행되어야 하는 명령어를 지정하는데 사용한다.
- DOCKER FILE에서 여러번 실행되면 각각 마지막 것만 사용된다.
- ENTRYPOINT가 우선순위가 더 높다.
- Best Practice는 CMD를 사용하는 것이다.
- CMD는 RUN 뒤에 명령어를 쓰면 override된다.
docker run my-image [cmd2.sh](http://cmd2.sh)
를 하면 cmd2.sh가 실행된다.
- ENTRYPOINT와 CMD를 동시에 쓰면 ENTRYPOINT가 기본 명령어가 되고 CMD가 parameter가 된다.
- 그럼 여기서 또 파라미터로 주면 CMD가 덮어쓰이나?
RUN vs EXEC
- RUN
- 빌드 때 실행되어야 하는 명령어
- RUN apt-get update && apt-get install -y curl
- EXEC
- 이미 만들어진 컨테이너 안에 진입해서 실행하는 명렁어
ARG vs ENV
DockerFile로 이미지 생성하기
FROM node:alpine
COPY . /app
WORKDIR /app
CMD node app.js
Expose
USER