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에 대한 변경 사항은 이미 배포된 워크플로우에는 영향을 미치지 않습니다.
프로세스
-
SonataFlowPlatform
CR을 정의합니다. 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
오브젝트의 키입니다.
워크플로우에 대해 생성된 환경 변수를 확인합니다.
다음 예제에서는 이전
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 확장 기능이 자동으로 포함됩니다. 이렇게 하면 지속성 메커니즘과의 호환성이 보장되어 워크플로우 배포 프로세스가 간소화됩니다.