diff --git a/.env b/.env new file mode 100644 index 0000000..7a198cf --- /dev/null +++ b/.env @@ -0,0 +1,6 @@ +MYSQL_HOST=172.31.28.241 +MYSQL_USER=root +MYSQL_PASSWORD=root@@123 +MYSQL_NAME=hms +MYSQL_ROOT_PASSWORD=root@@123 +MYSQL_PORT=3306 diff --git a/1 b/1 new file mode 100644 index 0000000..26b842f --- /dev/null +++ b/1 @@ -0,0 +1,33 @@ +services: + # Use a more descriptive service name + frontend: + build: ./Doctor-Patient-Portal # Build the frontend image from the current directory + ports: + - "8083:8083" + # Map container port 8085 to host port 8080 (standard HTTP) + environment: + - MYSQL_HOST=${MYSQL_HOST} # Use the service name of the database container + - MYSQL_NAME=${MYSQL_NAME} # Standard MySQL port # Add other environment variables from .env (see note) + - MYSQL_PASSWORD=${MYSQL_PASSWORD} + - MYSQL_USER=${MYSQL_USER} + depends_on: + - db # Ensure database is ready before starting frontend + + + + # Use a more descriptive service name + db: + image: mysql:8.0 # Build the database image from the directory named 'db' + ports: + - "3306:3306" + environment: + - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} # Consider using a stronger password + - MYSQL_NAME=${MYSQL_NAME} + - MYSQL_PASSWORD=${MYSQL_PASSWORD} + volumes: + - ./init.sql:/docker-entrypoint-initdb.d/init.sql + healthcheck: + test: ["CMD","mysqladmin","ping"] + interval: 10s + timeout: 5s + retries: 3 diff --git a/Doctor-Patient-Portal/1 b/Doctor-Patient-Portal/1 new file mode 100644 index 0000000..b0132ce --- /dev/null +++ b/Doctor-Patient-Portal/1 @@ -0,0 +1,10 @@ +FROM openjdk:17-alpine AS builder +RUN apk add --no-cache ca-certificates && update-ca-certificates +WORKDIR /app +RUN apk add --no-cache maven +COPY . . +RUN mvn clean package -DskipTests=true +FROM tomcat:9-alpine +COPY --from=builder /app/target/*.war /usr/local/tomcat/webapps/ +EXPOSE 8080 +CMD ["catalina.sh", "run"] diff --git a/Doctor-Patient-Portal/Dockerfile b/Doctor-Patient-Portal/Dockerfile new file mode 100644 index 0000000..cdf62a1 --- /dev/null +++ b/Doctor-Patient-Portal/Dockerfile @@ -0,0 +1,13 @@ +# Builder stage +FROM maven:3.8.5-openjdk-17-slim AS builder +WORKDIR /app +COPY pom.xml . +RUN mvn dependency:go-offline +COPY src ./src +RUN mvn package + +# Tomcat stage +FROM tomcat:9-alpine +COPY --from=builder /app/target/*.war /usr/local/tomcat/webapps/ +EXPOSE 8080 +CMD ["catalina.sh", "run"] diff --git a/Doctor-Patient-Portal/Jenkinsfile b/Doctor-Patient-Portal/Jenkinsfile new file mode 100644 index 0000000..b956aa3 --- /dev/null +++ b/Doctor-Patient-Portal/Jenkinsfile @@ -0,0 +1,115 @@ +pipeline { + agent any + + tools { + jdk 'jdk' + maven 'maven' + } + + environment { + SCANNER_HOME= tool 'sonar-scanner' + } + + stages { + stage('Git Checkout') { + steps { + echo 'git login' + git branch: 'main', changelog: false, poll: false, url: 'https://github.com/17J/Doctor-Patient-Portal-AdvanceJavaWebProject.git' + } + } + stage('Compile') { + steps { + dir('/var/lib/jenkins/workspace/doctor-portal/Doctor-Patient-Portal/') { + sh "mvn compile" + } + } + } + stage('Test') { + steps { + dir('/var/lib/jenkins/workspace/doctor-portal/Doctor-Patient-Portal/') { + sh "mvn test -DskipTests=true" + } + } + } + stage('File System Scan') { + steps { + sh "trivy fs --format table -o trivy-fs-report.html ." + } + } + stage('SonarQube Analsyis') { + steps { + withSonarQubeEnv('sonar-scanner') { + sh ''' $SCANNER_HOME/bin/sonar-scanner -Dsonar.projectName=doctor -Dsonar.projectKey=doctor \ + -Dsonar.java.binaries=. ''' + } + } + } + stage('Quality Gate') { + steps { + script { + waitForQualityGate abortPipeline: false, credentialsId: 'sonar-cred' + } + } + } + stage('Build') { + steps { + dir('/var/lib/jenkins/workspace/doctor-portal/Doctor-Patient-Portal/') { + sh "mvn package -DskipTests=true" + } + } + } + stage('Build & Tag Docker Image') { + steps { + script { + withDockerRegistry(credentialsId: 'docker-cred', toolName: 'docker') { + dir('/var/lib/jenkins/workspace/doctor-portal/Doctor-Patient-Portal/') { + sh "docker build -t maind ." + sh "docker tag maind 17rj/doctor-patient" + } + + + } + } + } + } + stage('Docker Image Scan') { + steps { + sh "trivy image --format table -o trivy-image-report.html 17rj/doctor-patient " + } + } + stage('Docker Image Push') { + steps { + script { + withDockerRegistry(credentialsId: 'docker-cred', toolName: 'docker') { + dir('/var/lib/jenkins/workspace/doctor-portal/Doctor-Patient-Portal/') { + sh "docker push 17rj/doctor-patient:latest" + } + + } + } + } + } + stage('Deploy To Kubernetes') { + steps { + withKubeConfig(caCertificate: '', clusterName: 'main-eks17', contextName: '', credentialsId: 'kube-cred', namespace: 'webapps', restrictKubeConfigAccess: false, serverUrl: 'https://4D4C6465D0EABEF232FFC5BE0AA9F3B3.gr7.us-east-1.eks.amazonaws.com') { + dir('/var/lib/jenkins/workspace/doctor-portal/K8s/') { + sh "kubectl apply -f fullstack-db.yml -n webapps" + sh "kubectl apply -f fullstack-service-deployment.yml -n webapps" + sleep 60 + } + } + } + } + stage('Verify To Kubernetes') { + steps { + withKubeConfig(caCertificate: '', clusterName: 'main-eks17', contextName: '', credentialsId: 'kube-cred', namespace: 'webapps', restrictKubeConfigAccess: false, serverUrl: 'https://4D4C6465D0EABEF232FFC5BE0AA9F3B3.gr7.us-east-1.eks.amazonaws.com') { + + sh "kubectl get pods -n webapps" + sh "kubectl get svc -n webapps" + + + } + } + } + } +} diff --git a/Doctor-Patient-Portal/pom.xml b/Doctor-Patient-Portal/pom.xml index 0b7669a..113d7a3 100644 --- a/Doctor-Patient-Portal/pom.xml +++ b/Doctor-Patient-Portal/pom.xml @@ -54,4 +54,19 @@ Doctor-Patient-Portal + + 1.8 + 1.8 + + + + maven-releases + http://34.207.189.118:8081/repository/maven-releases/ + + + maven-snapshots + http://34.207.189.118:8081/repository/maven-snapshots/ + + + diff --git a/Doctor-Patient-Portal/src/main/application.properties b/Doctor-Patient-Portal/src/main/application.properties new file mode 100644 index 0000000..ad488fe --- /dev/null +++ b/Doctor-Patient-Portal/src/main/application.properties @@ -0,0 +1,4 @@ +spring.datasource.url=jdbc:mysql://:/ +spring.datasource.username= +spring.datasource.password= +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver diff --git a/Doctor-Patient-Portal/src/main/java/com/hms/db/DBConnection.java b/Doctor-Patient-Portal/src/main/java/com/hms/db/DBConnection.java index 4bb4c9a..5027a69 100644 --- a/Doctor-Patient-Portal/src/main/java/com/hms/db/DBConnection.java +++ b/Doctor-Patient-Portal/src/main/java/com/hms/db/DBConnection.java @@ -15,7 +15,7 @@ public static Connection getConn() { Class.forName("com.mysql.cj.jdbc.Driver"); //step:2- create a connection - conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/hospital","root","wasim"); + conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/hms","root","root@@123"); } catch (Exception e) { e.printStackTrace(); diff --git a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/AdminLoginServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/AdminLoginServlet.class deleted file mode 100644 index 3106d87..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/AdminLoginServlet.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/AdminLogoutServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/AdminLogoutServlet.class deleted file mode 100644 index 48a01ac..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/AdminLogoutServlet.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/DeleteDoctorServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/DeleteDoctorServlet.class deleted file mode 100644 index 31719cf..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/DeleteDoctorServlet.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/DoctorServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/DoctorServlet.class deleted file mode 100644 index 9cd5fd3..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/DoctorServlet.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/SpecialistServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/SpecialistServlet.class deleted file mode 100644 index 748428a..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/SpecialistServlet.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/UpdateDoctorServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/UpdateDoctorServlet.class deleted file mode 100644 index e1cff43..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/UpdateDoctorServlet.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/dao/AppointmentDAO.class b/Doctor-Patient-Portal/target/classes/com/hms/dao/AppointmentDAO.class deleted file mode 100644 index 31d2b89..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/dao/AppointmentDAO.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/dao/DoctorDAO.class b/Doctor-Patient-Portal/target/classes/com/hms/dao/DoctorDAO.class deleted file mode 100644 index 3b9f9f4..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/dao/DoctorDAO.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/dao/SpecialistDAO.class b/Doctor-Patient-Portal/target/classes/com/hms/dao/SpecialistDAO.class deleted file mode 100644 index 4d30220..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/dao/SpecialistDAO.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/dao/UserDAO.class b/Doctor-Patient-Portal/target/classes/com/hms/dao/UserDAO.class deleted file mode 100644 index 6718112..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/dao/UserDAO.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/db/DBConnection.class b/Doctor-Patient-Portal/target/classes/com/hms/db/DBConnection.class deleted file mode 100644 index 7a8af4e..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/db/DBConnection.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorChangePassword.class b/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorChangePassword.class deleted file mode 100644 index cbd0aeb..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorChangePassword.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorEditProfileServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorEditProfileServlet.class deleted file mode 100644 index 6d936a5..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorEditProfileServlet.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorLoginServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorLoginServlet.class deleted file mode 100644 index c503997..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorLoginServlet.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorLogoutServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorLogoutServlet.class deleted file mode 100644 index ff5af57..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorLogoutServlet.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/UpdateStatus.class b/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/UpdateStatus.class deleted file mode 100644 index 042723b..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/UpdateStatus.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/entity/Appointment.class b/Doctor-Patient-Portal/target/classes/com/hms/entity/Appointment.class deleted file mode 100644 index a83cd11..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/entity/Appointment.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/entity/Doctor.class b/Doctor-Patient-Portal/target/classes/com/hms/entity/Doctor.class deleted file mode 100644 index 15cd34c..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/entity/Doctor.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/entity/Specialist.class b/Doctor-Patient-Portal/target/classes/com/hms/entity/Specialist.class deleted file mode 100644 index fef3d01..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/entity/Specialist.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/entity/User.class b/Doctor-Patient-Portal/target/classes/com/hms/entity/User.class deleted file mode 100644 index 4426d20..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/entity/User.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/AppointmentServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/AppointmentServlet.class deleted file mode 100644 index 3b42479..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/AppointmentServlet.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/ChangePasswordServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/ChangePasswordServlet.class deleted file mode 100644 index 5f4fcb6..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/ChangePasswordServlet.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/MyNewServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/MyNewServlet.class deleted file mode 100644 index b79f619..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/MyNewServlet.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/UserLoginServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/UserLoginServlet.class deleted file mode 100644 index da9f53e..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/UserLoginServlet.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/UserLogoutServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/UserLogoutServlet.class deleted file mode 100644 index 5487159..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/UserLogoutServlet.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/UserRegisterServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/UserRegisterServlet.class deleted file mode 100644 index b12d40a..0000000 Binary files a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/UserRegisterServlet.class and /dev/null differ diff --git a/Doctor-Patient-Portal/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF b/Doctor-Patient-Portal/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF deleted file mode 100644 index ca0356f..0000000 --- a/Doctor-Patient-Portal/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF +++ /dev/null @@ -1,4 +0,0 @@ -Manifest-Version: 1.0 -Build-Jdk-Spec: 18 -Created-By: Maven Integration for Eclipse - diff --git a/Doctor-Patient-Portal/target/m2e-wtp/web-resources/META-INF/maven/com.hms/Doctor-Patient-Portal/pom.properties b/Doctor-Patient-Portal/target/m2e-wtp/web-resources/META-INF/maven/com.hms/Doctor-Patient-Portal/pom.properties deleted file mode 100644 index 5d871cb..0000000 --- a/Doctor-Patient-Portal/target/m2e-wtp/web-resources/META-INF/maven/com.hms/Doctor-Patient-Portal/pom.properties +++ /dev/null @@ -1,7 +0,0 @@ -#Generated by Maven Integration for Eclipse -#Fri Dec 02 13:54:47 BDT 2022 -artifactId=Doctor-Patient-Portal -groupId=com.hms -m2e.projectLocation=F\:\\0-Wasim\\Eclipse Web project workspace\\Doctor-Patient-Portal -m2e.projectName=Doctor-Patient-Portal -version=0.0.1-SNAPSHOT diff --git a/Doctor-Patient-Portal/target/m2e-wtp/web-resources/META-INF/maven/com.hms/Doctor-Patient-Portal/pom.xml b/Doctor-Patient-Portal/target/m2e-wtp/web-resources/META-INF/maven/com.hms/Doctor-Patient-Portal/pom.xml deleted file mode 100644 index 0b7669a..0000000 --- a/Doctor-Patient-Portal/target/m2e-wtp/web-resources/META-INF/maven/com.hms/Doctor-Patient-Portal/pom.xml +++ /dev/null @@ -1,57 +0,0 @@ - - 4.0.0 - com.hms - Doctor-Patient-Portal - war - 0.0.1-SNAPSHOT - Doctor-Patient-Portal Maven Webapp - http://maven.apache.org - - - junit - junit - 3.8.1 - test - - - - javax.servlet - javax.servlet-api - 4.0.1 - provided - - - - - mysql - mysql-connector-java - 8.0.28 - - - - - javax.servlet - jstl - 1.2 - - - - - javax.el - javax.el-api - 3.0.0 - - - - - - - - org.apache.maven.plugins - maven-war-plugin - 3.3.1 - - - Doctor-Patient-Portal - - diff --git a/K8s/fullstack-db.yml b/K8s/fullstack-db.yml new file mode 100644 index 0000000..15c7ce5 --- /dev/null +++ b/K8s/fullstack-db.yml @@ -0,0 +1,137 @@ +--- +apiVersion: v1 +kind: Secret +metadata: + name: mysql-secret +type: Opaque +data: + password: cm9vdEBAMTIz +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: mysql + namespace: webapps + labels: + app: mysql +spec: + replicas: 1 + selector: + matchLabels: + app: mysql + template: + metadata: + labels: + app: mysql + spec: + containers: + - name: mysql + image: mysql:latest + ports: + - containerPort: 3306 + env: + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: mysql-secret + key: password + + volumeMounts: + - name: my-volume + mountPath: /data + - name: my-sql-script + mountPath: /docker-entrypoint-initdb.d + volumes: + - name: my-volume + persistentVolumeClaim: + claimName: mysql-pv-claim-new + - name: my-sql-script + configMap: + name: my-sql-script + +--- +apiVersion: v1 +kind: Service +metadata: + name: mysql-service + namespace: webapps +spec: + selector: + app: mysql + ports: + - protocol: TCP + port: 3306 + targetPort: 3306 + type: ClusterIP + +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: my-sql-script +data: + init.sql: | + CREATE DATABASE IF NOT EXISTS hms; + #CREATE USER 'root'@'mysql-service' IDENTIFIED BY 'root@@123'; + #GRANT ALL PRIVILEGES ON hms.* TO 'root'@'mysql-service'; + USE hms; + CREATE TABLE users ( + id INT NOT NULL PRIMARY KEY, + full_name VARCHAR(255) NOT NULL, + email VARCHAR(255) NOT NULL UNIQUE, + password VARCHAR(255) NOT NULL + ); + CREATE TABLE user_details ( + id INT PRIMARY KEY AUTO_INCREMENT, + full_name VARCHAR(255) NOT NULL, + email VARCHAR(255) NOT NULL UNIQUE, + password VARCHAR(255) NOT NULL + ); + CREATE TABLE doctor ( + id INT PRIMARY KEY AUTO_INCREMENT, + fullName VARCHAR(255) NOT NULL, + dateOfBirth DATE, + qualification VARCHAR(255), + specialist VARCHAR(255), + email VARCHAR(255) NOT NULL UNIQUE, + phone VARCHAR(20), + password VARCHAR(255) NOT NULL + ); + CREATE TABLE specialist ( + id INT PRIMARY KEY AUTO_INCREMENT, + specialist_name VARCHAR(255) NOT NULL UNIQUE + ); + CREATE TABLE appointment ( + id INT PRIMARY KEY AUTO_INCREMENT, + userId INT NOT NULL, + fullName VARCHAR(255) NOT NULL, + gender VARCHAR(10), + age VARCHAR(3), + appointmentDate DATETIME NOT NULL, + email VARCHAR(255) NOT NULL, + phone VARCHAR(20), + diseases TEXT, + doctorId INT NOT NULL, + address TEXT, + status VARCHAR(255) + ); + ALTER TABLE appointment + ADD CONSTRAINT fk_appointment_doctor FOREIGN KEY (doctorId) REFERENCES doctor(id); + INSERT INTO doctor (fullName, dateOfBirth, qualification, specialist, email, phone, password) + VALUES ('Dr. John Doe', '1980-01-01', 'MD', 'General Medicine', 'johndoe@example.com', '1234567890', 'password123'); + INSERT INTO doctor (fullName, dateOfBirth, qualification, specialist, email, phone, password) + VALUES ('Dr. Maria', '1975-01-01', 'MBBS', 'Dermatology', 'maria@example.com', '1234567890', 'password123'); + +--- + +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: mysql-pv-claim-new +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + # storageClassName: my-ebs-sc diff --git a/K8s/fullstack-service-deployment.yml b/K8s/fullstack-service-deployment.yml new file mode 100644 index 0000000..67762f0 --- /dev/null +++ b/K8s/fullstack-service-deployment.yml @@ -0,0 +1,39 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: frontend-deployment + namespace: webapps + labels: + app: frontend +spec: + replicas: 1 + selector: + matchLabels: + app: frontend + template: + metadata: + labels: + app: frontend + spec: + containers: + - name: frontend + image: 17rj/doctor_patient_portals:latest + ports: + - containerPort: 8080 + + +--- +apiVersion: v1 +kind: Service +metadata: + name: frontend-service + namespace: webapps +spec: + selector: + app: frontend + type: LoadBalancer + ports: + - protocol: TCP + port: 8080 + targetPort: 8080 diff --git a/MY_EKS_Terraform/main.tf b/MY_EKS_Terraform/main.tf new file mode 100644 index 0000000..d3e200b --- /dev/null +++ b/MY_EKS_Terraform/main.tf @@ -0,0 +1,175 @@ +provider "aws" { + region = "us-east-1" +} + +resource "aws_vpc" "latestdevops_vpc" { + cidr_block = "10.0.0.0/16" + + tags = { + Name = "latestdevops-vpc" + } +} + +resource "aws_subnet" "latestdevops_subnet" { + count = 2 + vpc_id = aws_vpc.latestdevops_vpc.id + cidr_block = cidrsubnet(aws_vpc.latestdevops_vpc.cidr_block, 8, count.index) + availability_zone = element(["us-east-1a", "us-east-1b"], count.index) + map_public_ip_on_launch = true + + tags = { + Name = "latestdevops-subnet-${count.index}" + } +} + +resource "aws_internet_gateway" "latestdevops_igw" { + vpc_id = aws_vpc.latestdevops_vpc.id + + tags = { + Name = "latestdevops-igw" + } +} + +resource "aws_route_table" "latestdevops_route_table" { + vpc_id = aws_vpc.latestdevops_vpc.id + + route { + cidr_block = "0.0.0.0/0" + gateway_id = aws_internet_gateway.latestdevops_igw.id + } + + tags = { + Name = "latestdevops-route-table" + } +} + +resource "aws_route_table_association" "a" { + count = 2 + subnet_id = aws_subnet.latestdevops_subnet[count.index].id + route_table_id = aws_route_table.latestdevops_route_table.id +} + +resource "aws_security_group" "latestdevops_cluster_sg" { + vpc_id = aws_vpc.latestdevops_vpc.id + + egress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = ["0.0.0.0/0"] + } + + tags = { + Name = "latestdevops-cluster-sg" + } +} + +resource "aws_security_group" "latestdevops_node_sg" { + vpc_id = aws_vpc.latestdevops_vpc.id + + ingress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = ["0.0.0.0/0"] + } + + egress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = ["0.0.0.0/0"] + } + + tags = { + Name = "latestdevops-node-sg" + } +} + +resource "aws_eks_cluster" "latestdevops" { + name = "latestdevops-cluster" + role_arn = aws_iam_role.latestdevops_cluster_role.arn + + vpc_config { + subnet_ids = aws_subnet.latestdevops_subnet[*].id + security_group_ids = [aws_security_group.latestdevops_cluster_sg.id] + } +} + +resource "aws_eks_node_group" "latestdevops" { + cluster_name = aws_eks_cluster.latestdevops.name + node_group_name = "latestdevops-node-group" + node_role_arn = aws_iam_role.latestdevops_node_group_role.arn + subnet_ids = aws_subnet.latestdevops_subnet[*].id + + scaling_config { + desired_size = 3 + max_size = 3 + min_size = 3 + } + + instance_types = ["t2.large"] + + remote_access { + ec2_ssh_key = var.ssh_key_name + source_security_group_ids = [aws_security_group.latestdevops_node_sg.id] + } +} + +resource "aws_iam_role" "latestdevops_cluster_role" { + name = "latestdevops-cluster-role" + + assume_role_policy = <