Add openmetadata chart
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user