From 0977b7ea47627cbbf9d5b46f2661671d2023dcc6 Mon Sep 17 00:00:00 2001 From: Swayamnakshane Date: Sun, 6 Apr 2025 07:21:41 +0000 Subject: [PATCH 01/39] pushed --- Dockerfile | 45 ++++++++++----------------------------------- docker-compose.yml | 35 +++++++++++++---------------------- 2 files changed, 23 insertions(+), 57 deletions(-) diff --git a/Dockerfile b/Dockerfile index 079acabe..28dc2e6e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,37 +1,12 @@ -#---------------------------------- -# Stage 1 -#---------------------------------- - -# Import docker image with maven installed -FROM maven:3.8.3-openjdk-17 as builder - -# Add maintainer, so that new user will understand who had written this Dockerfile -MAINTAINER Madhup Pandey - -# Add labels to the image to filter out if we have multiple application running -LABEL app=bankapp - -# Set working directory -WORKDIR /src - -# Copy source code from local to container -COPY . /src - -# Build application and skip test cases +#---------------------------------stage1----------------------------------------- +FROM maven:3.9.6-eclipse-temurin-17-alpine AS builder +WORKDIR /app +COPY . . RUN mvn clean install -DskipTests=true - -#-------------------------------------- -# Stage 2 -#-------------------------------------- - -# Import small size java image -FROM openjdk:17-alpine as deployer - -# Copy build from stage 1 (builder) -COPY --from=builder /src/target/*.jar /src/target/bankapp.jar - -# Expose application port + +#---------------------------------stage2----------------------------------------- +FROM openjdk:17-slim +WORKDIR /app +COPY --from=builder /app/target/*.jar /app/target/bank.jar EXPOSE 8080 - -# Start the application -ENTRYPOINT ["java", "-jar", "/src/target/bankapp.jar"] +CMD ["java","-jar","/app/target/bank.jar"] diff --git a/docker-compose.yml b/docker-compose.yml index 34642a09..4fb348a4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,43 +4,34 @@ services: image: mysql:latest container_name: mysql environment: - - MYSQL_ROOT_PASSWORD=Test@123 - - MYSQL_DATABASE=BankDB + MYSQL_ROOT_PASSWORD: Test@123 + MYSQL_DATABASE: bankappdb + ports: + - "3306:3306" volumes: - bankapp-volume:/var/lib/mysql networks: - bankapp - healthcheck: - test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] - interval: 10s - timeout: 5s - retries: 3 - start_period: 30s + mainapp: - image: ${DUSER}/${IMAGE} - container_name: Bankapp + image: bankapp:latest + container_name: "Bankapp" environment: - - SPRING_DATASOURCE_USERNAME=root - - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/BankDB?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC - - SPRING_DATASOURCE_PASSWORD=Test@123 + SPRING_DATASOURCE_USERNAME: root + SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/bankappdb?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC + SPRING_DATASOURCE_PASSWORD: Test@123 ports: - "8080:8080" depends_on: - mysql: - condition: service_healthy + - mysql networks: - bankapp restart: always - healthcheck: - test: ["CMD-SHELL", "curl -f http://localhost:8080/actuator/health || exit 1"] - interval: 10s - timeout: 5s - retries: 5 - start_period: 30s + networks: bankapp: volumes: - bankapp-volume: \ No newline at end of file + bankapp-volume: From 157c4f651357f6eed819e84490a99a7532212f65 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Mon, 7 Apr 2025 22:42:49 +0530 Subject: [PATCH 02/39] Update docker-compose.yml --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 4fb348a4..d7b63cdc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,7 +22,7 @@ services: SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/bankappdb?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC SPRING_DATASOURCE_PASSWORD: Test@123 ports: - - "8080:8080" + - "8081:8080" depends_on: - mysql networks: From df53f7451392b0c490c87de7bac00ed0a9aea62a Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Mon, 7 Apr 2025 22:43:09 +0530 Subject: [PATCH 03/39] Update Dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 28dc2e6e..e62bb4f2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,5 +8,5 @@ RUN mvn clean install -DskipTests=true FROM openjdk:17-slim WORKDIR /app COPY --from=builder /app/target/*.jar /app/target/bank.jar -EXPOSE 8080 +EXPOSE 8081 CMD ["java","-jar","/app/target/bank.jar"] From 3eb77515cb34c56fe2a459548c371389243e3aab Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 17:06:53 +0530 Subject: [PATCH 04/39] Update bankapp-deployment.yml --- kubernetes/bankapp-deployment.yml | 76 ++++++++++++++++--------------- 1 file changed, 40 insertions(+), 36 deletions(-) diff --git a/kubernetes/bankapp-deployment.yml b/kubernetes/bankapp-deployment.yml index 45a35b6f..d9c0ab89 100644 --- a/kubernetes/bankapp-deployment.yml +++ b/kubernetes/bankapp-deployment.yml @@ -1,58 +1,63 @@ -apiVersion: apps/v1 kind: Deployment +apiVersion: apps/v1 metadata: + name: bank-deployment + namespace: bank labels: - app: bankapp-deploy - name: bankapp-deploy - namespace: bankapp-namespace + app: bankapp spec: - replicas: 2 # Keep replicas >= 2 for high availability + replicas: 3 selector: matchLabels: - app: bankapp-deploy + app: bankapp template: metadata: labels: - app: bankapp-deploy + app: bankapp spec: containers: - - name: bankapp - image: trainwithshubham/bankapp-eks:v2 + - name: bank-pod + image: swayamnakshane/bank:latest ports: - - containerPort: 8080 + - containerPort: 8080 + + env: - - name: SPRING_DATASOURCE_URL + - name: SPRING_DATASOURCE_PASSWORD valueFrom: - configMapKeyRef: - name: bankapp-config - key: SPRING_DATASOURCE_URL + secretKeyRef: + name: bank-secret + key: SPRING_DATASOURCE_PASSWORD + - name: SPRING_DATASOURCE_USERNAME valueFrom: configMapKeyRef: - name: bankapp-config + name: bank-configmap key: SPRING_DATASOURCE_USERNAME - - name: MYSQL_DATABASE + + - name: SPRING_DATASOURCE_URL valueFrom: configMapKeyRef: - name: bankapp-config - key: MYSQL_DATABASE - - name: SPRING_DATASOURCE_PASSWORD - valueFrom: - secretKeyRef: - name: mysql-secret - key: SPRING_DATASOURCE_PASSWORD - # readinessProbe: - # httpGet: - # path: /actuator/health # Update this based on your app's health endpoint - # port: 8080 - # initialDelaySeconds: 10 - # periodSeconds: 5 - # livenessProbe: - # httpGet: - # path: /actuator/health # Update this based on your app's health endpoint - # port: 8080 - # initialDelaySeconds: 30 - # periodSeconds: 10 + name: bank-configmap + key: SPRING_DATASOURCE_URL + + +# livenessProbe: +# httpGet: +# path: /actuator/health +# port: 8080 +# initialDelaySeconds: 10 +# periodSeconds: 5 +# failureThreshold: 3 +# +# readinessProbe: +# httpGet: +# path: /actuator/health +# port: 8080 +# initialDelaySeconds: 5 +# periodSeconds: 5 +# failureThreshold: 3 + resources: requests: memory: "512Mi" @@ -60,4 +65,3 @@ spec: limits: memory: "1Gi" cpu: "500m" - From 43b6b2aaef677bf506da843ae131d6a9572ec744 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 17:07:10 +0530 Subject: [PATCH 05/39] Delete kubernetes/bankapp-hpa.yml --- kubernetes/bankapp-hpa.yml | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 kubernetes/bankapp-hpa.yml diff --git a/kubernetes/bankapp-hpa.yml b/kubernetes/bankapp-hpa.yml deleted file mode 100644 index 6c030161..00000000 --- a/kubernetes/bankapp-hpa.yml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: autoscaling/v2 -kind: HorizontalPodAutoscaler -metadata: - name: bankapp-hpa - namespace: bankapp-namespace -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: bankapp-deploy - minReplicas: 1 - maxReplicas: 5 - metrics: - - type: Resource - resource: - name: cpu - target: - type: Utilization - averageUtilization: 40 From a291f890505e33e78c038999229fe3f463ae2590 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 17:07:23 +0530 Subject: [PATCH 06/39] Delete kubernetes/bankapp-ingress.yml --- kubernetes/bankapp-ingress.yml | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 kubernetes/bankapp-ingress.yml diff --git a/kubernetes/bankapp-ingress.yml b/kubernetes/bankapp-ingress.yml deleted file mode 100644 index e1b8f06e..00000000 --- a/kubernetes/bankapp-ingress.yml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: bankapp-ingress - namespace: bankapp-namespace - annotations: - nginx.ingress.kubernetes.io/rewrite-target: / - nginx.ingress.kubernetes.io/proxy-body-size: "50m" - nginx.ingress.kubernetes.io/ssl-redirect: "true" # Force HTTPS - cert-manager.io/cluster-issuer: letsencrypt-prod # Use Let's Encrypt -spec: - ingressClassName: nginx - tls: - - hosts: - - megaproject.trainwithshubham.com - secretName: bankapp-tls-secret # Cert-Manager will manage this - rules: - - host: megaproject.trainwithshubham.com - http: - paths: - - path: / - pathType: Prefix - backend: - service: - name: bankapp-service - port: - number: 8080 - From 6837bfe919dcfd6f86637d73b15291250528d5b4 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 17:07:55 +0530 Subject: [PATCH 07/39] Update bankapp-namespace.yaml --- kubernetes/bankapp-namespace.yaml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/kubernetes/bankapp-namespace.yaml b/kubernetes/bankapp-namespace.yaml index 3a4a5170..7c039a5d 100644 --- a/kubernetes/bankapp-namespace.yaml +++ b/kubernetes/bankapp-namespace.yaml @@ -1,6 +1,4 @@ -apiVersion: v1 kind: Namespace +apiVersion: v1 metadata: - name: bankapp-namespace - labels: - name: bankapp-namespace + name: bank From 96ef1f2de9b110984c46b77f4e47ab7c244bf290 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 17:08:20 +0530 Subject: [PATCH 08/39] Update bankapp-service.yaml --- kubernetes/bankapp-service.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/kubernetes/bankapp-service.yaml b/kubernetes/bankapp-service.yaml index c63175da..b13ba96d 100644 --- a/kubernetes/bankapp-service.yaml +++ b/kubernetes/bankapp-service.yaml @@ -1,15 +1,15 @@ -apiVersion: v1 kind: Service +apiVersion: v1 metadata: - name: bankapp-service - namespace: bankapp-namespace - labels: - app: bankapp + name: bank-svc + namespace: bank spec: selector: - app: bankapp-deploy + app: bankapp ports: - - protocol: TCP - port: 8080 - targetPort: 8080 + - protocol: TCP + targetPort: 8080 + port: 8080 + nodePort: 30080 + type: NodePort From a71528ae86660b1685a8931de98e8a384ffd5065 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 17:08:48 +0530 Subject: [PATCH 09/39] Update configmap.yaml --- kubernetes/configmap.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/kubernetes/configmap.yaml b/kubernetes/configmap.yaml index f2acc025..f6ea35b5 100644 --- a/kubernetes/configmap.yaml +++ b/kubernetes/configmap.yaml @@ -1,9 +1,9 @@ -apiVersion: v1 kind: ConfigMap +apiVersion: v1 metadata: - name: bankapp-config - namespace: bankapp-namespace + name: bank-configmap + namespace: bank data: MYSQL_DATABASE: BankDB - SPRING_DATASOURCE_URL: jdbc:mysql://mysql-svc.bankapp-namespace.svc.cluster.local:3306/BankDB?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC SPRING_DATASOURCE_USERNAME: root + SPRING_DATASOURCE_URL: jdbc:mysql://mysql-svc:3306/BankDB?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC From e9d9390a37724bc6691fc62687587e77e8ab9834 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 17:09:00 +0530 Subject: [PATCH 10/39] Delete kubernetes/letsencrypt-clusterissuer.yaml --- kubernetes/letsencrypt-clusterissuer.yaml | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 kubernetes/letsencrypt-clusterissuer.yaml diff --git a/kubernetes/letsencrypt-clusterissuer.yaml b/kubernetes/letsencrypt-clusterissuer.yaml deleted file mode 100644 index 959db1b9..00000000 --- a/kubernetes/letsencrypt-clusterissuer.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: cert-manager.io/v1 -kind: ClusterIssuer -metadata: - name: letsencrypt-prod -spec: - acme: - server: https://acme-v02.api.letsencrypt.org/directory - email: trainwithshubham@gmail.com - privateKeySecretRef: - name: letsencrypt-prod-key - solvers: - - http01: - ingress: - class: nginx - From 3ff137e26d3d8acdbb351c14dda0934573cd1535 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 17:09:22 +0530 Subject: [PATCH 11/39] Update mysql-deployment.yml --- kubernetes/mysql-deployment.yml | 37 ++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/kubernetes/mysql-deployment.yml b/kubernetes/mysql-deployment.yml index c9baa53a..cc13abf8 100644 --- a/kubernetes/mysql-deployment.yml +++ b/kubernetes/mysql-deployment.yml @@ -1,12 +1,13 @@ +kind: StatefulSet apiVersion: apps/v1 -kind: Deployment metadata: - name: mysql - namespace: bankapp-namespace + name: mysql-set + namespace: bank labels: app: mysql spec: - replicas: 1 + serviceName: mysql-svc + replicas: 2 selector: matchLabels: app: mysql @@ -16,27 +17,33 @@ spec: app: mysql spec: containers: - - name: mysql - image: mysql:8.0 # Use a specific, stable version for production + - name: mysql-pod + image: mysql:latest ports: - - containerPort: 3306 + - containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: - name: mysql-secret + name: bank-secret key: MYSQL_ROOT_PASSWORD + - name: MYSQL_DATABASE valueFrom: configMapKeyRef: - name: bankapp-config + name: bank-configmap key: MYSQL_DATABASE volumeMounts: - - name: mysql-pv-storage + - name: mysql-data mountPath: /var/lib/mysql - subPath: mysql-data # Optional: Ensure a subdirectory is used for better volume organization - volumes: - - name: mysql-pv-storage - persistentVolumeClaim: - claimName: mysql-pvc + volumeClaimTemplates: + - metadata: + name: mysql-data + spec: + accessModes: + - ReadWriteOnce + storageClassName: standard + resources: + requests: + storage: 5Gi From 1574abe9bb083ae641b2666fd3ca0edb91f2d632 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 17:09:52 +0530 Subject: [PATCH 12/39] Update mysql-service.yaml --- kubernetes/mysql-service.yaml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/kubernetes/mysql-service.yaml b/kubernetes/mysql-service.yaml index 607a8ef2..8f18936f 100644 --- a/kubernetes/mysql-service.yaml +++ b/kubernetes/mysql-service.yaml @@ -1,14 +1,15 @@ -apiVersion: v1 kind: Service +apiVersion: v1 metadata: name: mysql-svc - namespace: bankapp-namespace + namespace: bank labels: app: mysql spec: + clusterIP: None selector: - app: mysql + app: mysql ports: - - protocol: TCP - port: 3306 - targetPort: 3306 + - protocol: TCP + targetPort: 3306 + port: 3306 From 7f3a681d93882cb35e4218956c169c970e457989 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 17:10:25 +0530 Subject: [PATCH 13/39] Update persistent-volume-claim.yaml --- kubernetes/persistent-volume-claim.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/kubernetes/persistent-volume-claim.yaml b/kubernetes/persistent-volume-claim.yaml index ff23dbd1..3dc945e8 100644 --- a/kubernetes/persistent-volume-claim.yaml +++ b/kubernetes/persistent-volume-claim.yaml @@ -1,12 +1,12 @@ -apiVersion: v1 kind: PersistentVolumeClaim +apiVersion: v1 metadata: - name: mysql-pvc - namespace: bankapp-namespace + name: bank-pvc + namespace: bank spec: + storageClassName: standard accessModes: - ReadWriteOnce resources: requests: - storage: 10Gi - storageClassName: standard + storage: 5Gi From c540fd69ad5338c7bce515b8438848490d8aaec2 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 17:10:48 +0530 Subject: [PATCH 14/39] Update persistent-volume.yaml --- kubernetes/persistent-volume.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/kubernetes/persistent-volume.yaml b/kubernetes/persistent-volume.yaml index efbda4d3..74c9dfd0 100644 --- a/kubernetes/persistent-volume.yaml +++ b/kubernetes/persistent-volume.yaml @@ -1,16 +1,16 @@ -apiVersion: v1 kind: PersistentVolume +apiVersion: v1 metadata: - name: mysql-pv - namespace: bankapp-namespace + name: bank-pv + namespace: bank spec: capacity: - storage: 10Gi - volumeMode: Filesystem + storage: 5Gi accessModes: - ReadWriteOnce - persistentVolumeReclaimPolicy: Retain # Keeps the PV after the PVC is deleted - storageClassName: standard # Make sure this matches your cluster's default storage class + storageClassName: standard hostPath: - path: /mnt/data/mysql - type: DirectoryOrCreate + path: "/mnt/data" + + + From b5e8149e174a4f04d8cd73986fbb7cff58ba82a3 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 17:11:11 +0530 Subject: [PATCH 15/39] Update secrets.yaml --- kubernetes/secrets.yaml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/kubernetes/secrets.yaml b/kubernetes/secrets.yaml index c6596fdb..e958a7f7 100644 --- a/kubernetes/secrets.yaml +++ b/kubernetes/secrets.yaml @@ -1,10 +1,11 @@ -apiVersion: v1 kind: Secret +apiVersion: v1 metadata: - name: mysql-secret - namespace: bankapp-namespace -type: Opaque + name: bank-secret + namespace: bank + +type: opaque data: - MYSQL_ROOT_PASSWORD: VGVzdEAxMjM= # Base64 for "Test@123" - SPRING_DATASOURCE_PASSWORD: VGVzdEAxMjM= # Base64 for "Test@123" - + MYSQL_ROOT_PASSWORD: "VGVzdEAxMjM=" + SPRING_DATASOURCE_PASSWORD: "VGVzdEAxMjM=" + From e6c97270f7ad4aa0053521b308317259d5ac94ce Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 17:22:01 +0530 Subject: [PATCH 16/39] Update configmap.yaml --- kubernetes/configmap.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kubernetes/configmap.yaml b/kubernetes/configmap.yaml index f6ea35b5..82c0a13a 100644 --- a/kubernetes/configmap.yaml +++ b/kubernetes/configmap.yaml @@ -4,6 +4,6 @@ metadata: name: bank-configmap namespace: bank data: - MYSQL_DATABASE: BankDB + MYSQL_DATABASE: bankappdb SPRING_DATASOURCE_USERNAME: root - SPRING_DATASOURCE_URL: jdbc:mysql://mysql-svc:3306/BankDB?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC + SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/bankappdb?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC From 6e8aee2695d04bac8cc584dc590c11aef487ed90 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 17:33:38 +0530 Subject: [PATCH 17/39] Update mysql-deployment.yml --- kubernetes/mysql-deployment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/mysql-deployment.yml b/kubernetes/mysql-deployment.yml index cc13abf8..ca814ea6 100644 --- a/kubernetes/mysql-deployment.yml +++ b/kubernetes/mysql-deployment.yml @@ -1,7 +1,7 @@ kind: StatefulSet apiVersion: apps/v1 metadata: - name: mysql-set + name: mysql namespace: bank labels: app: mysql From 86ad8bd72c0f55f5fdefd0c9960bd65ee4f50409 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 17:35:26 +0530 Subject: [PATCH 18/39] Update mysql-service.yaml --- kubernetes/mysql-service.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/mysql-service.yaml b/kubernetes/mysql-service.yaml index 8f18936f..93d45edb 100644 --- a/kubernetes/mysql-service.yaml +++ b/kubernetes/mysql-service.yaml @@ -1,7 +1,7 @@ kind: Service apiVersion: v1 metadata: - name: mysql-svc + name: mysql namespace: bank labels: app: mysql From d0a31ff4a20e718604035b467fd3dcd095d0724e Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 17:35:52 +0530 Subject: [PATCH 19/39] Update mysql-deployment.yml --- kubernetes/mysql-deployment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/mysql-deployment.yml b/kubernetes/mysql-deployment.yml index ca814ea6..c0d574c7 100644 --- a/kubernetes/mysql-deployment.yml +++ b/kubernetes/mysql-deployment.yml @@ -1,7 +1,7 @@ kind: StatefulSet apiVersion: apps/v1 metadata: - name: mysql + name: mysql-dep namespace: bank labels: app: mysql From 502420f05de0a3e26cded3fc54a7fe8c97950829 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 17:43:42 +0530 Subject: [PATCH 20/39] Update mysql-deployment.yml --- kubernetes/mysql-deployment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/mysql-deployment.yml b/kubernetes/mysql-deployment.yml index c0d574c7..ca814ea6 100644 --- a/kubernetes/mysql-deployment.yml +++ b/kubernetes/mysql-deployment.yml @@ -1,7 +1,7 @@ kind: StatefulSet apiVersion: apps/v1 metadata: - name: mysql-dep + name: mysql namespace: bank labels: app: mysql From 02d37d5d1310791c5d8a6176c6803492f39c6936 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 17:45:07 +0530 Subject: [PATCH 21/39] Update mysql-deployment.yml --- kubernetes/mysql-deployment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/mysql-deployment.yml b/kubernetes/mysql-deployment.yml index ca814ea6..84bc6ca8 100644 --- a/kubernetes/mysql-deployment.yml +++ b/kubernetes/mysql-deployment.yml @@ -6,7 +6,7 @@ metadata: labels: app: mysql spec: - serviceName: mysql-svc + serviceName: mysql replicas: 2 selector: matchLabels: From dfdfd18d4b412e6c1244eaa8dfce1844e0648dec Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 17:46:12 +0530 Subject: [PATCH 22/39] Update mysql-deployment.yml --- kubernetes/mysql-deployment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/mysql-deployment.yml b/kubernetes/mysql-deployment.yml index 84bc6ca8..870e43b0 100644 --- a/kubernetes/mysql-deployment.yml +++ b/kubernetes/mysql-deployment.yml @@ -1,7 +1,7 @@ kind: StatefulSet apiVersion: apps/v1 metadata: - name: mysql + name: mysql-dep namespace: bank labels: app: mysql From c56bbe92269d19ac437a2499f07113ca04dfd2db Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 17:52:48 +0530 Subject: [PATCH 23/39] Update mysql-deployment.yml --- kubernetes/mysql-deployment.yml | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/kubernetes/mysql-deployment.yml b/kubernetes/mysql-deployment.yml index 870e43b0..1ca1be09 100644 --- a/kubernetes/mysql-deployment.yml +++ b/kubernetes/mysql-deployment.yml @@ -1,5 +1,6 @@ -kind: StatefulSet +# StatefulSet for MySQL apiVersion: apps/v1 +kind: StatefulSet metadata: name: mysql-dep namespace: bank @@ -18,16 +19,15 @@ spec: spec: containers: - name: mysql-pod - image: mysql:latest + image: mysql:8.0.32 ports: - - containerPort: 3306 + - containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: bank-secret key: MYSQL_ROOT_PASSWORD - - name: MYSQL_DATABASE valueFrom: configMapKeyRef: @@ -36,7 +36,20 @@ spec: volumeMounts: - name: mysql-data mountPath: /var/lib/mysql - + livenessProbe: + exec: + command: + - mysqladmin + - ping + initialDelaySeconds: 30 + periodSeconds: 10 + readinessProbe: + exec: + command: + - mysqladmin + - ping + initialDelaySeconds: 10 + periodSeconds: 5 volumeClaimTemplates: - metadata: name: mysql-data From ddcb169226266132d5221e23b5c5aef36611752a Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 18:00:30 +0530 Subject: [PATCH 24/39] Update mysql-deployment.yml --- kubernetes/mysql-deployment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/mysql-deployment.yml b/kubernetes/mysql-deployment.yml index 1ca1be09..90779073 100644 --- a/kubernetes/mysql-deployment.yml +++ b/kubernetes/mysql-deployment.yml @@ -19,7 +19,7 @@ spec: spec: containers: - name: mysql-pod - image: mysql:8.0.32 + image: mysql:latest ports: - containerPort: 3306 env: From 15d0f2187242ddd011b1f380bf3e725cc6a7fec6 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 18:12:06 +0530 Subject: [PATCH 25/39] Update secrets.yaml --- kubernetes/secrets.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kubernetes/secrets.yaml b/kubernetes/secrets.yaml index e958a7f7..98edd56f 100644 --- a/kubernetes/secrets.yaml +++ b/kubernetes/secrets.yaml @@ -6,6 +6,6 @@ metadata: type: opaque data: - MYSQL_ROOT_PASSWORD: "VGVzdEAxMjM=" - SPRING_DATASOURCE_PASSWORD: "VGVzdEAxMjM=" + MYSQL_ROOT_PASSWORD: VGVzdEAxMjM= + SPRING_DATASOURCE_PASSWORD: VGVzdEAxMjM= From 37b6c4ecc503b9be99a265c981cd0c8f8c132c12 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 18:32:30 +0530 Subject: [PATCH 26/39] Update bankapp-deployment.yml --- kubernetes/bankapp-deployment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/bankapp-deployment.yml b/kubernetes/bankapp-deployment.yml index d9c0ab89..5dff9c68 100644 --- a/kubernetes/bankapp-deployment.yml +++ b/kubernetes/bankapp-deployment.yml @@ -17,7 +17,7 @@ spec: spec: containers: - name: bank-pod - image: swayamnakshane/bank:latest + image: swayamnakshane/bank ports: - containerPort: 8080 From e0b3c45631300bdc6c8718d5a17171ede6ffb0b9 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 18:53:22 +0530 Subject: [PATCH 27/39] Update persistent-volume.yaml --- kubernetes/persistent-volume.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/persistent-volume.yaml b/kubernetes/persistent-volume.yaml index 74c9dfd0..69b146d6 100644 --- a/kubernetes/persistent-volume.yaml +++ b/kubernetes/persistent-volume.yaml @@ -5,7 +5,7 @@ metadata: namespace: bank spec: capacity: - storage: 5Gi + storage: 15Gi accessModes: - ReadWriteOnce storageClassName: standard From cb930ce328b4b55de9741ab57bfa1d1164fe6db3 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 18:53:38 +0530 Subject: [PATCH 28/39] Update persistent-volume-claim.yaml --- kubernetes/persistent-volume-claim.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/persistent-volume-claim.yaml b/kubernetes/persistent-volume-claim.yaml index 3dc945e8..7c6784f8 100644 --- a/kubernetes/persistent-volume-claim.yaml +++ b/kubernetes/persistent-volume-claim.yaml @@ -9,4 +9,4 @@ spec: - ReadWriteOnce resources: requests: - storage: 5Gi + storage: 15Gi From ccff9925c3191f6ff280e8edb839f9b79171ba86 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 18:54:02 +0530 Subject: [PATCH 29/39] Update mysql-deployment.yml --- kubernetes/mysql-deployment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/mysql-deployment.yml b/kubernetes/mysql-deployment.yml index 90779073..a0bc4c8d 100644 --- a/kubernetes/mysql-deployment.yml +++ b/kubernetes/mysql-deployment.yml @@ -59,4 +59,4 @@ spec: storageClassName: standard resources: requests: - storage: 5Gi + storage: 15Gi From d0b64717ffce4c4819de9877d39fcb8c42042228 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 18:55:23 +0530 Subject: [PATCH 30/39] Update mysql-deployment.yml --- kubernetes/mysql-deployment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/mysql-deployment.yml b/kubernetes/mysql-deployment.yml index a0bc4c8d..04930297 100644 --- a/kubernetes/mysql-deployment.yml +++ b/kubernetes/mysql-deployment.yml @@ -59,4 +59,4 @@ spec: storageClassName: standard resources: requests: - storage: 15Gi + storage: 10Gi From 64223fb940b4d33a502cddad291ca53433b58cd0 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 18:55:39 +0530 Subject: [PATCH 31/39] Update persistent-volume-claim.yaml --- kubernetes/persistent-volume-claim.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/persistent-volume-claim.yaml b/kubernetes/persistent-volume-claim.yaml index 7c6784f8..8c65acbf 100644 --- a/kubernetes/persistent-volume-claim.yaml +++ b/kubernetes/persistent-volume-claim.yaml @@ -9,4 +9,4 @@ spec: - ReadWriteOnce resources: requests: - storage: 15Gi + storage: 10Gi From 5f2c13eff7d63439dcb990bc255276ae9898530f Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 18:56:09 +0530 Subject: [PATCH 32/39] Update persistent-volume-claim.yaml --- kubernetes/persistent-volume-claim.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/persistent-volume-claim.yaml b/kubernetes/persistent-volume-claim.yaml index 8c65acbf..3dc945e8 100644 --- a/kubernetes/persistent-volume-claim.yaml +++ b/kubernetes/persistent-volume-claim.yaml @@ -9,4 +9,4 @@ spec: - ReadWriteOnce resources: requests: - storage: 10Gi + storage: 5Gi From 7d724c01ed044d45850f7c6d04110eb6f91fb711 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 18:57:13 +0530 Subject: [PATCH 33/39] Update persistent-volume.yaml --- kubernetes/persistent-volume.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/persistent-volume.yaml b/kubernetes/persistent-volume.yaml index 69b146d6..74c9dfd0 100644 --- a/kubernetes/persistent-volume.yaml +++ b/kubernetes/persistent-volume.yaml @@ -5,7 +5,7 @@ metadata: namespace: bank spec: capacity: - storage: 15Gi + storage: 5Gi accessModes: - ReadWriteOnce storageClassName: standard From b02e0a8065be2e950760cc5583a1c1896c26efee Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 18:57:41 +0530 Subject: [PATCH 34/39] Update mysql-deployment.yml --- kubernetes/mysql-deployment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/mysql-deployment.yml b/kubernetes/mysql-deployment.yml index 04930297..90779073 100644 --- a/kubernetes/mysql-deployment.yml +++ b/kubernetes/mysql-deployment.yml @@ -59,4 +59,4 @@ spec: storageClassName: standard resources: requests: - storage: 10Gi + storage: 5Gi From 1bc0ed58237d823c4e8a1be1a58fdcc8f6f0a819 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 12 Apr 2025 19:05:49 +0530 Subject: [PATCH 35/39] Update mysql-deployment.yml From f3357df3b0b083364de788cf96569a4334bae8f2 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Fri, 18 Apr 2025 15:43:13 +0530 Subject: [PATCH 36/39] Update docker-compose.yml --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index d7b63cdc..4fb348a4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,7 +22,7 @@ services: SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/bankappdb?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC SPRING_DATASOURCE_PASSWORD: Test@123 ports: - - "8081:8080" + - "8080:8080" depends_on: - mysql networks: From 1b5fc72005f1ad38cbf084f1afbc976f219c3780 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Fri, 18 Apr 2025 19:24:02 +0530 Subject: [PATCH 37/39] Update bankapp-deployment.yml --- kubernetes/bankapp-deployment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/bankapp-deployment.yml b/kubernetes/bankapp-deployment.yml index 5dff9c68..59621173 100644 --- a/kubernetes/bankapp-deployment.yml +++ b/kubernetes/bankapp-deployment.yml @@ -17,7 +17,7 @@ spec: spec: containers: - name: bank-pod - image: swayamnakshane/bank + image: swayamnakshane/mybank:latest ports: - containerPort: 8080 From f241fe18243468041a8f8a48d8f511d5ccfc7df3 Mon Sep 17 00:00:00 2001 From: Swayamnakshane Date: Sat, 26 Apr 2025 16:10:56 +0000 Subject: [PATCH 38/39] kube added --- kube/Namespace.yml | 4 +++ kube/bank-deployement.yml | 38 ++++++++++++++++++++++++++ kube/bank-service.yml | 16 +++++++++++ kube/config.yml | 10 +++++++ kube/configmap.yml | 9 ++++++ kube/mysql-deployment.yml | 50 ++++++++++++++++++++++++++++++++++ kube/mysql-service.yml | 17 ++++++++++++ kube/persistentvolume.yml | 16 +++++++++++ kube/persistentvolumeclaim.yml | 15 ++++++++++ kube/secret.yml | 9 ++++++ 10 files changed, 184 insertions(+) create mode 100644 kube/Namespace.yml create mode 100644 kube/bank-deployement.yml create mode 100644 kube/bank-service.yml create mode 100644 kube/config.yml create mode 100644 kube/configmap.yml create mode 100644 kube/mysql-deployment.yml create mode 100644 kube/mysql-service.yml create mode 100644 kube/persistentvolume.yml create mode 100644 kube/persistentvolumeclaim.yml create mode 100644 kube/secret.yml diff --git a/kube/Namespace.yml b/kube/Namespace.yml new file mode 100644 index 00000000..7c039a5d --- /dev/null +++ b/kube/Namespace.yml @@ -0,0 +1,4 @@ +kind: Namespace +apiVersion: v1 +metadata: + name: bank diff --git a/kube/bank-deployement.yml b/kube/bank-deployement.yml new file mode 100644 index 00000000..dfc5228d --- /dev/null +++ b/kube/bank-deployement.yml @@ -0,0 +1,38 @@ +kind: Deployment +apiVersion: apps/v1 +metadata: + name: bank-deployment + namespace: bank + labels: + app: app +spec: + replicas: 3 + selector: + matchLabels: + app: app + template: + metadata: + labels: + app: app + spec: + containers: + - name: bank-cont + image: swayamnakshane/mybank:latest + ports: + - containerPort: 8081 + env: + - name: SPRING_DATASOURCE_USERNAME + valueFrom: + configMapKeyRef: + name: bank-configmap + key: SPRING_DATASOURCE_USERNAME + - name: SPRING_DATASOURCE_URL + valueFrom: + configMapKeyRef: + name: bank-configmap + key: SPRING_DATASOURCE_URL + - name: SPRING_DATASOURCE_PASSWORD + valueFrom: + secretKeyRef: + name: bank-secret + key: SPRING_DATASOURCE_PASSWORD diff --git a/kube/bank-service.yml b/kube/bank-service.yml new file mode 100644 index 00000000..c5412982 --- /dev/null +++ b/kube/bank-service.yml @@ -0,0 +1,16 @@ +kind: Service +apiVersion: v1 +metadata: + name: bank-svc + namespace: bank + labels: + app: app +spec: + type: NodePort + selector: + app: app + ports: + - protocol: TCP + targetPort: 8080 + port: 8081 + nodePort: 30080 diff --git a/kube/config.yml b/kube/config.yml new file mode 100644 index 00000000..6bb30c37 --- /dev/null +++ b/kube/config.yml @@ -0,0 +1,10 @@ +kind: Cluster +apiVersion: kind.x-k8s.io/v1alpha4 +nodes: +- role: control-plane + image: kindest/node:v1.31.2 +- role: worker + image: kindest/node:v1.31.2 +- role: worker + image: kindest/node:v1.31.2 + diff --git a/kube/configmap.yml b/kube/configmap.yml new file mode 100644 index 00000000..c6e76bc5 --- /dev/null +++ b/kube/configmap.yml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: bank-configmap + namespace: bank +data: + MYSQL_DATABASE: bankappdb + SPRING_DATASOURCE_USERNAME: root + SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/bankappdb?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC diff --git a/kube/mysql-deployment.yml b/kube/mysql-deployment.yml new file mode 100644 index 00000000..2e9c067f --- /dev/null +++ b/kube/mysql-deployment.yml @@ -0,0 +1,50 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: mysql-deployment + namespace: bank + labels: + app: bankapp +spec: + serviceName: mysql + replicas: 2 + selector: + matchLabels: + app: bankapp + template: + metadata: + labels: + app: bankapp + spec: + containers: + - name: mysql + image: mysql:latest + ports: + - containerPort: 3306 + env: + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: bank-secret + key: MYSQL_ROOT_PASSWORD + - name: MYSQL_DATABASE + valueFrom: + configMapKeyRef: + name: bank-configmap + key: MYSQL_DATABASE + volumeMounts: + - name: mysql + mountPath: /var/lib/mysql + + volumeClaimTemplates: + - metadata: + name: mysql + labels: + app: bankapp + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi + diff --git a/kube/mysql-service.yml b/kube/mysql-service.yml new file mode 100644 index 00000000..24186fc0 --- /dev/null +++ b/kube/mysql-service.yml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Service +metadata: + name: mysql + namespace: bank + labels: + app: bankapp + +spec: + clusterIP: None + selector: + app: bankapp + ports: + - protocol: TCP + port: 3306 + targetPort: 3306 + diff --git a/kube/persistentvolume.yml b/kube/persistentvolume.yml new file mode 100644 index 00000000..03ea4745 --- /dev/null +++ b/kube/persistentvolume.yml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: mysql-pv + namespace: bank + labels: + app: bankapp +spec: + storageClassName: standard + capacity: + storage: 5Gi + accessModes: + - ReadWriteOnce + hostPath: + path: "/mnt/data/mysql" + diff --git a/kube/persistentvolumeclaim.yml b/kube/persistentvolumeclaim.yml new file mode 100644 index 00000000..63b73cab --- /dev/null +++ b/kube/persistentvolumeclaim.yml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: mysql-pvc + namespace: bank + labels: + app: bankapp +spec: + storageClassName: standard + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi + diff --git a/kube/secret.yml b/kube/secret.yml new file mode 100644 index 00000000..3d282e4e --- /dev/null +++ b/kube/secret.yml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + name: bank-secret + namespace: bank +type: opaque +data: + MYSQL_ROOT_PASSWORD: VGVzdEAxMjM= + SPRING_DATASOURCE_PASSWORD: VGVzdEAxMjM= From 79468f614cfb5f50ce35dce5c43fb811e9b64376 Mon Sep 17 00:00:00 2001 From: Swayam Pradeep Nakshane Date: Sat, 26 Apr 2025 22:45:24 +0530 Subject: [PATCH 39/39] Delete kubernetes directory --- kubernetes/README.md | 245 ------------------------ kubernetes/bankapp-deployment.yml | 67 ------- kubernetes/bankapp-namespace.yaml | 4 - kubernetes/bankapp-service.yaml | 15 -- kubernetes/configmap.yaml | 9 - kubernetes/mysql-deployment.yml | 62 ------ kubernetes/mysql-service.yaml | 15 -- kubernetes/persistent-volume-claim.yaml | 12 -- kubernetes/persistent-volume.yaml | 16 -- kubernetes/secrets.yaml | 11 -- 10 files changed, 456 deletions(-) delete mode 100644 kubernetes/README.md delete mode 100644 kubernetes/bankapp-deployment.yml delete mode 100644 kubernetes/bankapp-namespace.yaml delete mode 100644 kubernetes/bankapp-service.yaml delete mode 100644 kubernetes/configmap.yaml delete mode 100644 kubernetes/mysql-deployment.yml delete mode 100644 kubernetes/mysql-service.yaml delete mode 100644 kubernetes/persistent-volume-claim.yaml delete mode 100644 kubernetes/persistent-volume.yaml delete mode 100644 kubernetes/secrets.yaml diff --git a/kubernetes/README.md b/kubernetes/README.md deleted file mode 100644 index 4db1d8b8..00000000 --- a/kubernetes/README.md +++ /dev/null @@ -1,245 +0,0 @@ -# End-to-End Setup for Deploying Applications with ArgoCD and EKS - -This README provides a complete step-by-step guide with all the commands required to set up ArgoCD on an AWS EKS cluster, deploy your applications, and configure GitOps. - ---- - -## **1. Create an EKS Cluster** - -### **Create the Cluster Without a Node Group** -```bash -eksctl create cluster --name=bankapp \ - --region=ap-south-1 \ - --version=1.31 \ - --without-nodegroup -``` - -### **Associate IAM OIDC Provider** -```bash -eksctl utils associate-iam-oidc-provider \ - --region ap-south-1 \ - --cluster bankapp \ - --approve -``` - -### **Create a Node Group** -```bash -eksctl create nodegroup --cluster=bankapp \ - --region=ap-south-1 \ - --name=bankapp \ - --node-type=t2.medium \ - --nodes=2 \ - --nodes-min=2 \ - --nodes-max=2 \ - --node-volume-size=29 \ - --ssh-access \ - --ssh-public-key=k8s-in-one-shot -``` - ---- - -## **2. Deploy ArgoCD** - -### **Create the ArgoCD Namespace** -```bash -kubectl create namespace argocd -``` - -### **Install ArgoCD Using Official Manifests** -```bash -kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml -``` - -### **Verify ArgoCD Pods** -```bash -watch kubectl get pods -n argocd -``` - -### **Install ArgoCD CLI** -```bash -curl --silent --location -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/download/v2.4.7/argocd-linux-amd64 -chmod +x /usr/local/bin/argocd -argocd version -``` - -### **Change ArgoCD Server Service Type to NodePort** -```bash -kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}' -``` - -### **Verify the NodePort Service** -```bash -kubectl get svc -n argocd -``` - -### **Expose the Port on Security Groups** -- In the AWS Console, update the security group for your EKS worker nodes to allow inbound traffic on the NodePort assigned to the `argocd-server` service. - -### **Access the ArgoCD Web UI** -- Open your browser and navigate to: - ``` - http://: - ``` - ---- - -## **3. Configure ArgoCD for EKS** - -### **Login to ArgoCD Using CLI** -```bash -argocd login : --username admin -``` - -### **Retrieve the Default Admin Password** -```bash -kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 -d -``` - -### **Check Available Clusters in ArgoCD** -```bash -argocd cluster list -``` - -### **Get the EKS Cluster Context** -```bash -kubectl config get-contexts -``` - -### **Add EKS Cluster to ArgoCD** -```bash -argocd cluster add --name bankapp-eks-cluster -``` -- Replace `` with your EKS cluster context name (e.g., `Madhup@bankapp.us-west-1.eksctl.io`). - ---- - -## **4. Deploy Applications Using ArgoCD** - -### **Prepare Kubernetes Manifests in a Git Repository** -- Organize your manifests (e.g., `namespace.yaml`, `deployment.yaml`, `service.yaml`) in a Git repository. - -### **Create an Application in ArgoCD** -```bash -argocd app create bankapp \ - --repo \ - --path \ - --dest-server https://kubernetes.default.svc \ - --dest-namespace bankapp-namespace -``` - -### **Sync the Application** -```bash -argocd app sync bankapp -``` - -### **Monitor Application Status** -```bash -argocd app list -``` - ---- - -## **5. Deploy NGINX Ingress Controller** - -### **Install NGINX Ingress Controller Using Helm** -```bash -helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx -helm repo update -helm install ingress-nginx ingress-nginx/ingress-nginx \ - --namespace ingress-nginx --create-namespace -``` - -### **Verify Installation** -Check if the NGINX Ingress Controller pods are running: -```bash -kubectl get pods -n ingress-nginx -``` - -### **Retrieve the Load Balancer IP** -Get the external IP assigned to the NGINX Ingress Controller: -```bash -kubectl get svc -n ingress-nginx -``` - -### **Update DNS** -Point your domain (`junoon.trainwithshubham.com`) to the external IP of the NGINX Load Balancer. - ---- - -## **6. Enable HTTPS for the Application** - -### **Install Cert-Manager** -```bash -kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.1/cert-manager.yaml -``` - -### **Create Let's Encrypt ClusterIssuer** -Save the following as `letsencrypt-clusterissuer.yaml`: -```yaml -apiVersion: cert-manager.io/v1 -kind: ClusterIssuer -metadata: - name: letsencrypt-prod -spec: - acme: - server: https://acme-v02.api.letsencrypt.org/directory - email: your-email@example.com - privateKeySecretRef: - name: letsencrypt-prod-key - solvers: - - http01: - ingress: - class: nginx -``` -Apply the ClusterIssuer: -```bash -kubectl apply -f letsencrypt-clusterissuer.yaml -``` - -### **Update Ingress with TLS Configuration** -- Modify your Ingress to include TLS and reference the `letsencrypt-prod` ClusterIssuer. -- Apply the updated Ingress: -```bash -kubectl apply -f -``` - -### **Verify Certificate Issuance** -```bash -kubectl get certificate -n bankapp-namespace -``` - ---- - -## **7. Verify Deployment** - -### **Check Deployed Resources** -```bash -kubectl get all -n bankapp-namespace -``` - -### **Access the Application** -- Open your browser and navigate to: - ``` - https://junoon.trainwithshubham.com - ``` - ---- - -## **8. Add Autoscaling** - -### **Install the Metrics Server** -```bash -kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml -``` - -### **Get the Top Nodes and Pods** -```bash - kubectl top nodes - kubectl top pods -n bankapp-namespace -``` -### **Apply HPA** -```bash - kubectl apply -f bankapp-hpa.yml -``` ---- - diff --git a/kubernetes/bankapp-deployment.yml b/kubernetes/bankapp-deployment.yml deleted file mode 100644 index 59621173..00000000 --- a/kubernetes/bankapp-deployment.yml +++ /dev/null @@ -1,67 +0,0 @@ -kind: Deployment -apiVersion: apps/v1 -metadata: - name: bank-deployment - namespace: bank - labels: - app: bankapp -spec: - replicas: 3 - selector: - matchLabels: - app: bankapp - template: - metadata: - labels: - app: bankapp - spec: - containers: - - name: bank-pod - image: swayamnakshane/mybank:latest - ports: - - containerPort: 8080 - - - env: - - name: SPRING_DATASOURCE_PASSWORD - valueFrom: - secretKeyRef: - name: bank-secret - key: SPRING_DATASOURCE_PASSWORD - - - name: SPRING_DATASOURCE_USERNAME - valueFrom: - configMapKeyRef: - name: bank-configmap - key: SPRING_DATASOURCE_USERNAME - - - name: SPRING_DATASOURCE_URL - valueFrom: - configMapKeyRef: - name: bank-configmap - key: SPRING_DATASOURCE_URL - - -# livenessProbe: -# httpGet: -# path: /actuator/health -# port: 8080 -# initialDelaySeconds: 10 -# periodSeconds: 5 -# failureThreshold: 3 -# -# readinessProbe: -# httpGet: -# path: /actuator/health -# port: 8080 -# initialDelaySeconds: 5 -# periodSeconds: 5 -# failureThreshold: 3 - - resources: - requests: - memory: "512Mi" - cpu: "250m" - limits: - memory: "1Gi" - cpu: "500m" diff --git a/kubernetes/bankapp-namespace.yaml b/kubernetes/bankapp-namespace.yaml deleted file mode 100644 index 7c039a5d..00000000 --- a/kubernetes/bankapp-namespace.yaml +++ /dev/null @@ -1,4 +0,0 @@ -kind: Namespace -apiVersion: v1 -metadata: - name: bank diff --git a/kubernetes/bankapp-service.yaml b/kubernetes/bankapp-service.yaml deleted file mode 100644 index b13ba96d..00000000 --- a/kubernetes/bankapp-service.yaml +++ /dev/null @@ -1,15 +0,0 @@ -kind: Service -apiVersion: v1 -metadata: - name: bank-svc - namespace: bank -spec: - selector: - app: bankapp - ports: - - protocol: TCP - targetPort: 8080 - port: 8080 - nodePort: 30080 - type: NodePort - diff --git a/kubernetes/configmap.yaml b/kubernetes/configmap.yaml deleted file mode 100644 index 82c0a13a..00000000 --- a/kubernetes/configmap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -kind: ConfigMap -apiVersion: v1 -metadata: - name: bank-configmap - namespace: bank -data: - MYSQL_DATABASE: bankappdb - SPRING_DATASOURCE_USERNAME: root - SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/bankappdb?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC diff --git a/kubernetes/mysql-deployment.yml b/kubernetes/mysql-deployment.yml deleted file mode 100644 index 90779073..00000000 --- a/kubernetes/mysql-deployment.yml +++ /dev/null @@ -1,62 +0,0 @@ -# StatefulSet for MySQL -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: mysql-dep - namespace: bank - labels: - app: mysql -spec: - serviceName: mysql - replicas: 2 - selector: - matchLabels: - app: mysql - template: - metadata: - labels: - app: mysql - spec: - containers: - - name: mysql-pod - image: mysql:latest - ports: - - containerPort: 3306 - env: - - name: MYSQL_ROOT_PASSWORD - valueFrom: - secretKeyRef: - name: bank-secret - key: MYSQL_ROOT_PASSWORD - - name: MYSQL_DATABASE - valueFrom: - configMapKeyRef: - name: bank-configmap - key: MYSQL_DATABASE - volumeMounts: - - name: mysql-data - mountPath: /var/lib/mysql - livenessProbe: - exec: - command: - - mysqladmin - - ping - initialDelaySeconds: 30 - periodSeconds: 10 - readinessProbe: - exec: - command: - - mysqladmin - - ping - initialDelaySeconds: 10 - periodSeconds: 5 - volumeClaimTemplates: - - metadata: - name: mysql-data - spec: - accessModes: - - ReadWriteOnce - storageClassName: standard - resources: - requests: - storage: 5Gi diff --git a/kubernetes/mysql-service.yaml b/kubernetes/mysql-service.yaml deleted file mode 100644 index 93d45edb..00000000 --- a/kubernetes/mysql-service.yaml +++ /dev/null @@ -1,15 +0,0 @@ -kind: Service -apiVersion: v1 -metadata: - name: mysql - namespace: bank - labels: - app: mysql -spec: - clusterIP: None - selector: - app: mysql - ports: - - protocol: TCP - targetPort: 3306 - port: 3306 diff --git a/kubernetes/persistent-volume-claim.yaml b/kubernetes/persistent-volume-claim.yaml deleted file mode 100644 index 3dc945e8..00000000 --- a/kubernetes/persistent-volume-claim.yaml +++ /dev/null @@ -1,12 +0,0 @@ -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: bank-pvc - namespace: bank -spec: - storageClassName: standard - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 5Gi diff --git a/kubernetes/persistent-volume.yaml b/kubernetes/persistent-volume.yaml deleted file mode 100644 index 74c9dfd0..00000000 --- a/kubernetes/persistent-volume.yaml +++ /dev/null @@ -1,16 +0,0 @@ -kind: PersistentVolume -apiVersion: v1 -metadata: - name: bank-pv - namespace: bank -spec: - capacity: - storage: 5Gi - accessModes: - - ReadWriteOnce - storageClassName: standard - hostPath: - path: "/mnt/data" - - - diff --git a/kubernetes/secrets.yaml b/kubernetes/secrets.yaml deleted file mode 100644 index 98edd56f..00000000 --- a/kubernetes/secrets.yaml +++ /dev/null @@ -1,11 +0,0 @@ -kind: Secret -apiVersion: v1 -metadata: - name: bank-secret - namespace: bank - -type: opaque -data: - MYSQL_ROOT_PASSWORD: VGVzdEAxMjM= - SPRING_DATASOURCE_PASSWORD: VGVzdEAxMjM= -