new exam files
This commit is contained in:
parent
00bcc3dadd
commit
b6eb4c5055
90
sk1/README.md
Normal file
90
sk1/README.md
Normal file
@ -0,0 +1,90 @@
|
||||
# Contact List Application
|
||||
|
||||
A simple web-based contact list application deployed on Google Kubernetes Engine (GKE) with automated HTTPS certificate provisioning.
|
||||
|
||||
## Description
|
||||
|
||||
This application allows users to create, view, update, and delete contacts in a persistent MongoDB database. It features a clean, responsive interface and is deployed as a containerized application on Google Cloud Platform using Kubernetes.
|
||||
|
||||
## Technologies Used
|
||||
|
||||
- **Frontend**: HTML, CSS, JavaScript
|
||||
- **Backend**: Node.js with Express
|
||||
- **Database**: MongoDB
|
||||
- **Containerization**: Docker
|
||||
- **Orchestration**: Google Kubernetes Engine (GKE)
|
||||
- **Load Balancing & HTTPS**: GKE Ingress with Google-managed certificates
|
||||
- **Domain**: Dynamic domain using nip.io DNS service
|
||||
|
||||
## Architecture
|
||||
|
||||
The application consists of multiple containers:
|
||||
|
||||
1. **Contact App**: Node.js application serving the web interface and API
|
||||
2. **MongoDB**: NoSQL database for storing contact information
|
||||
3. **Ingress Controller**: Manages external access to the services
|
||||
4. **Load Balancer**: Distributes incoming traffic
|
||||
|
||||
## Key Features
|
||||
|
||||
- Responsive web interface
|
||||
- RESTful API for contact management
|
||||
- Persistent data storage using MongoDB with PersistentVolumeClaims
|
||||
- Automatic HTTPS certificate provisioning
|
||||
- Automatic application restart on failure
|
||||
- Scalable architecture
|
||||
|
||||
## Deployment Files
|
||||
|
||||
The application includes the following configuration files:
|
||||
|
||||
- **Dockerfile**: Containerizes the Node.js application
|
||||
- **k8s/**: Kubernetes configuration directory
|
||||
- **app-deployment.yaml**: Deployment for the Node.js application
|
||||
- **app-service.yaml**: Service for the Node.js application
|
||||
- **contact-app-lb.yaml**: LoadBalancer service for obtaining external IP
|
||||
- **ingress.yaml**: Template for Ingress configuration
|
||||
- **mongo-deployment.yaml**: Deployment for MongoDB
|
||||
- **mongo-service.yaml**: Service for MongoDB
|
||||
- **mongo-pvc.yaml**: PersistentVolumeClaim for MongoDB data
|
||||
- **namespace.yaml**: Namespace for application resources
|
||||
|
||||
## Deployment Scripts
|
||||
|
||||
### prepare-app.sh
|
||||
|
||||
This script handles the entire deployment process:
|
||||
|
||||
1. Builds and pushes the Docker image to Google Container Registry
|
||||
2. Creates a GKE cluster if one doesn't exist
|
||||
3. Deploys MongoDB with persistent storage
|
||||
4. Deploys the Contact App application
|
||||
5. Creates a LoadBalancer service to obtain an external IP
|
||||
6. Configures Ingress with a dynamic domain using nip.io
|
||||
7. Sets up HTTPS with Google-managed certificates
|
||||
|
||||
### remove-app.sh
|
||||
|
||||
This script removes all resources created by the application:
|
||||
|
||||
1. Deletes Ingress and certificates
|
||||
2. Deletes application deployments and services
|
||||
3. Deletes MongoDB deployment, service, and PVC
|
||||
4. Removes the Kubernetes namespace
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
### Prerequisites
|
||||
|
||||
1. Google Cloud Platform account with billing enabled
|
||||
2. Google Cloud SDK installed and configured
|
||||
3. kubectl installed
|
||||
4. Docker installed
|
||||
|
||||
### Deployment
|
||||
|
||||
1. Clone the repository
|
||||
2. Navigate to the project directory
|
||||
3. Make the scripts executable:
|
||||
```bash
|
||||
chmod +x prepare-app.sh remove-app.sh
|
Loading…
Reference in New Issue
Block a user