Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added .nojekyll
Empty file.
74 changes: 74 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [

{
"name": "Attach",
"port": 9229,
"request": "attach",
"skipFiles": [
"<node_internals>/**"
],
"type": "node"
},
{
"name": "Attach to Integrated Browser",
"request": "attach",
"type": "editor-browser",
"webRoot": "${workspaceFolder}"
},
{
"name": "Launch Edge",
"request": "launch",
"type": "msedge",
"url": "http://localhost:8080",
"webRoot": "${workspaceFolder}"
},
{
"name": "Launch Chrome",
"request": "launch",
"type": "chrome",
"url": "http://localhost:8080",
"webRoot": "${workspaceFolder}"
},
{
"name": "Attach by Process ID",
"processId": "${command:PickProcess}",
"request": "attach",
"skipFiles": [
"<node_internals>/**"
],
"type": "node"
},

{
"name": "Launch Chrome",
"request": "launch",
"type": "chrome",
"url": "http://localhost:8080",
"webRoot": "${workspaceFolder}"
},
{
"name": "Attach to Chrome",
"port": 9222,
"request": "attach",
"type": "chrome",
"webRoot": "${workspaceFolder}"
},






{
"type": "chrome",
"request": "launch",
"name": "Open index.html",
"file": "/workspaces/Shipyard-Foundations/Task-3/index.html"
}
]
}
97 changes: 96 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,96 @@
# Shipyard-Foundations
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CI/CD Assignment</title>

<style>
body {
margin: 0;
font-family: Arial, sans-serif;
background: linear-gradient(270deg, #0f172a, #1e3a8a, #0f172a);
background-size: 600% 600%;
animation: gradientBG 10s ease infinite;
color: white;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}

@keyframes gradientBG {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}


.card {
background: rgba(255, 255, 255, 0.1);
padding: 30px;
border-radius: 15px;
text-align: center;
box-shadow: 0 10px 25px rgba(0,0,0,0.4);
backdrop-filter: blur(10px);
animation: fadeIn 2s ease;
}

@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0)
}
}

h1 {
margin-bottom: 10px;
animation: slideIn 1.5s ease;
}

@keyframes slideIn {
from {
transform: translateX(-50px);
opacity: 0;
}
to {
transform: translateX(0);
opacity: 1;
}
}

.btn {
margin-top: 15px;
padding: 10px 20px;
background: #22c55e;
color: white;
border: none;
border-radius: 20px;
cursor: pointer;
transition: transform 0.3s, box-shadow 0.3s;
}

.btn:hover {
transform: scale(1.1);
box-shadow: 0 0 15px #22c55e;
}

</style>
</head>

<body>
<div class="card">
<h1>πŸš€ CI/CD Pipeline Basics</h1>
<p>Website deployed using GitHub Actions + GitHub Pages</p>

<p><strong>Name:</strong> GOKUL P R</p>
<p><strong>MUID:</strong> gokulpr-1@mulearn</p>

<button class="btn">Deployment Successful βœ…</button>
</div>
</body>
</html> </html>
50 changes: 50 additions & 0 deletions Task-1/gokulpr-1@mulearn/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Hi there! I'm Gokul P R πŸ‘‹

### πŸš€ DevOps & Cybersecurity Learner | Tech Enthusiast

I am a B.Tech student passionate about building real-world projects and mastering modern technologies. I enjoy exploring how software systems work and continuously improving my skills in development, version control, and problem-solving. Currently, I am deepening my knowledge in Git/GitHub workflows and DevOps fundamentals.

---

### πŸ› οΈ Technical Stack

- **Languages:** Python
- **Tools:** Git, GitHub,
- **Cybersecurity:** TryHackMe (SOC Level 1 Certified), NPTEL (Cyber Security & Privacy)
- **Areas of Interest:** DevOps, Cybersecurity, Mechanical Engineering Systems

---

### πŸš€ Projects & Experience

- **Campus Ambassador:** Served as a Campus Ambassador for programs at IIT Delhi and IIT Gandhinagar (Blithchron 2026).
- **Resume Analyzer:** A project that extracts and analyzes resume data using Python logic.
- **Elite Hack 1.0:** Participated and built a collaborative solution during the hackathon.
- **SOC Level 1:** Completed the Security Operations Center path on TryHackMe.

---

### 🌍 Community & Learning

- Active learner in tech communities (Β΅Learn).
- Passionate about open-source contributions and collaborative building.
- Focus on bridging the gap between Mechanical Engineering and Software systems.

---

### πŸ“ˆ Current Focus

- Mastering CI/CD pipelines and DevOps workflows.
- Solving algorithmic problems with Python.
- Building a strong foundation in Cybersecurity.

---

### πŸ“« Connect with Me

- **GitHub:** [github.com/GOKUL-P-R](https://github.com/GOKUL-P-R)
- **LinkedIn:** (https://www.linkedin.com/in/gokul-p-r-430b5b365?utm_source=share_via&utm_content=profile&utm_medium=member_android)

---

✨ *"Consistent learning and building is the key to success."*
4 changes: 4 additions & 0 deletions Task-2/gokulpr-1@mulearn/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
FROM python:3.9-slim
WORKDIR /app
COPY script.py .
CMD ["python", "script.py"]
7 changes: 7 additions & 0 deletions Task-2/gokulpr-1@mulearn/script.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import time

print("πŸš€ Container Started")

while True:
print("Hello World")
time.sleep(5)
14 changes: 14 additions & 0 deletions gokulpr-1@mulearn/FinalProject/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Use nginx:alpine as base image
FROM nginx:alpine

# Set working directory
WORKDIR /usr/share/nginx/html

# Copy index.html to nginx serving directory
COPY index.html .

# Expose port 80
EXPOSE 80

# Start nginx
CMD ["nginx", "-g", "daemon off;"]
93 changes: 93 additions & 0 deletions gokulpr-1@mulearn/FinalProject/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# My First Scalable Web App - Final Project

## πŸ“‹ Project Overview

This is the final project for Shipyard Foundations, demonstrating a complete workflow of:
- Creating a simple web application
- Packaging it with Docker
- Deploying it to Kubernetes with multiple replicas
- Testing self-healing capabilities

## πŸ“ Files Included

- **index.html** - Professional portfolio-style web application
- **Dockerfile** - Container definition using nginx:alpine
- **deployment.yaml** - Kubernetes deployment with 3 replicas

## πŸš€ Setup & Deployment

### Prerequisites
- Docker installed
- Kind (Kubernetes in Docker) installed
- kubectl installed

### Step 1: Build Docker Image
```bash
docker build -t scalable-web-app:latest .
```

### Step 2: Start KIND Cluster
```bash
kind create cluster --name shipyard
```

### Step 3: Load Docker Image to KIND
```bash
kind load docker-image scalable-web-app:latest --name shipyard
```

### Step 4: Deploy to Kubernetes
```bash
kubectl apply -f deployment.yaml
```

### Step 5: Verify Deployment
```bash
kubectl get deployments
kubectl get pods
kubectl logs -f deployment/scalable-web-app
```

### Step 6: Access the Application
```bash
kubectl port-forward service/scalable-web-app 8080:80
```
Then open http://localhost:8080 in your browser.

## πŸ›‘οΈ Self-Healing Test

Test the self-healing capability by deleting a pod:

```bash
# List all pods
kubectl get pods

# Delete a specific pod
kubectl delete pod <pod-name>

# Verify a new pod is created automatically
kubectl get pods
```

## πŸ“Š Features

βœ… Containerized application with Docker
βœ… Multi-replica Kubernetes deployment
βœ… Environment variable configuration (STUDENT_NAME)
βœ… Self-healing with automatic pod recreation
βœ… Resource limits and requests
βœ… Production-ready nginx configuration

## πŸŽ“ Learning Outcomes

- Docker containerization basics
- Kubernetes deployment management
- Replica scaling concepts
- Pod self-healing demonstration
- Container orchestration workflow

## πŸ“€ Submission Details

- **Student Name:** GOKUL P R
- **Project Path:** gokulpr-1@mulearn/FinalProject/
- **Tags:** #evn-dop-shipyard26-ship
Loading