rdev/scripts/generate-deploy-key.sh
jordan 0960b17eb2 feat: Implement v0.2-v0.4 (workspaces, git, API)
v0.2 - Real Workspaces:
- Project-specific claudebox StatefulSets (pantheon, aeries)
- Init containers for git clone via SSH
- Deploy key secrets template
- Project ConfigMaps for CLAUDE.md

v0.3 - Git Integration:
- Dockerfile with rdev-bot git identity
- openssh-client for SSH operations
- Image version bump to v0.3.0

v0.4 - API Server:
- Go REST API with chi router
- Endpoints: /projects, /claude, /shell, /git, /events
- SSE streaming for real-time output
- OpenAPI docs via Scalar at /docs
- Kubernetes RBAC for pod exec
- Executor and project registry packages

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 21:07:00 -07:00

82 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
# Generate SSH deploy key for a GitHub repository
#
# Usage: ./generate-deploy-key.sh <project-name>
# Example: ./generate-deploy-key.sh pantheon
#
# This generates:
# - <project>-deploy-key (private key)
# - <project>-deploy-key.pub (public key - add to GitHub)
# - <project>-deploy-key.b64 (base64 encoded for K8s secret)
set -e
if [ -z "$1" ]; then
echo "Usage: $0 <project-name>"
echo "Example: $0 pantheon"
exit 1
fi
PROJECT="$1"
KEY_FILE="${PROJECT}-deploy-key"
echo "Generating deploy key for project: $PROJECT"
echo ""
# Check if key already exists
if [ -f "$KEY_FILE" ]; then
echo "WARNING: Key file $KEY_FILE already exists!"
read -p "Overwrite? (y/N) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "Aborted."
exit 1
fi
fi
# Generate ED25519 key (no passphrase for automated use)
ssh-keygen -t ed25519 -f "$KEY_FILE" -N "" -C "rdev-${PROJECT}@orchard9.ai"
# Create base64 encoded version for K8s secret
cat "$KEY_FILE" | base64 > "${KEY_FILE}.b64"
echo ""
echo "=== Generated Files ==="
echo ""
echo "Private key: $KEY_FILE"
echo "Public key: ${KEY_FILE}.pub"
echo "Base64: ${KEY_FILE}.b64"
echo ""
echo "=== Next Steps ==="
echo ""
echo "1. Add the PUBLIC key to GitHub:"
echo " - Go to: https://github.com/orchard9/${PROJECT}/settings/keys"
echo " - Click 'Add deploy key'"
echo " - Title: rdev-${PROJECT}"
echo " - Key: (paste contents of ${KEY_FILE}.pub)"
echo " - Check 'Allow write access' if you need push capability"
echo ""
echo " Public key to copy:"
echo " ---"
cat "${KEY_FILE}.pub"
echo " ---"
echo ""
echo "2. Update the Kubernetes secret:"
echo " - Edit deployments/k8s/base/secrets.yaml"
echo " - Replace REPLACE_WITH_BASE64_ENCODED_PRIVATE_KEY for ${PROJECT}"
echo " - With contents of: ${KEY_FILE}.b64"
echo ""
echo " Base64 encoded private key:"
echo " ---"
cat "${KEY_FILE}.b64"
echo " ---"
echo ""
echo "3. Apply the secret:"
echo " export KUBECONFIG=~/.kube/orchard9-k3sf.yaml"
echo " kubectl apply -f deployments/k8s/base/secrets.yaml"
echo ""
echo "4. IMPORTANT: Keep the private key files secure!"
echo " - Do NOT commit them to git"
echo " - Store them securely or delete after updating K8s secret"
echo ""