# OpenMetadata Dependencies 배포 ## 1. 배포 방법 ### 1) 배포 시 주의 사항 - openmetadata-dependencies는 MySQL, OpenSearch, Airflow를 포함하는 의존성 차트이다. - `openmetadata` 차트보다 먼저 배포되어야 한다. - Airflow DAG 저장 및 로그 볼륨에 `ReadWriteMany`를 지원하는 StorageClass가 필요하다. - MySQL initdbScripts에 정의된 패스워드는 `openmetadata` 차트의 database 연결 설정과 일치해야 한다. ### 2) 배포 방법 ``` sh git clone https://github.com/paasup/dip-catalog.git cd manifests/helm/openmetadata-dependencies/1.12.1 helm upgrade openmetadata-dependencies ./ -f custom-values.yaml --install -n openmetadata --create-namespace ``` --- ## 2. custom-values.yaml 설명 ### 1) MySQL 설정 - OpenMetadata(`openmetadata_db`)와 Airflow(`airflow_db`) 데이터베이스를 초기화 스크립트로 함께 생성한다. | Name | 설명 | 기본값 | | ---- | ---- | ------ | | `mysql.primary.resources` | MySQL Pod의 자원 설정 | `requests: 500m/512Mi, limits: 750m/768Mi` | | `mysql.primary.persistence.size` | MySQL 데이터 볼륨 크기 | `50Gi` | - DB 계정 패스워드 변경 시 `initdbScripts` 수정 ``` yaml mysql: initdbScripts: init_openmetadata_db_scripts.sql: | CREATE DATABASE openmetadata_db; CREATE USER 'openmetadata_user'@'%' IDENTIFIED BY 'openmetadata_password'; # 패스워드 변경 GRANT ALL PRIVILEGES ON openmetadata_db.* TO 'openmetadata_user'@'%' WITH GRANT OPTION; commit; init_airflow_db_scripts.sql: | CREATE DATABASE airflow_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'airflow_user'@'%' IDENTIFIED BY 'airflow_pass'; # 패스워드 변경 GRANT ALL PRIVILEGES ON airflow_db.* TO 'airflow_user'@'%' WITH GRANT OPTION; commit; ``` > **주의**: `initdbScripts`는 MySQL 최초 초기화 시에만 실행된다. 패스워드를 변경하려면 PVC를 삭제하고 재배포하거나 MySQL에 직접 접속하여 변경해야 한다. - MySQL 리소스 Preset 참고 | Preset | requests cpu | requests memory | limits cpu | limits memory | | ------ | ------------ | --------------- | ---------- | ------------- | | small | 500m | 512Mi | 750m | 768Mi | | medium | 500m | 1024Mi | 750m | 1536Mi | | large | 1.0 | 2048Mi | 1.5 | 3072Mi | ### 2) OpenSearch 설정 | Name | 설명 | 기본값 | | ---- | ---- | ------ | | `opensearch.opensearchJavaOpts` | OpenSearch JVM 힙 메모리 설정 | `"-Xmx1g -Xms1g"` | | `opensearch.persistence.size` | OpenSearch 데이터 볼륨 크기 | `30Gi` | | `opensearch.resources` | OpenSearch Pod의 자원 설정 | `requests: 100m/256M, limits: 2000m/2048M` | - OpenSearch JVM 힙은 `resources.limits.memory`의 절반 이하로 설정을 권장한다. ``` yaml opensearch: opensearchJavaOpts: "-Xmx1g -Xms1g" resources: requests: cpu: "100m" memory: "256M" limits: cpu: "2000m" memory: "2048M" ``` ### 3) Airflow 설정 - OpenMetadata 전용 Airflow ingestion 이미지(`docker.getcollate.io/openmetadata/ingestion`)를 사용한다. #### 3.1) 리소스 설정 - 기본값은 `{}`(무제한)으로 설정되어 있으며, 운영 환경에서는 적절한 리소스 제한을 설정한다. ``` yaml airflow: workers: replicas: 2 resources: requests: cpu: "500m" memory: "1Gi" limits: cpu: "1000m" memory: "2Gi" scheduler: resources: {} webserver: resources: {} apiServer: resources: {} triggerer: resources: {} ``` #### 3.2) 볼륨 설정 - DAG 저장 공간과 로그 저장 공간에 `ReadWriteMany` StorageClass가 필요하다. ``` yaml airflow: dags: persistence: enabled: true storageClassName: "" # ReadWriteMany를 지원하는 StorageClass 이름으로 변경 accessMode: ReadWriteMany size: 1Gi logs: persistence: enabled: true storageClassName: "" # ReadWriteMany를 지원하는 StorageClass 이름으로 변경 size: 1Gi ```