From 494a8772a4acad6f10dc676c2c072abaabb956c1 Mon Sep 17 00:00:00 2001 From: lisandrofernando Date: Thu, 22 Jan 2026 09:19:41 -0600 Subject: [PATCH 1/5] Adding deployment files --- Dockerfile | 12 ++++++++++++ README.md | 2 ++ deploy.sh | 26 ++++++++++++++++++++++++++ k8s-deployment.yaml | 40 ++++++++++++++++++++++++++++++++++++++++ k8s-ingress.yaml | 21 +++++++++++++++++++++ k8s-service.yaml | 14 ++++++++++++++ 6 files changed, 115 insertions(+) create mode 100644 Dockerfile create mode 100755 deploy.sh create mode 100644 k8s-deployment.yaml create mode 100644 k8s-ingress.yaml create mode 100644 k8s-service.yaml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..9a81bec7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM maven:3.8.4-openjdk-8 AS build +WORKDIR /app +COPY pom.xml . +RUN mvn dependency:go-offline +COPY src ./src +RUN mvn clean package -DskipTests + +FROM tomcat:8.5-jre8-alpine +RUN rm -rf /usr/local/tomcat/webapps/* +COPY --from=build /app/target/*.war /usr/local/tomcat/webapps/ROOT.war +EXPOSE 8080 +CMD ["catalina.sh", "run"] \ No newline at end of file diff --git a/README.md b/README.md index 86abd74d..613bc625 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ designed. Please note this example uses and requires Java 8 to work. ![Addressbook Screenshot](addressbook_screenshot.png "Addressbook Screenshot") + Running the example from the command line ------------------- ``` @@ -64,3 +65,4 @@ To use the built in server adapters of Eclipse, instead of doing "Run As -> Mave - Run As -> Run on Server - Select the server you want to run on, e.g. Apache Tomcat 8 and click ok - *Do not use the suggested J2EE Preview server* as it is outdated, deprecated and does not support Servlet 3, which is required for this application +-- diff --git a/deploy.sh b/deploy.sh new file mode 100755 index 00000000..6cf2961a --- /dev/null +++ b/deploy.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Build and push Docker image +echo "Building Docker image..." +docker build -t addressbook:latest . + +# Tag for ECR (replace with your ECR repository URI) +ECR_REPO="your-account-id.dkr.ecr.your-region.amazonaws.com/addressbook" +docker tag addressbook:latest $ECR_REPO:latest + +# Push to ECR +echo "Pushing to ECR..." +aws ecr get-login-password --region your-region | docker login --username AWS --password-stdin $ECR_REPO +docker push $ECR_REPO:latest + +# Update deployment with ECR image +sed -i "s|image: addressbook:latest|image: $ECR_REPO:latest|g" k8s-deployment.yaml + +# Deploy to Kubernetes +echo "Deploying to Kubernetes..." +kubectl apply -f k8s-deployment.yaml +kubectl apply -f k8s-service.yaml +kubectl apply -f k8s-ingress.yaml + +echo "Deployment complete!" +echo "Check status with: kubectl get pods,svc,ingress" \ No newline at end of file diff --git a/k8s-deployment.yaml b/k8s-deployment.yaml new file mode 100644 index 00000000..2a6b8f80 --- /dev/null +++ b/k8s-deployment.yaml @@ -0,0 +1,40 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: addressbook-app + labels: + app: addressbook +spec: + replicas: 2 + selector: + matchLabels: + app: addressbook + template: + metadata: + labels: + app: addressbook + spec: + containers: + - name: addressbook + image: addressbook:latest + ports: + - containerPort: 8080 + resources: + requests: + memory: "256Mi" + cpu: "250m" + limits: + memory: "512Mi" + cpu: "500m" + livenessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 60 + periodSeconds: 30 + readinessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 30 + periodSeconds: 10 \ No newline at end of file diff --git a/k8s-ingress.yaml b/k8s-ingress.yaml new file mode 100644 index 00000000..c41ffb38 --- /dev/null +++ b/k8s-ingress.yaml @@ -0,0 +1,21 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: addressbook-ingress + annotations: + kubernetes.io/ingress.class: alb + alb.ingress.kubernetes.io/scheme: internet-facing + alb.ingress.kubernetes.io/target-type: ip + alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]' + alb.ingress.kubernetes.io/ssl-redirect: '443' +spec: + rules: + - http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: addressbook-service + port: + number: 80 \ No newline at end of file diff --git a/k8s-service.yaml b/k8s-service.yaml new file mode 100644 index 00000000..4fb073a4 --- /dev/null +++ b/k8s-service.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + name: addressbook-service + labels: + app: addressbook +spec: + type: LoadBalancer + ports: + - port: 80 + targetPort: 8080 + protocol: TCP + selector: + app: addressbook \ No newline at end of file From 0d4758be43fb5a06084204adb91c29cd36dd8c95 Mon Sep 17 00:00:00 2001 From: lisandrofernando Date: Thu, 22 Jan 2026 10:26:58 -0600 Subject: [PATCH 2/5] Conf the deployment file --- k8s-deployment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8s-deployment.yaml b/k8s-deployment.yaml index 2a6b8f80..989941c4 100644 --- a/k8s-deployment.yaml +++ b/k8s-deployment.yaml @@ -16,7 +16,7 @@ spec: spec: containers: - name: addressbook - image: addressbook:latest + image: lisandroaws/project-k8s:latest ports: - containerPort: 8080 resources: From 862c5cb85f9fae0136e8f79154b1f999a129c86a Mon Sep 17 00:00:00 2001 From: lisandrofernando Date: Thu, 22 Jan 2026 11:00:22 -0600 Subject: [PATCH 3/5] Removing duplicated files --- Dockerfile | 12 ------------ deploy.sh | 26 -------------------------- k8s-deployment.yaml | 40 ---------------------------------------- k8s-ingress.yaml | 21 --------------------- k8s-service.yaml | 14 -------------- 5 files changed, 113 deletions(-) delete mode 100644 Dockerfile delete mode 100755 deploy.sh delete mode 100644 k8s-deployment.yaml delete mode 100644 k8s-ingress.yaml delete mode 100644 k8s-service.yaml diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 9a81bec7..00000000 --- a/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM maven:3.8.4-openjdk-8 AS build -WORKDIR /app -COPY pom.xml . -RUN mvn dependency:go-offline -COPY src ./src -RUN mvn clean package -DskipTests - -FROM tomcat:8.5-jre8-alpine -RUN rm -rf /usr/local/tomcat/webapps/* -COPY --from=build /app/target/*.war /usr/local/tomcat/webapps/ROOT.war -EXPOSE 8080 -CMD ["catalina.sh", "run"] \ No newline at end of file diff --git a/deploy.sh b/deploy.sh deleted file mode 100755 index 6cf2961a..00000000 --- a/deploy.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -# Build and push Docker image -echo "Building Docker image..." -docker build -t addressbook:latest . - -# Tag for ECR (replace with your ECR repository URI) -ECR_REPO="your-account-id.dkr.ecr.your-region.amazonaws.com/addressbook" -docker tag addressbook:latest $ECR_REPO:latest - -# Push to ECR -echo "Pushing to ECR..." -aws ecr get-login-password --region your-region | docker login --username AWS --password-stdin $ECR_REPO -docker push $ECR_REPO:latest - -# Update deployment with ECR image -sed -i "s|image: addressbook:latest|image: $ECR_REPO:latest|g" k8s-deployment.yaml - -# Deploy to Kubernetes -echo "Deploying to Kubernetes..." -kubectl apply -f k8s-deployment.yaml -kubectl apply -f k8s-service.yaml -kubectl apply -f k8s-ingress.yaml - -echo "Deployment complete!" -echo "Check status with: kubectl get pods,svc,ingress" \ No newline at end of file diff --git a/k8s-deployment.yaml b/k8s-deployment.yaml deleted file mode 100644 index 989941c4..00000000 --- a/k8s-deployment.yaml +++ /dev/null @@ -1,40 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: addressbook-app - labels: - app: addressbook -spec: - replicas: 2 - selector: - matchLabels: - app: addressbook - template: - metadata: - labels: - app: addressbook - spec: - containers: - - name: addressbook - image: lisandroaws/project-k8s:latest - ports: - - containerPort: 8080 - resources: - requests: - memory: "256Mi" - cpu: "250m" - limits: - memory: "512Mi" - cpu: "500m" - livenessProbe: - httpGet: - path: / - port: 8080 - initialDelaySeconds: 60 - periodSeconds: 30 - readinessProbe: - httpGet: - path: / - port: 8080 - initialDelaySeconds: 30 - periodSeconds: 10 \ No newline at end of file diff --git a/k8s-ingress.yaml b/k8s-ingress.yaml deleted file mode 100644 index c41ffb38..00000000 --- a/k8s-ingress.yaml +++ /dev/null @@ -1,21 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: addressbook-ingress - annotations: - kubernetes.io/ingress.class: alb - alb.ingress.kubernetes.io/scheme: internet-facing - alb.ingress.kubernetes.io/target-type: ip - alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]' - alb.ingress.kubernetes.io/ssl-redirect: '443' -spec: - rules: - - http: - paths: - - path: / - pathType: Prefix - backend: - service: - name: addressbook-service - port: - number: 80 \ No newline at end of file diff --git a/k8s-service.yaml b/k8s-service.yaml deleted file mode 100644 index 4fb073a4..00000000 --- a/k8s-service.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: addressbook-service - labels: - app: addressbook -spec: - type: LoadBalancer - ports: - - port: 80 - targetPort: 8080 - protocol: TCP - selector: - app: addressbook \ No newline at end of file From 10be3137af40c81411b6555d10d26516ed1358b3 Mon Sep 17 00:00:00 2001 From: lisandrofernando Date: Thu, 22 Jan 2026 11:13:15 -0600 Subject: [PATCH 4/5] Adding deployment files --- Dockerfile | 12 ++++++++++++ deployment.yaml | 40 ++++++++++++++++++++++++++++++++++++++++ service.yaml | 14 ++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 Dockerfile create mode 100644 deployment.yaml create mode 100644 service.yaml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..8a4e24d3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM maven:3.8.4-openjdk-8 AS build +WORKDIR /app +COPY addressbook/pom.xml . +RUN mvn dependency:go-offline +COPY addressbook/src ./src +RUN mvn clean package -DskipTests + +FROM tomcat:8.5-jre8-alpine +RUN rm -rf /usr/local/tomcat/webapps/* +COPY --from=build /app/target/*.war /usr/local/tomcat/webapps/ROOT.war +EXPOSE 8080 +CMD ["catalina.sh", "run"] \ No newline at end of file diff --git a/deployment.yaml b/deployment.yaml new file mode 100644 index 00000000..989941c4 --- /dev/null +++ b/deployment.yaml @@ -0,0 +1,40 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: addressbook-app + labels: + app: addressbook +spec: + replicas: 2 + selector: + matchLabels: + app: addressbook + template: + metadata: + labels: + app: addressbook + spec: + containers: + - name: addressbook + image: lisandroaws/project-k8s:latest + ports: + - containerPort: 8080 + resources: + requests: + memory: "256Mi" + cpu: "250m" + limits: + memory: "512Mi" + cpu: "500m" + livenessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 60 + periodSeconds: 30 + readinessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 30 + periodSeconds: 10 \ No newline at end of file diff --git a/service.yaml b/service.yaml new file mode 100644 index 00000000..1462d574 --- /dev/null +++ b/service.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + name: addressbook-service + labels: + app: addressbook +spec: + type: LoadBalancer + ports: + - port: 8081 + targetPort: 8080 + protocol: TCP + selector: + app: addressbook \ No newline at end of file From f4091123d286ac9982be9d05302eb6b0ee26411a Mon Sep 17 00:00:00 2001 From: lisandrofernando Date: Thu, 22 Jan 2026 11:17:31 -0600 Subject: [PATCH 5/5] recreating dockerfile --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8a4e24d3..9a81bec7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,8 @@ FROM maven:3.8.4-openjdk-8 AS build WORKDIR /app -COPY addressbook/pom.xml . +COPY pom.xml . RUN mvn dependency:go-offline -COPY addressbook/src ./src +COPY src ./src RUN mvn clean package -DskipTests FROM tomcat:8.5-jre8-alpine