Initial commit: Resume site with Flux CD automation
- Add HTML comment for hiring pipeline - Configure Helm chart for Kubernetes deployment - Set up ingress for resume.caffeinetux.com - Configure Harbor registry at images.caffeinetux.com - Add Flux CD manifests for GitOps deployment - Update CI workflow for Harbor integration 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
165
README.md
Normal file
165
README.md
Normal file
@@ -0,0 +1,165 @@
|
||||
# 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* ☸️
|
||||
Reference in New Issue
Block a user