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