본문 바로가기

분류 전체보기95

CRI-O 환경에서 Podman, Ping, Audit 관련 이슈 해결 가이드 문제 개요환경: Kubernetes 클러스터, CRI-O 컨테이너 런타임증상 1: 컨테이너 내부에서 Podman 실행 불가증상 2: Ping 명령어 실행 시 권한 오류 발생 증상 3: Audit 관련 기능 미작동 및 sudo 사용 시 경고 메시지 출력원인 분석 CRI-O는 containerd에 비해 기본적으로 더 제한된 capabilities를 제공한다.이에 따라 capabilities 부족으로 권한 오류가 발생해 위와 같은 증상들이 나타나게 된다. 아래 명령어를 통해 컨테이너에 적용된 Linux capabilities를 확인할 수 있다. 이를 통해 containerd와 CRI-O의 capabilities 차이를 분석했다.capsh --print ontainerd와 비교할 때 CRI-O에는 아래의 5가지.. 2024. 9. 19.
S3에 XCom 저장하기: XComObjectStorageBackend 설정 가이드 XCom(Cross-communication)은 태스크 간 데이터를 공유하는 기능이다. 기본적으로 XCom 데이터는 Airflow 메타데이터 데이터베이스에 저장되지만, 대용량 데이터를 처리할 때는 이 방식이 제한적일 수 있다. XComObjectStorageBackend을 사용해 XCom을 object storage에 저장하면 이런 제약에서 벗어날 수 있다.  XComObjectStorageBackend 개요 XComObjectStorageBackend는 Apache Airflow의 공식 프로바이더 패키지에 포함된 기능으로 XCom 데이터를 object storage에 저장할 수 있게 해준다.  XComObjectStorageBackend  설정 및 구성 1. 필요한 패키지 설치Amazon Web Ser.. 2024. 9. 16.
Airflow Custom Connection Type 생성 및 Provider 빌드 가이드: hbase provider 개발하기 hbase provider를 빌드하고, hbase custom connection type을 추가하는 방법을 소개한다.이전에 개발한 hbase hook, operator, sensor를 통합해 provider로 빌드한다. 전체 코드는 다음 Git 저장소에 push 되어 있다.git : https://github.com/kyeongseooh/airflow-provider-hbase1. 프로젝트 생성poetry를 사용해 프로젝트를 생성하고, 필요한 의존성을 추가한다. pyproject.toml를 적절하게 수정해야 한다. 프로젝트 생성poetry new airflow-provider-hbasecd airflow-provider-hbase pyproject.toml 파일 수정 및 의존성 추가[tool.poetr.. 2024. 9. 15.
airflow custom sensor 개발 가이드: hbase sensor 개발하기 airflow에서 hbase custom sensor를 개발하는 방법을 소개한다. 이 예제에서는 HBaseRowExistsSensor를 개발하여 특정 row key가 HBase 테이블에 존재하는지 확인한다. 아래 링크에서 개발한 hbase hook을 사용했다. airflow custom hook 가이드 : airflow custom hook 개발 가이드: hbase hook 개발하기 1. Custom Sensor의 구조 custom sensor는 일반적으로 다음과 같은 구조를 가진다. airflow의 BaseSensorOperator를 상속받는다.__init__ 메서드를 정의해 필요한 매개변수를 설정한다.poke 메서드를 구현해 실제 센싱 작업을 수행한다. mode에 poke와 reschedule가 있는.. 2024. 9. 14.
airflow custom operator 개발 가이드: hbase operator 개발하기 airflow에서 hbase custom operator를 개발하는 방법을 소개한다. 이 예제에서는 HBaseBatchPutOperator와 HBaseScanOperator 두 개의 custom operator를 개발하였고, 아래 링크에서 개발한 hbase hook을 사용했다. airflow custom hook 가이드 : airflow custom hook 개발 가이드: hbase hook 개발하기 1. Custom Operator의 구조custom operator는 일반적으로 다음과 같은 구조를 가진다.airflow의 BaseOperator를 상속받는다.__init__ 메서드를 정의해 필요한 매개변수를 설정한다.execute 메서드를 구현해 실제 작업을 수행한다.2. 전체 코드 `dags/includ.. 2024. 9. 12.
airflow custom hook 개발 가이드: hbase hook 개발하기 airflow에서 hbase custom hook을 개발하는 방법을 소개한다. 차후 provider 빌드 시 hbase custom connection type을 추가할 예정이며, 아직 hbase custom connection type은 추가하지 않았기 때문에 generic type을 통해 연결 정보를 추가한다. 전체 코드from airflow.hooks.base import BaseHookfrom typing import Any, Dict, Optionalimport happybaseclass HBaseHook(BaseHook): def __init__( self, *, # 위치 기반 인수를 허용하지 않음 hbase_conn_id: str = "hbase_.. 2024. 9. 12.
Kubernetes에서 Spark 사용하기: spark operator를 이용한 spark on kubernetes 설정 및 사용 방법 spark on k8s 환경을 구축하는 방법과 간단한 사용 방법을 설명한다.  1. Spark Operator 소개 spark operator는 kubernetes 환경에서 spark application의 배포와 관리를 간소화하는 커스텀 컨트롤러이다.crd에 따라 동적으로 driver pod과 executor pod가 실행된다. 주요 구성 요소는 다음과 같다.1. Custom Resource Definitions (CRDs) SparkApplication: 단일 spark application을 정의한다.ScheduledSparkApplication: 주기적으로 실행되는 spark application을 정의한다.2. operatorCRD를 감지하고 필요한 kubernetes 리소스를 생성, 업데이트,.. 2024. 9. 9.
Argocd mail notification 설정: Multiple Sources argocd mail notification 설정을 적용한다. 1. ArgoCD Notifications 템플릿 적용아래 커맨드를 통해 argocd-notifications-cm에 메일 템플릿을 적용한다.kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj-labs/argocd-notifications/stable/catalog/install.yaml ※ 주의기본 제공되는 yaml 파일은 단일 소스 설정만 지원하기에, 멀티소스에서 사용하기 위해서는 argocd-notifications-cm ConfigMap을 수정해야 한다. 수정 없이 멀티 소스 설정에서 사용하면 다음과 같은 오류가 발생한다.time="2024-09-07T15:50:.. 2024. 9. 8.
Kubernetes 환경에서 ArgoCD를 활용한 MLflow Helm 차트 배포: GitOps 및 Private Harbor 활용 Kubernetes 클러스터에서 ArgoCD를 사용하여 MLflow를 배포하는 방법을 설명한다. Helm 차트는 Private Harbor 레지스트리에서 관리되고, 구성 값(values.yaml)은 Git 저장소에서 관리된다.이와 같이 관리할 경우 다양한 환경(개발, 스테이징, 프로덕션 등)에 대한 구성을 쉽게 관리할 수 있고, 환경별로 다른 구성을 적용하면서도 기본 애플리케이션 구조는 일관되게 유지할 수 있다.1. MLflow Helm Chart 다운로드private harbor에 push하기 위해 mlflow helm chart를 다운받는다.helm pull oci://registry-1.docker.io/bitnamicharts/mlflow 파일 다운로드를 확인한다.[root@km helm]# ll.. 2024. 9. 5.
airflow DAG 시각화 및 구조화: Log Grouping, Edge Labels, Task Groups 활용하기 1. Log GroupingLog Grouping을 사용하면 작업 로그를 구조화하여 필요한 정보만 빠르게 확인할 수 있다.import pendulumfrom airflow.decorators import dag, task@dag( schedule="@once", start_date=pendulum.datetime(2024, 8, 10, 3, tz=pendulum.timezone("Asia/Seoul")), catchup=False, max_active_tasks=3, tags=["example", "log grouping"],)def log_group(): @task def task1(): print("::group:: mysql 데이터 추출") .. 2024. 9. 4.
반응형