Files
resume-site/README.md

166 lines
3.9 KiB
Markdown
Raw Normal View History

# Nicholas Haven - Resume Website
A professional, responsive resume website designed for deployment on Kubernetes.
## Features
- **Modern Design**: Dark theme with cyan accents, animated backgrounds, and smooth transitions
- **Responsive**: Works on all device sizes
- **Production-Ready**: Includes Dockerfile and Helm chart
- **Kubernetes-Native**: Configured with health checks, PDB, HPA, and proper security contexts
- **TLS Ready**: Pre-configured for cert-manager integration
## Quick Start
### 1. Build the Docker Image
```bash
# Build locally
docker build -t resume-site:latest .
# Or build and push to your registry
docker build -t your-registry.com/resume-site:latest .
docker push your-registry.com/resume-site:latest
```
### 2. Deploy with Helm
```bash
# Create namespace (optional)
kubectl create namespace resume
# Install with custom values
helm upgrade --install resume ./helm \
--namespace resume \
--set image.repository=your-registry.com/resume-site \
--set image.tag=latest \
--set ingress.hosts[0].host=resume.yourdomain.com \
--set ingress.hosts[0].paths[0].path=/ \
--set ingress.hosts[0].paths[0].pathType=Prefix \
--set ingress.tls[0].secretName=resume-tls \
--set ingress.tls[0].hosts[0]=resume.yourdomain.com
```
### 3. Using a Values File (Recommended)
Create a `values-production.yaml`:
```yaml
image:
repository: your-registry.com/resume-site
tag: "1.0.0"
ingress:
enabled: true
className: nginx
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/ssl-redirect: "true"
hosts:
- host: resume.yourdomain.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: resume-tls
hosts:
- resume.yourdomain.com
resources:
limits:
cpu: 100m
memory: 64Mi
requests:
cpu: 10m
memory: 32Mi
```
Then deploy:
```bash
helm upgrade --install resume ./helm \
--namespace resume \
-f values-production.yaml
```
## Configuration Options
| Parameter | Description | Default |
|-----------|-------------|---------|
| `replicaCount` | Number of pods | `2` |
| `image.repository` | Docker image repository | `resume-site` |
| `image.tag` | Docker image tag | `latest` |
| `ingress.enabled` | Enable ingress | `true` |
| `ingress.className` | Ingress class name | `nginx` |
| `ingress.hosts` | Ingress hosts configuration | `[]` |
| `autoscaling.enabled` | Enable HPA | `false` |
| `podDisruptionBudget.enabled` | Enable PDB | `true` |
## Local Development
```bash
# Run with Docker
docker build -t resume-site:dev .
docker run -p 8080:80 resume-site:dev
# Open http://localhost:8080
```
## Directory Structure
```
.
├── index.html # Main resume page
├── Dockerfile # Multi-stage Docker build
├── README.md # This file
└── helm/
├── Chart.yaml # Helm chart metadata
├── values.yaml # Default values
└── templates/
├── _helpers.tpl
├── deployment.yaml
├── service.yaml
├── ingress.yaml
├── serviceaccount.yaml
├── pdb.yaml
└── hpa.yaml
```
## Customization
### Updating Content
Edit `index.html` directly. The file is self-contained with embedded CSS.
### Changing Colors
CSS variables are defined at the top of the `<style>` block:
```css
:root {
--accent-cyan: #06b6d4;
--accent-emerald: #10b981;
--accent-violet: #8b5cf6;
/* ... */
}
```
### Adding New Sections
Follow the existing pattern using `section` elements with appropriate class names.
## Health Checks
The nginx configuration includes a `/health` endpoint that returns `200 OK` for Kubernetes probes.
## Security
- Runs as non-root user (nginx:101)
- Drops all capabilities
- Configured with proper security contexts
- TLS termination at ingress level
---
*Built with clean code and deployed on Kubernetes* ☸️