From c8fd64d3d0fc16dbc26be5c6560e6f68945e913f Mon Sep 17 00:00:00 2001 From: Mattia Harlacher <mha146039@stud.gibb.ch> Date: Thu, 27 Mar 2025 13:34:21 +0100 Subject: [PATCH] Update 2 files - /Tag 8 KW 12/Tag 8.md - /Tag 9 KW 13/Tag 9.md --- Tag 8 KW 12/Tag 8.md | 1 + Tag 9 KW 13/Tag 9.md | 150 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 151 insertions(+) create mode 100644 Tag 8 KW 12/Tag 8.md create mode 100644 Tag 9 KW 13/Tag 9.md diff --git a/Tag 8 KW 12/Tag 8.md b/Tag 8 KW 12/Tag 8.md new file mode 100644 index 0000000..2e918bb --- /dev/null +++ b/Tag 8 KW 12/Tag 8.md @@ -0,0 +1 @@ +Projektdokumentation in Tag 9 \ No newline at end of file diff --git a/Tag 9 KW 13/Tag 9.md b/Tag 9 KW 13/Tag 9.md new file mode 100644 index 0000000..ce44fee --- /dev/null +++ b/Tag 9 KW 13/Tag 9.md @@ -0,0 +1,150 @@ +# MongoDB mit Kubernetes Deployment und Docker Registry - Dokumentation + +## Voraussetzungen + +- **Docker** installiert. +- **Kubernetes** installiert und konfiguriert. +- **MongoDB Kompass (Kompass)** installiert. +- Zugriff auf eine **Docker-Registry** (z.B. `git-registry.gibb.ch`). + +--- + +## 1. Docker Image Erstellen und Pushen + +### Dockerfile erstellen + +Erstelle ein `Dockerfile` für MongoDB, das deinen Dump importiert. Ein Beispiel für das `Dockerfile`: + +```Dockerfile +FROM mongo:latest + +WORKDIR /data/db + +COPY dump /dump + +EXPOSE 27017 + +# MongoDB Dump importieren +CMD ["sh", "-c", "mongod --bind_ip_all --fork --logpath /var/log/mongodb.log && mongorestore --host localhost --drop --dir /dump && tail -f /dev/null"] + + +# Docker Image erstellen + +Erstelle das Docker-Image mit folgendem Befehl: +```bash +docker build -t my-mongo-image . +``` + +## Docker Image taggen + +Tagge das Image mit dem Namen der Docker-Registry: +```bash +docker tag my-mongo-image git-registry.gibb.ch/mha146039/m347-images:latest +``` + +## Image pushen + +Push das Image in die Docker-Registry: +```bash +docker push git-registry.gibb.ch/mha146039/m347-images:latest +``` + +# MongoDB auf Kubernetes Deployen + +## Kubernetes Deployment YAML erstellen + +Erstelle eine `mongo-deployment.yaml` Datei für das Deployment und den Service: +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: mongo-deployment + labels: + app: mongo +spec: + replicas: 1 + selector: + matchLabels: + app: mongo + template: + metadata: + labels: + app: mongo + spec: + containers: + - name: mongo + image: git-registry.gibb.ch/mha146039/m347-images:latest + ports: + - containerPort: 27017 +--- +apiVersion: v1 +kind: Service +metadata: + name: mongo-service +spec: + selector: + app: mongo + ports: + - protocol: TCP + port: 27017 + targetPort: 27017 + type: NodePort +``` + +## Deployment anwenden + +Führe diesen Befehl aus, um das Deployment auf Kubernetes zu erstellen: +```bash +kubectl apply -f mongo-deployment.yaml +``` + +## Deployment und Service Status prüfen + +Prüfe den Status des Deployments und der Pods: +```bash +kubectl get deployments +kubectl get pods +``` + +Prüfe den Status des Services: +```bash +kubectl get svc mongo-service +``` + +Das zeigt dir die NodePort-Nummer, über die MongoDB von außerhalb des Clusters erreichbar ist. + +# MongoDB Compass - Verbindung zu MongoDB herstellen + +## MongoDB Verbindung aufbauen + +Um mit MongoDB Compass eine Verbindung zu deiner MongoDB-Instanz auf Kubernetes herzustellen, benötigst du folgende Informationen: + +### NodePort herausfinden + +Finde den NodePort mit folgendem Befehl heraus: +```bash +kubectl get svc mongo-service +``` + +### Beispiel-Ausgabe: +```bash +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +mongo-service NodePort 10.107.128.1 27017:30007/TCP 2m +``` + +In diesem Fall ist der NodePort `30007`. + +### Beispiel-Verbindungsstring + +Verwende diesen Verbindungsstring, um eine Verbindung herzustellen: +```bash +mongodb://localhost:<NodePort> +``` + +## Verbindung in MongoDB Compass herstellen + +1. Öffne MongoDB Compass. +2. Gib unter Hostname `localhost` ein. +3. Gib unter Port den NodePort ein (z.B. `30007`). +4. Falls Authentifizierung aktiviert ist, gib Benutzername und Passwort ein. +5. Klicke auf **Connect**, um die Verbindung herzustellen. -- GitLab