삽질/Airflow 12

google spreadsheets를 airflow에서 읽어오기

https://console.cloud.google.com/apis/credentials 프로젝트 선택 > 새 프로젝트 프로젝트 선택에서 생성한 프로젝트로 변경 > 사용자 인증 정보 > 서비스 계정 서비스 계정 > 생성한 계정 클릭 > 키 > 키 추가 > 새 키 만들기 > JSON JSON 파일이 받아짐. https://console.cloud.google.com/welcome 프로젝트 선택 API 및 서비스 > 라이브러리 sheet 검색 하여 구글시트 사용 drive 검색 하여 구글드라이브 사용 구글 드라이브에서 스프레드 만들고 공유에 프로젝트 생성하면서 구글에서 주는 이메일 주소 넣고 편집 권한으로 추가. 일단 커넥션 정보 등록. 내가 쓰는 에어플로우 환경은 K8s인데 JSON 파일 위치 넣고 적기가..

DEBUG:paramiko.transport:NOTE: you may use the 'disabled_algorithms' SSHClient/Transport init kwarg to disable that or other algorithms if your server does not support them!

DEBUG:paramiko.transport:Trying discovered key b'58487bf9ac4c8ec0d6198dfebea915e8' in /root/.ssh/id_rsa DEBUG:paramiko.transport:userauth is OK DEBUG:paramiko.transport:Finalizing pubkey algorithm for key of type 'ssh-rsa' DEBUG:paramiko.transport:Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa'] DEBUG:paramiko.transport:Server did not send a server-sig-algs list; defaulting..

docker-compose에 pip로 clickhouse-driver 0.2.4+ 설치 안 됨.

docker-compose.yaml에서 _PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:- kafka-python==2.0.2 clickhouse-driver==0.2.6} 추가로 설치한 pypi 적고 파드 올리려는데 파드가 안 올라가서 docker logs로 로그를 봄. gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/usr/local/include/python3.7m -c lib/zoneinfo_module.c -o build/temp.linux-aarch64-cpython-37/lib/zoneinfo_module.o -std=c99 e..

airflow 2에서 variable, connection 등록자(소유자)만 보게 하기

postgresql 기준으로 아래처럼 owners 컬럼을 추가한다. (varchar 2000인 건, dag 테이블에 owners랑 동일하게 해서 그렇다. 나처럼 모델 파일 수정을 나중에 하는 경우에만 추가하면 된다. 모델 파일 수정하고 에어플로우를 띄우면 생성 되어 있음.) alter table variable add column owners character varying(2000); alter table connection add column owners character varying(2000); airflow/models/variable.py airflow/models/connection.py 위 두 개 파일에 owners를 추가한다. 코드 보면 대충 뭘 넣어야 될지 보임. 내 경우엔 웹에서만 부..

Airflow 2버전에서 한글이 있는 DAG이 등록 안 되는 문제

로그를 봤으면 금방 찾았을 건데 정신이 없어서 한글이 문제라는 걸 아는 것도 시간이 좀 걸렸다. 파이썬 오류로 보면 UnicodeEncodeError...가 나올 건데, 이래저래 찾아보니 sql_engine_encoding 옵션을 쓰라거나 sql_alchemy_conn에 charset을 쓰라거나 하는 얘기가 있었지만, helm chart로 설치해서 예전 버전에 있던 옵션들은 존재하지 않았다. https://github.com/apache/airflow/issues/28798 Processor unable to parse DAG with non english characters · Issue #28798 · apache/airflow Apache Airflow version Other Airflow 2 v..

airflow 2버전에서 filter_by_owner 사용하기

계정 만들어서 테스트 하다가 오너를 분명 다른 계정으로 해놨는데 나오길래 찾아보니 filter_by_owner 설정을 하면 된다고 하길래 설정에서 찾아보니 없음... 2버전에서는 없어졌다고 한다. role설정으로 처리가 가능하겠지 했는데 해당 role에 DAG를 하나씩 넣어줘야 해서 사람 할 짓이 아닌 거 같았다. API로 자동화를 할까 했다가 너무 비효율적이라서 그냥 소스 수정하기로 함. 버전에 맞게 에어플로우 저장소에서 가져와도 되긴 하는데, 혹시나 해서 실제 쓰는 걸 가져오기로 함. airflow k8s helm으로 설치를 한 거라 webserver pod 들어가서 찾아봄. /home/airflow/.local/lib/python3.7/site-packages/airflow/www/views.py ..

airflow k8s (helm) webserver pod 80포트 변경시 안 되는 증상

기본 포트인 8080로 띄우고 업스트림을 8080로 잡았는데, 접근 자체가 안 돼서 확인을 해보니 회사에서 쓰는 건 80, 443만 쓸 수 있었다. 왜 이러나 하다가 결국 포트를 바꾸기로 함. values.yaml에서 포트를 80으로 바꾸고 적용 했는데, webserver pod가 계속 재시작 함. 찾아보니 내부에서는 8080을 쓰고 그걸 구니콘을 통해 쓰는 거 같았다. 그래서 80으로 올리면 구니콘이랑 같이 80을 쓰려고 하니까 안 되는 거. https://github.com/apache/airflow/issues/16039

airflow k8s(helm) pip 패키지 설치 추가

helm으로 airflow 설치 후 dag 작성하고 테스트를 하려는데 kafka-python을 설치해야 했다. 예제로 mariadb > kafka로 데이터를 넣는 걸 작성하려고 했는데, 문제는 이걸 비개발자가 chatgpt만 사용해서 dag을 작성할 수 있게 하는 게 목표라서 미리 PyPI인 kafka-python을 설치해야 했다. values.yaml에 있는 extraPipPackages를 사용 했는데 설치가 안 됐다. https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/configuration/extra-python-packages.md GitHub - airflow-helm/charts: The User-Community..

GitLab, Airflow 연동

1. 깃랩 연동을 위해 계정 정보 등록 apiVersion: v1 kind: Secret metadata: name: git-credentials namespace: airflow type: Opaque data: GIT_SYNC_USERNAME: {아이디 base64인코딩} GIT_SYNC_PASSWORD: {비번 base64인코딩} 적용 kubectl apply -f airflow_gitlab_secret.yaml 2. airflow gitsync 설정 변경 values.yaml 수정 # Git sync dags: persistence: # Annotations for dags PVC annotations: {} # Enable persistent volume for storing dags enabl..

airflow k8s (helm) 설치

마땅히 할만한 qa서버를 못 구해서 다른 분들처럼 걍 로컬에서 VM에 올리기로 함. VM은 최소 CPU 2개, RAM 2기가, 하드 20기가 필요. (아니면 실행이 안 됨.) 네트워크 설정은 아래 내용 참고 https://sooonworld.tistory.com/17 위 내용대로 했으면, ssh 접속은 192.168.11.3으로 하면 됨. 1. K8s 설치 https://kubernetes.io/ko/docs/tasks/tools/install-kubectl-linux/ 리눅스에 kubectl 설치 및 설정 시작하기 전에 클러스터의 마이너(minor) 버전 차이 내에 있는 kubectl 버전을 사용해야 한다. 예를 들어, v1.27 클라이언트는 v1.26, v1.27, v1.28의 컨트롤 플레인과 연동될..

반응형