From c570bcaa21ee75e48810f8964cc89e980766955c Mon Sep 17 00:00:00 2001 From: nikolahrkac Date: Tue, 9 Jun 2026 10:22:15 +0200 Subject: [PATCH] dodati aplikaciju, yaml --- .dockerignore | 6 ++++++ Dockerfile | 14 ++++++++++++++ app/main.py | 14 ++++++++++++++ k8s/deployment.yaml | 29 +++++++++++++++++++++++++++++ k8s/ingress.yaml | 23 +++++++++++++++++++++++ k8s/service.yaml | 17 +++++++++++++++++ requirements.txt | 2 ++ 7 files changed, 105 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 app/main.py create mode 100644 k8s/deployment.yaml create mode 100644 k8s/ingress.yaml create mode 100644 k8s/service.yaml create mode 100644 requirements.txt diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..dd3b7cc --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +__pycache__/ +*.pyc +.env +.git/ +*.md +k8s/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6dbcd08 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +# TODO: napiši Dockerfile +# Base image: python:3.12-slim +# Working dir: /app +# Kopiraj requirements.txt, pip install, zatim kopiraj app/ +# EXPOSE 8000 +# CMD uvicorn app.main:app --host 0.0.0.0 --port 8000 + +FROM python:3.12-slim +WORKDIR /app +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt +COPY app/ ./app/ +EXPOSE 8000 +CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"] diff --git a/app/main.py b/app/main.py new file mode 100644 index 0000000..0b6d7cc --- /dev/null +++ b/app/main.py @@ -0,0 +1,14 @@ +import os +from fastapi import FastAPI + +app = FastAPI() + +AUTOR = os.getenv("AUTOR", "nikolahrkac") + +@app.get("/") +def root(): + return {"message": "Kolokvij 2", "autor": AUTOR} + +@app.get("/health") +def health(): + return {"status": "ok"} diff --git a/k8s/deployment.yaml b/k8s/deployment.yaml new file mode 100644 index 0000000..d9ba6c5 --- /dev/null +++ b/k8s/deployment.yaml @@ -0,0 +1,29 @@ +# TODO: napiši Deployment +# Ime: k2-app | Namespace: kolokvij2-IME-PREZIME +# Replicas: 2 | Image: git.fpmoz.sum.ba/IME-PREZIME/k2-app:1.0 +# containerPort: 8000 | env AUTOR=IME-PREZIME + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: k2-app + namespace: kolokvij2-nikolahrkac +spec: + replicas: 2 + selector: + matchLabels: + app: k2-app + template: + metadata: + labels: + app: k2-app + spec: + containers: + - name: k2-app + image: git.fpmoz.sum.ba/nikolahrkac/k2-app:1.0 + ports: + - containerPort: 8000 + env: + - name: AUTOR + value: "nikolahrkac" + diff --git a/k8s/ingress.yaml b/k8s/ingress.yaml new file mode 100644 index 0000000..d98697f --- /dev/null +++ b/k8s/ingress.yaml @@ -0,0 +1,23 @@ +# TODO: napiši Ingress +# Ime: k2-ingress | Namespace: kolokvij2-IME-PREZIME +# ingressClassName: traefik +# Host: IME-PREZIME.argocd.fpmoz.sum.ba -> k2-svc:80 + +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: k2-ingress + namespace: kolokvij2-nikolahrkac +spec: + ingressClassName: traefik + rules: + - host: nikolahrkac.argocd.fpmoz.sum.ba + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: k2-svc + port: + number: 80 diff --git a/k8s/service.yaml b/k8s/service.yaml new file mode 100644 index 0000000..2072cec --- /dev/null +++ b/k8s/service.yaml @@ -0,0 +1,17 @@ +# TODO: napiši Service +# Ime: k2-svc | Namespace: kolokvij2-IME-PREZIME +# Tip: ClusterIP | port: 80 -> targetPort: 8000 + +apiVersion: v1 +kind: Service +metadata: + name: k2-svc + namespace: student-nikolahrkac +spec: + selector: + app: k2-app + ports: + - port: 80 + targetPort: 8000 + protocol: TCP + type: ClusterIP \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..c83aa69 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +fastapi==0.111.0 +uvicorn[standard]==0.29.0