5장. 워크플로우 지속성 관리


관계형 데이터베이스에 지속성을 사용하고 워크플로우 컨텍스트를 저장하도록 SonataFlow 인스턴스를 구성할 수 있습니다.

기본적으로 Kubernetes Pod는 상태 비저장입니다. 이 동작은 Pod를 다시 시작할 때마다 애플리케이션 상태를 유지해야 하는 워크로드에 문제가 발생할 수 있습니다. OpenShift Serverless Logic의 경우 기본적으로 Pod를 다시 시작하면 워크플로우 컨텍스트가 손실됩니다.

이러한 시나리오에서 워크플로우 복구를 보장하려면 워크플로우 런타임 지속성을 구성해야 합니다. SonataFlowPlatform CR(사용자 정의 리소스) 또는 SonataFlow CR을 사용하여 이 구성을 제공합니다. 구성 범위는 사용하는 리소스에 따라 다릅니다.

5.1. SonataFlowPlatform CR을 사용하여 지속성 구성

SonataFlowPlatform CR(사용자 정의 리소스)은 네임스페이스 수준에서 지속성 구성을 활성화합니다. 이 접근 방식은 네임스페이스에 배포된 모든 워크플로우에 자동으로 지속성 설정을 적용합니다. 특히 네임스페이스의 여러 워크플로우가 동일한 애플리케이션에 속하는 경우 리소스 구성을 단순화합니다. 이 구성은 기본적으로 적용되지만 네임스페이스의 개별 워크플로우는 SonataFlow CR을 사용하여 재정의할 수 있습니다.

OpenShift Serverless Logic Operator는 이 구성을 사용하여 지원 서비스에 대한 지속성을 설정합니다.

참고

지속성 구성은 워크플로우 배포 시에만 적용됩니다. SonataFlowPlatform CR에 대한 변경 사항은 이미 배포된 워크플로우에는 영향을 미치지 않습니다.

프로세스

  1. SonataFlowPlatform CR을 정의합니다.
  2. SonataFlowPlatform CR 사양 아래의 지속성 필드에 지속성 설정을 지정합니다.

    apiVersion: sonataflow.org/v1alpha08
    kind: SonataFlowPlatform
    metadata:
      name: sonataflow-platform-example
      namespace: example-namespace
    spec:
      persistence:
        postgresql:
          serviceRef:
            name: postgres-example 1
            namespace: postgres-example-namespace 2
            databaseName: example-database 3
            port: 1234 4
          secretRef:
            name: postgres-secrets-example 5
            userKey: POSTGRESQL_USER 6
            passwordKey: POSTGRESQL_PASSWORD 7
    1
    PostgreSQL 데이터베이스에 연결하는 Kubernetes 서비스의 이름입니다.
    2
    선택사항: PostgreSQL 서비스의 네임스페이스입니다. 기본값은 SonataFlowPlatform 의 네임스페이스입니다.
    3
    워크플로 데이터를 저장하기 위한 PostgreSQL 데이터베이스의 이름입니다.
    4
    선택 사항: PostgreSQL 서비스에 연결할 포트 번호입니다. 기본값은 5432 입니다.
    5
    데이터베이스 인증 정보가 포함된 Kubernetes 시크릿의 이름입니다.
    6
    데이터베이스 사용자 이름이 포함된 Secret 오브젝트의 키입니다.
    7
    데이터베이스 암호가 포함된 Secret 오브젝트의 키입니다.
  3. 워크플로우에 대해 생성된 환경 변수를 확인합니다.

    다음 예제에서는 이전 SonataFlowPlatform 구성으로 배포된 example-workflow 라는 워크플로에 대해 생성된 환경 변수를 보여줍니다. 이러한 구성은 특히 지속성과 관련이 있으며 OpenShift Serverless Logic Operator에 의해 관리됩니다. 이러한 설정을 적용한 후에는 수정할 수 없습니다.

참고

SonataFlowPlatform 지속성을 사용하면 모든 워크플로우가 워크플로우 이름과 같은 PostgreSQL 스키마 이름을 사용하도록 구성됩니다.

env:
  - name: QUARKUS_DATASOURCE_USERNAME
    valueFrom:
      secretKeyRef:
        name: postgres-secrets-example
        key: POSTGRESQL_USER
  - name: QUARKUS_DATASOURCE_PASSWORD
    valueFrom:
      secretKeyRef:
        name: postgres-secrets-example
        key: POSTGRESQL_PASSWORD
  - name: QUARKUS_DATASOURCE_DB_KIND
    value: postgresql
  - name: QUARKUS_DATASOURCE_JDBC_URL
    value: >-
      jdbc:postgresql://postgres-example.postgres-example-namespace:1234/example-database?currentSchema=example-workflow
  - name: KOGITO_PERSISTENCE_TYPE
    value: jdbc

이 지속성 구성이 있는 경우 OpenShift Serverless Logic Operator는 미리 보기 또는 gitops 프로필을 사용하여 이 네임스페이스에 배포된 모든 워크플로우를 구성하여 관련 JDBC 연결 매개변수를 환경 변수로 삽입하여 PostgreSQL 데이터베이스와 연결합니다.

참고

PostgreSQL은 현재 지속성을 위해 지원되는 유일한 데이터베이스입니다.

프리뷰 프로필을 사용하는 SonataFlow CR 배포의 경우 OpenShift Serverless Logic 빌드 시스템에는 지속성 활성화에 필요한 특정 Quarkus 확장 기능이 자동으로 포함됩니다. 이렇게 하면 지속성 메커니즘과의 호환성이 보장되어 워크플로우 배포 프로세스가 간소화됩니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.