Files
resume-site/README.md
Neon Vortex b803ba5468 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>
2025-11-25 13:34:27 -05:00

3.9 KiB

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

# 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

# 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

Create a values-production.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:

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

# 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:

: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 ☸️