[MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• : Airflow-MLflow-FastAPI (Helm)]

๐Ÿงฉ ์‹ค์ „ ์‹œ๋‚˜๋ฆฌ์˜ค ๊ธฐ๋ฐ˜ ๊ตฌ์„ฑ ๋ฐฐ๊ฒฝ ์ด ํ”„๋กœ์ ํŠธ๋Š” ๋‹จ์ˆœ ์‹ค์Šต์„ ๋„˜์–ด์„œ, ์‹ค์ œ ๋ฐœ์ƒํ•˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ MLOps ์ธํ”„๋ผ ๊ตฌ์ถ•์„ ๋ชฉํ‘œ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ชจ๋ธ ์‹คํ—˜ ๊ฒฐ๊ณผ๊ฐ€ ๋’ค์„ž์—ฌ ์ถ”์ ์ด ์–ด๋ ค์šด ๋ฌธ์ œ โ†’ MLflow Tracking ์„œ๋ฒ„ + PostgreSQL ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ ๊ตฌ์„ฑ ๋ชจ๋ธ ํŒŒ์ผ ๋ฐ ๋กœ๊ทธ๊ฐ€ ๋กœ์ปฌ์—๋งŒ ์ €์žฅ๋˜์–ด ํ˜‘์—… ๋ฐ ์žฌํ˜„์„ฑ์ด ๋–จ์–ด์ง€๋Š” ๋ฌธ์ œ โ†’ S3 ๊ธฐ๋ฐ˜ artifact store ๊ตฌ์„ฑ + pyfunc ๊ธฐ๋ฐ˜ ๋ชจ๋ธ ์„œ๋น™ ๊ตฌ์กฐ ์„ค๊ณ„ ์ˆ˜์ž‘์—… DAG ๋“ฑ๋ก, ๋ชจ๋ธ ๋ฐฐํฌ ๋“ฑ์˜ ๋น„ํšจ์œจ์  ์šด์˜ ๋ฌธ์ œ โ†’ Airflow + GitSync ์—ฐ๋™์œผ๋กœ ํŒŒ์ดํ”„๋ผ์ธ ์ž๋™ํ™” ๋ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ ...

July 15, 2025 ยท 3 min

[MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• - 6๋‹จ๊ณ„: ์‹ค์‹œ๊ฐ„ ๋ชจ๋ธ ํ•ซ์Šค์™‘ ๊ตฌ์กฐ ์‹คํ—˜]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ Airflow DAG์—์„œ ์กฐ๊ฑด๋ถ€ ๋ชจ๋ธ ๋“ฑ๋ก ํ›„ FastAPI ํ•ซ์Šค์™‘๊นŒ์ง€ E2E ์ž๋™ํ™” ํ๋ฆ„์„ ์‹คํ—˜ํ•ฉ๋‹ˆ๋‹ค. ์„ ์ˆ˜์ง€์‹ MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• 5๋‹จ๊ณ„: FastAPI ์„œ๋น™ ๋ฐ ํ•ซ์Šค์™‘ ๊ตฌ์กฐ ๊ตฌ์ถ• โ€” FastAPI ๋ชจ๋ธ ๋กœ๋”ฉ๊ณผ /reload API ๊ตฌ์กฐ ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ ๊ฐœ๋ณ„ ์ปดํฌ๋„ŒํŠธ(Airflow, MLflow, FastAPI)๋ฅผ ๊ฐ๊ฐ ๊ตฌ์„ฑํ–ˆ์ง€๋งŒ, ํ•™์Šต๋ถ€ํ„ฐ ์„œ๋น™๊นŒ์ง€์˜ ์ž๋™ํ™” ํ๋ฆ„์„ E2E๋กœ ๊ฒ€์ฆํ•ด์•ผ ์‹ค์ œ ์šด์˜ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” Airflow DAG์—์„œ ๋ชจ๋ธ ํ•™์Šต โ†’ ์„ฑ๋Šฅ ๊ธฐ์ค€ ๋ถ„๊ธฐ โ†’ MLflow ๋“ฑ๋ก โ†’ FastAPI ํ•ซ์Šค์™‘๊นŒ์ง€ ์ „์ฒด ํŒŒ์ดํ”„๋ผ์ธ์„ ์‹คํ—˜ํ•ฉ๋‹ˆ๋‹ค. ...

July 10, 2025 ยท 2 min

[MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• - 5๋‹จ๊ณ„: FastAPI ์„œ๋น™: MLflow ๋ชจ๋ธ ์—ฐ๋™ ๋ฐ ํ•ซ์Šค์™‘ ๊ตฌ์กฐ ๊ตฌ์ถ•]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ MLflow์— ๋“ฑ๋ก๋œ ๋ชจ๋ธ์„ FastAPI๋กœ ์„œ๋น™ํ•˜๊ณ , Stage ๊ธฐ๋ฐ˜ ํ•ซ์Šค์™‘๊ณผ ๋ชจ๋ธ ์ •๋ณด ์กฐํšŒ API๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. ์„ ์ˆ˜์ง€์‹ MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• 4๋‹จ๊ณ„: Airflow GitSync + Secret ์—ฐ๋™ โ€” Helm ๋ฐฐํฌ์™€ Secret ๋งˆ์šดํŠธ ํŒจํ„ด ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ ๋ชจ๋ธ์„ ์ˆ˜๋™์œผ๋กœ ์„œ๋น™ ์„œ๋ฒ„์— ๋ณต์‚ฌํ•˜๋ฉด ๋ฐฐํฌ ์‹ค์ˆ˜์™€ ๋ฒ„์ „ ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. MLflow Registry์—์„œ Stage๋ณ„ ๋ชจ๋ธ์„ ์ž๋™ ๋กœ๋”ฉํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์–ด, ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์ด ๋ชจ๋ธ์„ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“ ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ๋„ ๐Ÿณ FastAPI ์ปค์Šคํ…€ ์ด๋ฏธ์ง€ Dockerfile FROM python:3.12 WORKDIR /app COPY app /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] requirements.txt fastapi==0.110.2 uvicorn==0.29.0 mlflow==2.13.0 pandas==2.1.4 scikit-learn==1.6.1 pydantic==2.7.1 boto3==1.34.113 numpy==1.26.4 packaging==24.2 psutil==7.0.0 scipy==1.15.3 setuptools==69.5.1 ๋นŒ๋“œ & ํ‘ธ์‹œ docker build -t ghcr.io/hoizz/fastapi-ml:mlflow-model-info . docker push ghcr.io/hoizz/fastapi-ml:mlflow-model-info ๐Ÿ“„ app/main.py (ํ•ต์‹ฌ ๋ถ€๋ถ„) app = FastAPI() model = None model_info = {} def load_model_from_mlflow(): global model, model_info tracking_uri = os.environ.get("MLFLOW_TRACKING_URI") model_name = os.environ.get("MODEL_NAME") model_stage = os.environ.get("MODEL_STAGE", "Production") mlflow.set_tracking_uri(tracking_uri) model_uri = f"models:/{model_name}/{model_stage}" model = mlflow.pyfunc.load_model(model_uri) client = MlflowClient() latest = client.get_latest_versions(name=model_name, stages=[model_stage])[0] model_info = { "model_name": model_name, "stage": model_stage, "version": latest.version, "run_id": latest.run_id, "model_uri": model_uri, } @app.on_event("startup") def startup_event(): load_model_from_mlflow() @app.get("/model-info") def get_model_info(): return model_info @app.post("/predict") async def predict(request: Request): input_data = await request.json() prediction = model.predict(input_data) return {"prediction": prediction.tolist()} ์ „์ฒด ์ฝ”๋“œ: GitHub (main.py) ...

July 7, 2025 ยท 2 min

[MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• - 4๋‹จ๊ณ„: Airflow : GitSync + ์™ธ๋ถ€ PostgreSQL + Secret ์—ฐ๋™]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ Airflow๋ฅผ Helm์œผ๋กœ ๋ฐฐํฌํ•˜๋ฉด์„œ GitSync DAG ๋™๊ธฐํ™”, ์™ธ๋ถ€ PostgreSQL, AWS Secret ๋งˆ์šดํŠธ๋ฅผ ์—ฐ๋™ํ•ฉ๋‹ˆ๋‹ค. ์„ ์ˆ˜์ง€์‹ MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• 3๋‹จ๊ณ„: MLflow Helm ๊ตฌ์„ฑ โ€” Helm ๊ธฐ๋ฐ˜ ๋ฐฐํฌ์™€ Secret ์ฃผ์ž… ํŒจํ„ด ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ DAG ์ฝ”๋“œ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์—…๋กœ๋“œํ•˜๋ฉด ๋ฒ„์ „ ๊ด€๋ฆฌ์™€ ํ˜‘์—…์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Git ๊ธฐ๋ฐ˜ DAG ๊ด€๋ฆฌ(GitSync)๋ฅผ ๋„์ž…ํ•˜๊ณ , SSH Key/AWS ์ธ์ฆ์„ Secret์œผ๋กœ ์ฃผ์ž…ํ•˜๋ฉฐ, ์™ธ๋ถ€ PostgreSQL์„ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋กœ ์—ฐ๋™ํ•˜๋Š” GitOps ํŒจํ„ด์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“ ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ๋„ ๐Ÿณ ์ปค์Šคํ…€ Airflow ์ด๋ฏธ์ง€ ๊ตฌ์„ฑ GitSync DAG์—์„œ MLflow ์—ฐ๋™ ๋˜๋Š” AWS SDK ์‚ฌ์šฉ์„ ์œ„ํ•œ Python ํŒจํ‚ค์ง€ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ...

July 3, 2025 ยท 3 min

[MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• - 3๋‹จ๊ณ„: MLflow : PostgreSQL + S3 ์—ฐ๋™ ๊ธฐ๋ฐ˜ Helm ๊ตฌ์„ฑ]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ MLflow๋ฅผ PostgreSQL + S3 ๋ฐฑ์—”๋“œ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ Kubernetes์— Helm ๋ฐฐํฌํ•˜๊ณ , ์ปค์Šคํ…€ ์ด๋ฏธ์ง€์™€ Ingress๋ฅผ ์—ฐ๋™ํ•ฉ๋‹ˆ๋‹ค. ์„ ์ˆ˜์ง€์‹ MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• 2๋‹จ๊ณ„: S3 & PostgreSQL Secret ๊ด€๋ฆฌ โ€” Secret/ConfigMap ์ฃผ์ž… ์ „๋žต ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ ํ•œ ํ”„๋กœ์ ํŠธ์— ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ๋ชจ๋ธ์ด ๋“ฑ์žฅํ•˜๋ฉด, ๊ฐ ์‹คํ—˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ/๋ฉ”ํŠธ๋ฆญ/์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ์ถ”์ ํ•  ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ MLflow UI(SQLite + file ์ €์žฅ)๋กœ๋Š” ํŒ€ ๊ณต์œ ์™€ ์•„ํ‹ฐํŒฉํŠธ ์˜์†์„ฑ์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” MLflow๋ฅผ PostgreSQL(๋ฉ”ํƒ€๋ฐ์ดํ„ฐ) + S3(์•„ํ‹ฐํŒฉํŠธ) ๋ฐฑ์—”๋“œ๋กœ ๊ตฌ์„ฑํ•˜๊ณ  Helm์œผ๋กœ Kubernetes์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ...

June 30, 2025 ยท 3 min

[MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• - 2๋‹จ๊ณ„: S3 & PostgreSQL ์—ฐ๋™์„ ์œ„ํ•œ ๊ตฌ์„ฑ ๋ฐ Secret ๊ด€๋ฆฌ ์ „๋žต]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ Kubernetes Secret๊ณผ ConfigMap์œผ๋กœ S3/PostgreSQL ์ธ์ฆ ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ฃผ์ž…ํ•˜๋Š” ์ „๋žต์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์„ ์ˆ˜์ง€์‹ MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• 1๋‹จ๊ณ„: ์ธํ”„๋ผ ์„ค๊ณ„ ๋ฐ ํ™˜๊ฒฝ ์ค€๋น„ โ€” NFS/PostgreSQL/S3 ํ™˜๊ฒฝ ๊ตฌ์ถ• ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ(MLflow, Airflow, FastAPI)๊ฐ€ ์™ธ๋ถ€ DB, GitHub, S3 ๋“ฑ ๋ฏผ๊ฐํ•œ ๋ฆฌ์†Œ์Šค์™€ ์—ฐ๋™๋ฉ๋‹ˆ๋‹ค. API ํ‚ค์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ YAML์ด๋‚˜ ์ฝ”๋“œ์— ์ง์ ‘ ๋„ฃ์œผ๋ฉด ๋ณด์•ˆ ์œ„ํ—˜์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” Kubernetes Secret๊ณผ ConfigMap์„ ํ™œ์šฉํ•˜์—ฌ ์ธ์ฆ ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•˜๊ณ  ์ฃผ์ž…ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค. ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ๋„ ...

June 26, 2025 ยท 3 min

[MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• - 1๋‹จ๊ณ„: ์ธํ”„๋ผ ์„ค๊ณ„ ๋ฐ ํ™˜๊ฒฝ ์ค€๋น„]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ Kubernetes ๊ธฐ๋ฐ˜ MLOps ์ธํ”„๋ผ์˜ ์ „์ฒด ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜๊ณ , NFS/PostgreSQL/S3 ๊ธฐ๋ฐ˜ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. ์„ ์ˆ˜์ง€์‹ Airflow 5๋‹จ๊ณ„: PythonOperator + MLflow Tracking ์—ฐ๋™ โ€” Level 1 ์™„๋ฃŒ ํ›„ ์‹œ์ž‘ ๊ถŒ์žฅ ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ ML ๋ชจ๋ธ์„ ์‹คํ—˜ํ•˜๊ณ  ์ถ”์ ํ•˜๋ ค๋ฉด ๋‹จ์ˆœ Jupyter Notebook์œผ๋กœ๋Š” ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ํ•™์Šต ์ด๋ ฅ ์ถ”์ (MLflow), ํŒŒ์ดํ”„๋ผ์ธ ์ž๋™ํ™”(Airflow), ๋ชจ๋ธ ์„œ๋น™(FastAPI)์„ ํ•˜๋‚˜์˜ ํ”Œ๋žซํผ์—์„œ ์šด์˜ํ•˜๋ ค๋ฉด Kubernetes ๊ธฐ๋ฐ˜ ์ธํ”„๋ผ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” ๊ทธ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” NFS, PostgreSQL, S3, Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์„ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. ...

June 23, 2025 ยท 3 min

[Kubernetes - 5๋‹จ๊ณ„: Prometheus + Grafana ๋ชจ๋‹ˆํ„ฐ๋ง]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ Prometheus๋กœ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๋ฉ”ํŠธ๋ฆญ์„ ์ˆ˜์ง‘ํ•˜๊ณ , Grafana ๋Œ€์‹œ๋ณด๋“œ๋กœ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ๊ธฐ์ดˆ๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์„ ์ˆ˜์ง€์‹ Kubernetes 4๋‹จ๊ณ„: Helm โ€” Helm Chart ์„ค์น˜์™€ values.yaml ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์—์„œ Pod, Node์˜ CPU/๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํŒŒ์•…ํ•˜์ง€ ๋ชปํ•˜๋ฉด, ์žฅ์•  ๋Œ€์‘๊ณผ ๋ฆฌ์†Œ์Šค ์ตœ์ ํ™”๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Prometheus๊ฐ€ ๋ฉ”ํŠธ๋ฆญ์„ ์ˆ˜์ง‘ํ•˜๊ณ , Grafana๊ฐ€ ์ด๋ฅผ ๋Œ€์‹œ๋ณด๋“œ๋กœ ์‹œ๊ฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌ์กฐ๋Š” MLOps์—์„œ ๋ชจ๋ธ ์„œ๋น™ ์ง€์—ฐ, ํ•™์Šต ๋ฆฌ์†Œ์Šค ๋ชจ๋‹ˆํ„ฐ๋ง์˜ ๊ธฐ๋ฐ˜์ด ๋ฉ๋‹ˆ๋‹ค. ์‹ค์Šต ์ฝ”๋“œ: GitHub (Monitoring) ๐Ÿงญ ์ „์ฒด ํ๋ฆ„ ์š”์•ฝ โ‘  Helm ์ €์žฅ์†Œ ์ถ”๊ฐ€ โ‘ก Prometheus ์„ค์น˜ (๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘) โ‘ข Grafana ์„ค์น˜ (๋Œ€์‹œ๋ณด๋“œ ์‹œ๊ฐํ™”) โ‘ฃ Web UI ์ ‘์† โ†’ Prometheus ์—ฐ๊ฒฐ โ†’ ๋Œ€์‹œ๋ณด๋“œ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๐Ÿ“‚ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์„ฑ k8s-monitoring/ โ”œโ”€โ”€ values-prometheus.yaml # Prometheus ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ์„ค์ • โ”œโ”€โ”€ values-grafana.yaml # Grafana ์„ค์ • + ๋น„๋ฐ€๋ฒˆํ˜ธ ์ง€์ • โ”œโ”€โ”€ README.md โš™๏ธ [1๋‹จ๊ณ„] Helm ์ €์žฅ์†Œ ์ถ”๊ฐ€ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo add grafana https://grafana.github.io/helm-charts helm repo update ๐Ÿ“ฆ [2๋‹จ๊ณ„] Prometheus ์„ค์น˜ ๊ธฐ๋ณธ ์„ค์น˜ helm install prometheus prometheus-community/prometheus kubectl port-forward svc/prometheus-server 9090:80 ์ ‘์†: http://localhost:9090 ...

June 5, 2025 ยท 2 min

[Kubernetes - 4๋‹จ๊ณ„: Helm]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ Kubernetes ์•ฑ์„ ํŒจํ‚ค์ง€ํ™”ํ•˜์—ฌ ์„ค์น˜ยท์—…๊ทธ๋ ˆ์ด๋“œยท๋กค๋ฐฑ์„ ๊ด€๋ฆฌํ•˜๋Š” Helm์˜ ๊ฐœ๋…๊ณผ values.yaml์„ ํ†ตํ•œ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์„ ์ˆ˜์ง€์‹ Kubernetes 1๋‹จ๊ณ„: Deployment & Service โ€” ๊ธฐ๋ณธ ๋ฆฌ์†Œ์Šค ์ดํ•ด Kubernetes 3๋‹จ๊ณ„: Ingress & Nginx Controller โ€” ์„œ๋น„์Šค ๋ผ์šฐํŒ… ๊ฐœ๋… ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ Deployment, Service, ConfigMap ๋“ฑ ์—ฌ๋Ÿฌ YAML ํŒŒ์ผ์„ ๊ฐœ๋ณ„ ๊ด€๋ฆฌํ•˜๋ฉด, ํ™˜๊ฒฝ๋ณ„ ์„ค์ • ๋ณ€๊ฒฝ๊ณผ ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. Helm์€ ์ด YAML๋“ค์„ ํ•˜๋‚˜์˜ Chart๋กœ ํŒจํ‚ค์ง•ํ•˜๊ณ , values.yaml๋กœ ์„ค์ •๋งŒ ๋ฐ”๊ฟ”์„œ ์žฌ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. MLOps์—์„œ MLflow, ArgoCD, Prometheus ๋“ฑ์„ ์„ค์น˜ํ•  ๋•Œ ์‚ฌ์‹ค์ƒ ํ‘œ์ค€ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ...

June 5, 2025 ยท 2 min

[Kubernetes - 3๋‹จ๊ณ„ : Ingress & Nginx Controller]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๋ฅผ ํ•˜๋‚˜์˜ ์ง„์ž…์ ์—์„œ ๊ฒฝ๋กœ(Path) ๊ธฐ๋ฐ˜์œผ๋กœ ๋ผ์šฐํŒ…ํ•˜๋Š” Ingress ๋ฆฌ์†Œ์Šค์™€ Nginx Ingress Controller๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์„ ์ˆ˜์ง€์‹ Kubernetes 1๋‹จ๊ณ„: Deployment & Service โ€” Pod ๋ฐฐํฌ์™€ Service ๋…ธ์ถœ Kubernetes 2๋‹จ๊ณ„: ConfigMap & Secret โ€” ์„ค์ • ๋ถ„๋ฆฌ ๊ฐœ๋… ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ Service๋งˆ๋‹ค NodePort๋ฅผ ์—ด๋ฉด ํฌํŠธ ๊ด€๋ฆฌ๊ฐ€ ๋ณต์žกํ•ด์ง€๊ณ , ๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Ingress๋Š” ๋‹จ์ผ ์ง„์ž…์ ์—์„œ HTTP ์š”์ฒญ์„ ๊ฒฝ๋กœ๋‚˜ ํ˜ธ์ŠคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‚ด๋ถ€ ์„œ๋น„์Šค์— ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค. ์‹ค๋ฌด์—์„œ MLflow, Jupyter, API ์„œ๋ฒ„๋ฅผ ํ•˜๋‚˜์˜ ๋„๋ฉ”์ธ ์•„๋ž˜ ๊ฒฝ๋กœ๋กœ ๋ถ„๋ฆฌํ•  ๋•Œ ํ•„์ˆ˜์ ์ธ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ...

June 5, 2025 ยท 2 min