Secrets Management
Overview
Secrets are sensitive data like passwords, API keys, and certificates. Never commit them to Git!
GitHub Secrets
Adding Secrets to Repository
# Using GitHub CLI
gh secret set DATABASE_URL --repo dine-together/myapp
# Interactive mode (hides input)
gh secret set API_KEY --repo dine-together/myapp
Viewing Secrets
# List secrets (names only)
gh secret list --repo dine-together/myapp
# You cannot view secret values after creation
Using in GitHub Actions
Kubernetes Secrets
Creating Secrets
# From literal values
kubectl create secret generic app-secrets \
--from-literal=api-key=your-api-key \
--from-literal=db-password=your-password \
--namespace=test-staging
# From file
kubectl create secret generic app-config \
--from-file=config.json \
--namespace=test-staging
Using in Deployments
The auto-deployment system handles this automatically, but you can reference secrets in docker-compose.yml:
Best Practices
- Rotate Regularly
- Change passwords every 90 days
-
Update API keys periodically
-
Least Privilege
- Only give access to what's needed
-
Use read-only credentials where possible
-
Different Per Environment
- Staging uses different secrets than production
- Never share credentials between environments
Next Steps
- Set up Multiple Environments
- Learn about Security Best Practices