From 583a662fa667d122c5b083562a148482ead50463 Mon Sep 17 00:00:00 2001 From: abduki <abdullah.kiran@student.reutlingen-university.de> Date: Mon, 16 Dec 2024 00:48:33 +0100 Subject: [PATCH] too much shit --- frontend/Dockerfile | 14 +++- minikube-prod/backend.yaml | 5 +- minikube-prod/caddy.yaml | 76 +++++++++++++++++++ minikube-prod/frontend.yaml | 33 ++++++++ minikube-prod/mongodb-pv.yaml | 11 +++ minikube-prod/mongodb-pvc.yaml | 10 +++ .../todo/controller/UserController.java | 7 +- 7 files changed, 149 insertions(+), 7 deletions(-) create mode 100644 minikube-prod/caddy.yaml create mode 100644 minikube-prod/frontend.yaml create mode 100644 minikube-prod/mongodb-pv.yaml create mode 100644 minikube-prod/mongodb-pvc.yaml diff --git a/frontend/Dockerfile b/frontend/Dockerfile index e1a86ad..5f0b7e5 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -15,5 +15,15 @@ COPY . . RUN npm run build # stage 2: move static frontend stuff to caddys root folder to make caddy serve our frontend instead of spring -FROM caddy:alpine -COPY --from=build-frontend /app/dist /usr/share/caddy \ No newline at end of file +FROM node:20-alpine + +WORKDIR /app + +RUN npm install -g http-server + +COPY --from=build-frontend /app/dist /app + +EXPOSE 80 + +# einfacher http-server +CMD ["http-server", "/app", "-p", "80"] \ No newline at end of file diff --git a/minikube-prod/backend.yaml b/minikube-prod/backend.yaml index 4ee0907..6b7fd99 100644 --- a/minikube-prod/backend.yaml +++ b/minikube-prod/backend.yaml @@ -14,7 +14,8 @@ spec: spec: containers: - name: backend-container - image: backend-image + image: backend-image:latest + imagePullPolicy: IfNotPresent ports: - containerPort: 9876 env: @@ -23,7 +24,7 @@ spec: - name: MONGO_PASSWORD value: tododbadminpassword - name: MONGO_HOST - value: mongodb-servicevice in Kubernetes. + value: mongodb-service - name: MONGO_PORT value: "27017" - name: MONGO_DB diff --git a/minikube-prod/caddy.yaml b/minikube-prod/caddy.yaml new file mode 100644 index 0000000..308df16 --- /dev/null +++ b/minikube-prod/caddy.yaml @@ -0,0 +1,76 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: caddy-deployment +spec: + replicas: 1 + selector: + matchLabels: + app: caddy-server + template: + metadata: + labels: + app: caddy-server + spec: + containers: + - name: caddy-container + image: caddy:alpine + ports: + - containerPort: 80 + volumeMounts: + - mountPath: /usr/share/caddy + name: frontend-files + - mountPath: /etc/caddy/Caddyfile + subPath: Caddyfile + name: caddy-config + volumes: + - name: frontend-files + persistentVolumeClaim: + claimName: caddy-pvc + - name: caddy-config + configMap: + name: caddy-config + +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: caddy-config +data: + Caddyfile: | + :80 { + root * /usr/share/caddy + file_server + + reverse_proxy /user* backend-service:9876 { + health_uri /health + health_interval 10s + health_timeout 1s + } + } + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: caddy-pvc +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + +--- +apiVersion: v1 +kind: Service +metadata: + name: caddy-service +spec: + selector: + app: caddy-server + ports: + - protocol: TCP + port: 80 + targetPort: 80 + type: LoadBalancer diff --git a/minikube-prod/frontend.yaml b/minikube-prod/frontend.yaml new file mode 100644 index 0000000..f47fc85 --- /dev/null +++ b/minikube-prod/frontend.yaml @@ -0,0 +1,33 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: frontend-deployment +spec: + replicas: 1 + selector: + matchLabels: + app: frontend + template: + metadata: + labels: + app: frontend + spec: + containers: + - name: frontend-container + image: frontend-image + imagePullPolicy: IfNotPresent # ohne diesen wert versucht minikube wieso auch immer images von dockerhub zu ziehen + ports: + - containerPort: 80 +--- +apiVersion: v1 +kind: Service +metadata: + name: frontend-service +spec: + selector: + app: frontend + ports: + - protocol: TCP + port: 80 + targetPort: 80 + type: LoadBalancer diff --git a/minikube-prod/mongodb-pv.yaml b/minikube-prod/mongodb-pv.yaml new file mode 100644 index 0000000..84b522b --- /dev/null +++ b/minikube-prod/mongodb-pv.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: mongo-pv +spec: + capacity: + storage: 1Gi + accessModes: + - ReadWriteOnce + hostPath: + path: /data/mongo diff --git a/minikube-prod/mongodb-pvc.yaml b/minikube-prod/mongodb-pvc.yaml new file mode 100644 index 0000000..586dbe4 --- /dev/null +++ b/minikube-prod/mongodb-pvc.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: mongo-pvc +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi diff --git a/src/main/java/com/cloudcomputing/todo/controller/UserController.java b/src/main/java/com/cloudcomputing/todo/controller/UserController.java index 8589673..0fec196 100644 --- a/src/main/java/com/cloudcomputing/todo/controller/UserController.java +++ b/src/main/java/com/cloudcomputing/todo/controller/UserController.java @@ -13,11 +13,12 @@ import java.util.List; /* * 1. eval $(minikube docker-env) (docker-befehle werden dadurch in minikube ausgeführt) | - * windows: Invoke-Expression (minikube docker-env) // minikube muss dafür laufen auf windows, also erst 2. dann 1. + * windows: & minikube -p minikube docker-env --shell powershell | Invoke-Expression + * minikube muss dafür laufen auf windows, also erst 2. dann 1. * 2. minikube starten * 3. docker build -t <name> (einmal für jedes dockerfile um images zu erstellen) - * 4. - + * 4. lokale images in minikube laden mit minikube image load <name> + * 5. .yaml dateien mit kubectl apply -f <pfad-zur-yaml-datei> */ @RestController -- GitLab