>백엔드 개발 >Golang >Kontroler 소개: DAG용 Kubernetes 예약 엔진

Kontroler 소개: DAG용 Kubernetes 예약 엔진

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-22 15:59:23740검색

컨트롤러란 무엇입니까?

Kontroler는 DAG(방향성 비순환 그래프) 관리를 단순화하도록 설계된 오픈 소스 Kubernetes 스케줄링 엔진입니다. Kontroler를 사용하면 YAML에서 워크플로를 정의하고, 작업을 컨테이너화된 작업으로 실행하고, 선택적 웹 기반 UI를 통해 시각화할 수도 있습니다. 일정에 따라 워크플로를 실행해야 하거나 실시간 이벤트에 응답해야 하는 경우 Kontroler는 유연한 Kubernetes 기반 솔루션을 제공합니다.

그러나 Kontroler는 현재 알파 상태라는 점을 주의해야 합니다. 실험 및 프로토타입 제작에 이상적이지만 아직 프로덕션 용도로 사용할 준비가 되지 않았을 수 있습니다. 사이드 프로젝트로 Kontroler는 지원을 제공하지 않으므로 사용자 책임하에 프로덕션에서 사용하십시오!

GitHub 저장소를 확인하고 싶다면 여기를 확인하세요: https://github.com/GreedyKodoDragon/Kontroler

왜 컨트롤러를 사용하나요?

Kubernetes에서 워크플로를 관리하는 것은 어려울 수 있습니다. Kubernetes는 CronJobs 및 Jobs와 같은 강력한 기본 요소를 제공하지만 종속성, 재시도 및 동적 트리거를 사용하여 복잡한 워크플로를 조정하려면 사용자 지정 스크립트나 외부 도구가 필요한 경우가 많습니다. Kontroler는 DAG(방향성 비순환 그래프)로 워크플로를 정의, 예약 및 관리하는 Kubernetes 기반 솔루션을 제공하여 이 프로세스를 단순화합니다.

Kontroler가 돋보이는 이유는 다음과 같습니다.

1. YAML을 사용한 Gitops DAG 관리

Kontroler를 사용하면 간단한 YAML 파일을 사용하여 작업, 종속성, 재시도 논리, 조건부 실행을 포함한 전체 워크플로를 정의할 수 있습니다. 이 접근 방식을 사용하면 워크플로를 선언적이고 버전 제어하며 팀 간에 쉽게 공유할 수 있습니다.

Helm 차트로 래핑하고 ArgoCD 또는 FluxCD와 같은 자동화된 배포 시스템을 사용하면 GitOps 워크플로 내에서 DAG가 관리됩니다.

2. 이벤트 기반 및 예약된 워크플로 지원

정기적인 일정(예: CronJobs)으로 실행하기 위한 워크플로가 필요하거나 실시간 트리거(예: 대기열의 메시지)에 반응해야 하는 경우 Kontroler가 도와드립니다. 두 가지 스케줄링 패러다임을 완벽하게 통합하여 광범위한 사용 사례에 다용도로 사용할 수 있습니다.

Kontroler는 DagRuns(Kontroler가 모니터링할 수 있는 사용자 정의 리소스 정의(CRD))를 사용하여 작동합니다. DAG 실행을 실행하려면 간단히 DagRun을 생성하면 Kontroler가 실행을 관리합니다. 이 기능을 컨트롤러 외부에 노출함으로써 Kontroler는 외부 시스템과의 원활한 통합을 가능하게 합니다. 아래 DagRun의 예를 참조하세요.

apiVersion: kontroler.greedykomodo/v1alpha1
kind: DagRun
metadata:
  labels:
    app.kubernetes.io/name: dagrun
    app.kubernetes.io/instance: dagrun-sample
  name: dagrun-sample
spec:
  dagName: dag-sample
  parameters:
    - name: first
      fromSecret: secret-name-new
    - name: second
      value: value_new

선택적으로 매개변수를 포함하여 DAG의 이름만 제공하면 됩니다. 매개변수는 지정되지 않은 경우 기본값을 사용합니다.

3. 컨테이너와 원활하게 통합됩니다.

Kubernetes 기반 애플리케이션인 Kontroler는 플랫폼의 장점을 활용합니다. 간단한 스크립트부터 복잡한 애플리케이션까지 Kontroler의 컨테이너 우선 설계를 통해 모든 워크로드를 DAG에 쉽게 통합할 수 있습니다.

노력의 중복을 더욱 줄이기 위해 작업에 대한 지원을 CRD로 추가하고 있습니다.

4. 더 나은 가시성을 위한 선택적 UI 제공

YAML은 코드형 인프라에 탁월하지만 워크플로를 시각화하고 실행을 추적하면 디버깅과 최적화를 크게 단순화할 수 있습니다. Kontroler는 DAG 생성 및 모니터링을 위한 선택적인 웹 기반 UI를 제공하여 팀에게 워크플로를 관리하는 직관적인 방법을 제공합니다.

Introducing Kontroler: A Kubernetes Scheduling Engine for DAGs

위 스크린샷에는 다음 내용이 표시됩니다.

  • 작업 간 연결
  • DagRun에서는 상태가 표시됩니다
  • 네트워크를 클릭하면 Pod 결과

내부적으로 이 기능은 그래프 생성을 위한 오픈 소스 프로젝트인 vis-network를 통해 구동됩니다. 여기에서 GitHub 저장소를 찾을 수 있습니다. 처음에 우리는 자체 그래프 도구를 개발했지만 확장하기 어렵고 복잡한 그래프를 읽기 쉽게 만드는 것이 어려웠습니다. 그 결과 우리는 이 오픈 소스 솔루션을 채택했습니다.

5. 고급 구성을 위한 유연한 포드 템플릿

Kontroler의 포드 템플릿을 사용하면 비밀, PVC, 노드 선호도, 보안 컨텍스트 등과 같은 고급 Kubernetes 기능으로 작업을 사용자 정의할 수 있습니다. 이를 통해 작업 실행 방법을 세밀하게 제어할 수 있어 클러스터의 특정 요구 사항과의 호환성이 보장됩니다.

데이터스토어의 유연성

워크플로 관리의 주요 과제 중 하나는 기본 인프라가 필요에 따라 확장될 수 있는지 확인하는 것입니다. Kontroler는 팀이 DAG를 보다 쉽게 ​​관리하고 자세한 실행 로그를 캡처할 수 있도록 유연한 데이터베이스 지원 및 로깅 기능을 제공합니다. 가벼운 설정에서 작업하든 보다 강력한 생산 환경에서 작업하든 Kontroler는 귀하의 필요에 맞는 옵션을 제공합니다.

SQLite(기본 소규모)

소규모 설정이나 개발 중에는 SQLite가 Kontroler에서 사용되는 기본 데이터베이스입니다. 간단하고 가벼우며 많은 구성이 필요하지 않습니다. 방금 시작했거나 테스트 목적으로 Kontroler를 실행하는 경우 SQLite는 추가 데이터베이스 설정 없이 "즉시" 작동하므로 편리한 선택입니다.

SQLite를 사용하려는 경우 배포를 추가로 변경할 필요가 없습니다. 설치 지침을 따르기만 하면 나머지는 Kontroler가 처리해 드립니다.

PostgreSQL(프로덕션/대규모용)

대규모 프로덕션 수준 배포의 경우 PostgreSQL은 DAG 및 DagRun 저장을 위한 권장 데이터베이스입니다. Kontroler는 PostgreSQL을 사용하여 대용량 워크플로 데이터를 처리하는 데 필요한 더 높은 성능, 확장성 및 안정성을 제공합니다. Kontroler는 PostgreSQL 16 이상과 호환됩니다

로그 수집

많은 Kubernetes 사용자에게 중앙 집중식 로그 스토리지는 관찰 가능성과 문제 해결을 위한 중요한 요구 사항입니다. Kontroler는 로그 저장을 위해 Amazon S3와 원활하게 통합되므로 DAG 실행에서 로그를 쉽게 수집, 저장 및 분석할 수 있습니다. 이러한 통합을 통해 자세한 로그를 캡처하고, 감사를 위해 장기간 보관하고, 문제가 발생할 경우 사후 분석에 사용할 수 있습니다.

비용 절감을 위해 MinIO로 테스트하고 있지만 내부적으로는 AWS S3 API를 사용하며 IAM 속성을 감지하여 S3 버킷에 대한 액세스 권한을 부여할 수 있어야 합니다.

최종 발언

Kontroler를 확인해 보시기 바랍니다! 여기에서 찾을 수 있습니다: https://github.com/GreedyKomodoDragon/Kontroler.

아직 알파 버전이지만 Kontroler는 Kubernetes 운영을 간소화하려는 팀에게 상당한 잠재력을 갖고 있습니다. 진화함에 따라 Kontroler는 Kubernetes에서 워크플로를 조정하는 강력한 도구가 되어 팀이 복잡한 프로세스를 쉽게 자동화하는 데 필요한 안정성과 확장성을 제공하는 것을 목표로 합니다.

Kontroler는 지속적으로 개선되고 있으니 향후 업데이트를 계속 지켜봐주세요! 프로젝트에 기여하고 싶다면 모든 형태의 기여를 환영합니다.

위 내용은 Kontroler 소개: DAG용 Kubernetes 예약 엔진의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.