From 4aac333ab7be2e67403e4b4cb9d5727d84971d00 Mon Sep 17 00:00:00 2001 From: fsusak03 Date: Tue, 26 May 2026 10:19:04 +0200 Subject: [PATCH] init: FastAPI priprema-za-kolokvij + k8s manifesti (monorepo) --- .dockerignore | 6 ++++++ .gitignore | 8 ++++++++ Dockerfile | 12 ++++++++++++ app/main.py | 13 +++++++++++++ argocd-app.yaml | 20 ++++++++++++++++++++ k8s/deployment.yaml | 27 +++++++++++++++++++++++++++ k8s/ingress.yaml | 18 ++++++++++++++++++ k8s/service.yaml | 13 +++++++++++++ requirements.txt | 2 ++ 9 files changed, 119 insertions(+) create mode 100644 .dockerignore create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 app/main.py create mode 100644 argocd-app.yaml 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/.gitignore b/.gitignore new file mode 100644 index 0000000..3c98b86 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +__pycache__/ +*.pyc +.env +.venv/ +venv/ +.vscode/ +.idea/ +*.log diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..97343b2 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +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..9241be3 --- /dev/null +++ b/app/main.py @@ -0,0 +1,13 @@ +from fastapi import FastAPI + +app = FastAPI() + + +@app.get("/") +def root(): + return {"message": "Pozdrav svijete!", "autor": "fsusak03"} + + +@app.get("/health") +def health(): + return {"status": "ok"} diff --git a/argocd-app.yaml b/argocd-app.yaml new file mode 100644 index 0000000..a69b1d9 --- /dev/null +++ b/argocd-app.yaml @@ -0,0 +1,20 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: fsusak03-priprema + namespace: argocd +spec: + project: default + source: + repoURL: https://git.fpmoz.sum.ba/fsusak03/priprema-za-kolokvij + targetRevision: HEAD + path: k8s + destination: + server: https://kubernetes.default.svc + namespace: student-fsusak03 + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true diff --git a/k8s/deployment.yaml b/k8s/deployment.yaml new file mode 100644 index 0000000..81c00ab --- /dev/null +++ b/k8s/deployment.yaml @@ -0,0 +1,27 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: priprema-za-kolokvij + namespace: student-fsusak03 +spec: + replicas: 1 + selector: + matchLabels: + app: priprema-za-kolokvij + template: + metadata: + labels: + app: priprema-za-kolokvij + spec: + containers: + - name: priprema-za-kolokvij + image: git.fpmoz.sum.ba/fsusak03/priprema-za-kolokvij:1.0 + ports: + - containerPort: 8000 + resources: + requests: + memory: "64Mi" + cpu: "50m" + limits: + memory: "128Mi" + cpu: "200m" diff --git a/k8s/ingress.yaml b/k8s/ingress.yaml new file mode 100644 index 0000000..840f2f1 --- /dev/null +++ b/k8s/ingress.yaml @@ -0,0 +1,18 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: priprema-ingress + namespace: student-fsusak03 +spec: + ingressClassName: traefik + rules: + - host: fsusak03.argocd.fpmoz.sum.ba + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: priprema-svc + port: + number: 80 diff --git a/k8s/service.yaml b/k8s/service.yaml new file mode 100644 index 0000000..c443db9 --- /dev/null +++ b/k8s/service.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: priprema-svc + namespace: student-fsusak03 +spec: + selector: + app: priprema-za-kolokvij + ports: + - port: 80 + targetPort: 8000 + protocol: TCP + type: ClusterIP 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