Repository for dip
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

127 lines
4.1 KiB

# 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
```