diff --git a/deploy.sh b/deploy.sh new file mode 100644 index 0000000..9f2e520 --- /dev/null +++ b/deploy.sh @@ -0,0 +1,50 @@ +#!/bin/bash +minikube start --driver=docker +echo "-------minikube status" +minikube status +echo "-------/" +# Define paths to YAML files +PVC_FILES=( + "k8s/data/mongo-data-persistentvolumeclaim.yaml" + "k8s/data/postgres-data-persistentvolumeclaim.yaml" + "k8s/data/sonarqube-data-persistentvolumeclaim.yaml" +) + +DEPLOYMENTS_SERVICES_FILES=( + "k8s/deploy/kafka-deployment.yaml" + "k8s/deploy/mongodb-deployment.yaml" + "k8s/deploy/postgres-deployment.yaml" + "k8s/deploy/sonarqube-deployment.yaml" + "k8s/deploy/zookeeper-deployment.yaml" + "k8s/service/kafka-service.yaml" + "k8s/service/mongodb-service.yaml" + "k8s/service/postgres-service.yaml" + "k8s/service/sonarqube-service.yaml" + "k8s/service/zookeeper-service.yaml" +) + +# Apply Persistent Volume Claims +echo "-------Applying Persistent Volume Claims..." +for pvc in "${PVC_FILES[@]}"; do + kubectl apply -f "$pvc" +done + +# Apply Deployments and Services +echo "-------Applying Deployments and Services..." +for file in "${DEPLOYMENTS_SERVICES_FILES[@]}"; do + kubectl apply -f "$file" +done + +# Wait for Pods to be ready +echo "-------Waiting for Pods to be ready..." +kubectl wait --for=condition=ready pod --all --timeout=5m + +# Check Pod status +echo "-------Checking Pod status..." +kubectl get pods + +# Display Service URLs +echo "-------Retrieving service details..." +kubectl get services + +echo "-------Deployment completed. Access your services as needed." diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 9d21f63..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,64 +0,0 @@ -version: '2' - -services: - zookeeper: - image: wurstmeister/zookeeper:latest - ports: - - "2181:2181" - container_name: zookeeper - kafka: - image: wurstmeister/kafka:latest - ports: - - "9092:9092" - expose: - - "9093" - environment: - KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka:9093,OUTSIDE://localhost:9092 - KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT - KAFKA_LISTENERS: INSIDE://0.0.0.0:9093,OUTSIDE://0.0.0.0:9092 - KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE - KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 - KAFKA_CREATE_TOPICS: "my-topic:1:1" - container_name: kafka - depends_on: - - zookeeper - volumes: - - /var/run/docker.sock:/var/run/docker.sock - mongodb: - image: mongo:latest - container_name: mongodb-container - ports: - - "27017:27017" - environment: - MONGO_INITDB_ROOT_USERNAME: root - MONGO_INITDB_ROOT_PASSWORD: example - volumes: - - mongo-data:/data/db -#sonar - code quality - sonarqube: - image: sonarqube - ports: - - "9000:9000" - environment: - SONAR_JDBC_URL: jdbc:postgresql://postgres:5432/sonar - SONAR_JDBC_USERNAME: sonar - SONAR_JDBC_PASSWORD: sonar - volumes: - - sonarqube_data:/opt/sonarqube/data - - sonarqube_logs:/opt/sonarqube/logs - - sonarqube_extensions:/opt/sonarqube/extensions -#Sonar-related postgres - postgres: - image: postgres - environment: - POSTGRES_DB: sonar - POSTGRES_USER: sonar - POSTGRES_PASSWORD: sonar - volumes: - - postgres_data:/var/lib/postgresql/data -volumes: - mongo-data: - sonarqube_data: - sonarqube_logs: - sonarqube_extensions: - postgres_data: \ No newline at end of file diff --git a/k8s/data/mongo-data-persistentvolumeclaim.yaml b/k8s/data/mongo-data-persistentvolumeclaim.yaml new file mode 100644 index 0000000..a09b55e --- /dev/null +++ b/k8s/data/mongo-data-persistentvolumeclaim.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: mongo-data-pvc +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi diff --git a/k8s/data/postgres-data-persistentvolumeclaim.yaml b/k8s/data/postgres-data-persistentvolumeclaim.yaml new file mode 100644 index 0000000..48dab80 --- /dev/null +++ b/k8s/data/postgres-data-persistentvolumeclaim.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: postgres-data-pvc +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi diff --git a/k8s/data/sonarqube-data-persistentvolumeclaim.yaml b/k8s/data/sonarqube-data-persistentvolumeclaim.yaml new file mode 100644 index 0000000..7a85579 --- /dev/null +++ b/k8s/data/sonarqube-data-persistentvolumeclaim.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: sonarqube-data-pvc +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi diff --git a/k8s/deploy/kafka-deployment.yaml b/k8s/deploy/kafka-deployment.yaml new file mode 100644 index 0000000..b917e9b --- /dev/null +++ b/k8s/deploy/kafka-deployment.yaml @@ -0,0 +1,33 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: kafka +spec: + replicas: 1 + selector: + matchLabels: + app: kafka + template: + metadata: + labels: + app: kafka + spec: + containers: + - name: kafka + image: wurstmeister/kafka:latest + ports: + - containerPort: 9092 + - containerPort: 9093 + env: + - name: KAFKA_ADVERTISED_LISTENERS + value: "INSIDE://kafka:9093,OUTSIDE://localhost:9092" + - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP + value: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT" + - name: KAFKA_LISTENERS + value: "INSIDE://0.0.0.0:9093,OUTSIDE://0.0.0.0:9092" + - name: KAFKA_INTER_BROKER_LISTENER_NAME + value: "INSIDE" + - name: KAFKA_ZOOKEEPER_CONNECT + value: "zookeeper:2181" + - name: KAFKA_CREATE_TOPICS + value: "my-topic:1:1" diff --git a/k8s/deploy/mongodb-deployment.yaml b/k8s/deploy/mongodb-deployment.yaml new file mode 100644 index 0000000..9185a1d --- /dev/null +++ b/k8s/deploy/mongodb-deployment.yaml @@ -0,0 +1,31 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: mongodb +spec: + replicas: 1 + selector: + matchLabels: + app: mongodb + template: + metadata: + labels: + app: mongodb + spec: + containers: + - name: mongodb + image: mongo:latest + ports: + - containerPort: 27017 + env: + - name: MONGO_INITDB_ROOT_USERNAME + value: "root" + - name: MONGO_INITDB_ROOT_PASSWORD + value: "example" + volumeMounts: + - name: mongo-data + mountPath: /data/db + volumes: + - name: mongo-data + persistentVolumeClaim: + claimName: mongo-data-pvc diff --git a/k8s/deploy/postgres-deployment.yaml b/k8s/deploy/postgres-deployment.yaml new file mode 100644 index 0000000..7a5ce00 --- /dev/null +++ b/k8s/deploy/postgres-deployment.yaml @@ -0,0 +1,33 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: postgres +spec: + replicas: 1 + selector: + matchLabels: + app: postgres + template: + metadata: + labels: + app: postgres + spec: + containers: + - name: postgres + image: postgres + ports: + - containerPort: 5432 + env: + - name: POSTGRES_DB + value: "sonar" + - name: POSTGRES_USER + value: "sonar" + - name: POSTGRES_PASSWORD + value: "sonar" + volumeMounts: + - name: postgres-data + mountPath: /var/lib/postgresql/data + volumes: + - name: postgres-data + persistentVolumeClaim: + claimName: postgres-data-pvc diff --git a/k8s/deploy/sonarqube-deployment.yaml b/k8s/deploy/sonarqube-deployment.yaml new file mode 100644 index 0000000..0fb1738 --- /dev/null +++ b/k8s/deploy/sonarqube-deployment.yaml @@ -0,0 +1,43 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: sonarqube +spec: + replicas: 1 + selector: + matchLabels: + app: sonarqube + template: + metadata: + labels: + app: sonarqube + spec: + containers: + - name: sonarqube + image: sonarqube + ports: + - containerPort: 9000 + env: + - name: SONAR_JDBC_URL + value: "jdbc:postgresql://postgres:5432/sonar" + - name: SONAR_JDBC_USERNAME + value: "sonar" + - name: SONAR_JDBC_PASSWORD + value: "sonar" + volumeMounts: + - name: sonarqube-data + mountPath: /opt/sonarqube/data + - name: sonarqube-logs + mountPath: /opt/sonarqube/logs + - name: sonarqube-extensions + mountPath: /opt/sonarqube/extensions + volumes: + - name: sonarqube-data + persistentVolumeClaim: + claimName: sonarqube-data-pvc + - name: sonarqube-logs + persistentVolumeClaim: + claimName: sonarqube-logs-pvc + - name: sonarqube-extensions + persistentVolumeClaim: + claimName: sonarqube-extensions-pvc diff --git a/k8s/deploy/zookeeper-deployment.yaml b/k8s/deploy/zookeeper-deployment.yaml new file mode 100644 index 0000000..c2747e2 --- /dev/null +++ b/k8s/deploy/zookeeper-deployment.yaml @@ -0,0 +1,19 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: zookeeper +spec: + replicas: 1 + selector: + matchLabels: + app: zookeeper + template: + metadata: + labels: + app: zookeeper + spec: + containers: + - name: zookeeper + image: wurstmeister/zookeeper:latest + ports: + - containerPort: 2181 diff --git a/k8s/service/kafka-service.yaml b/k8s/service/kafka-service.yaml new file mode 100644 index 0000000..a7a1abb --- /dev/null +++ b/k8s/service/kafka-service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: kafka +spec: + ports: + - port: 9092 + targetPort: 9092 + - port: 9093 + targetPort: 9093 + selector: + app: kafka diff --git a/k8s/service/mongodb-service.yaml b/k8s/service/mongodb-service.yaml new file mode 100644 index 0000000..00a4a7d --- /dev/null +++ b/k8s/service/mongodb-service.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Service +metadata: + name: mongodb +spec: + ports: + - port: 27017 + targetPort: 27017 + selector: + app: mongodb diff --git a/k8s/service/postgres-service.yaml b/k8s/service/postgres-service.yaml new file mode 100644 index 0000000..e8f5542 --- /dev/null +++ b/k8s/service/postgres-service.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Service +metadata: + name: postgres +spec: + ports: + - port: 5432 + targetPort: 5432 + selector: + app: postgres diff --git a/k8s/service/sonarqube-service.yaml b/k8s/service/sonarqube-service.yaml new file mode 100644 index 0000000..34c7e2a --- /dev/null +++ b/k8s/service/sonarqube-service.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Service +metadata: + name: sonarqube +spec: + ports: + - port: 9000 + targetPort: 9000 + selector: + app: sonarqube diff --git a/k8s/service/zookeeper-service.yaml b/k8s/service/zookeeper-service.yaml new file mode 100644 index 0000000..fd7bc6d --- /dev/null +++ b/k8s/service/zookeeper-service.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Service +metadata: + name: zookeeper +spec: + ports: + - port: 2181 + targetPort: 2181 + selector: + app: zookeeper