Project bootstrap for python apps in kubernetes.
Leverages prepare.sh placeholder replacement to kickstart your project.
prepare.sh:
-
Collects required project values:
_PROJECT_NAME__PROD_DOMAIN__STAGE_DOMAIN__CORS_DOMAINS_
-
Validates:
- Project name (
a-zA-Z0-9_-) - Domains / subdomains
- CORS domains list
- Project name (
-
Normalizes CORS domains into:
domain1.com|domain2.com|domain3.com
- Recursively replaces placeholders in all files in the current directory
(excluding.git/)
bash
./prepare.sh
Uses whiptail if installed, otherwise falls back to read.
bash
./prepare.sh \
--project-name my-app \
--prod-domain example.com \
--stage-domain stage.example.com \
--cors-domains "example.com api.example.com"
Placeholder
Replaced With
_PROJECT_NAME_
Project name
_PROD_DOMAIN_
Production domain
_STAGE_DOMAIN_
Stage domain
_CORS_DOMAINS_
`domain1
bash
whiptail(UI prompts)gsed(GNU sed — recommended on macOS)perl(fallback replacement engine)
bash
brew install gnu-sed whiptail
bash
sudo apt install whiptail perl
GNU sed is default on Linux.
Go to:
Settings → Secrets and variables → Actions
Location:
Settings → Secrets and variables → Actions → Variables
Variable
Description
ACCOUNTID
AWS Account ID
DEPLOYMENT
Project name (should match _PROJECT_NAME_)
OWNER_NAME
Used in cluster settings during deploy
REGION
AWS region (e.g. eu-west-1)
REPO
ECR repository name
Location:
Settings → Secrets and variables → Actions → Secrets
Secret
Description
AWS_ACCESS_KEY_ID
AWS access key
AWS_SECRET_ACCESS_KEY
AWS secret key
SLACK_WEBHOOK_CHANNEL
Slack channel
SLACK_WEBHOOK_URL
Slack webhook URL
Location:
Settings → Deploy Keys
Add:
- Public key corresponding to
GH_SSH_KEY - Enable Read access
- Used for
git pullduring deployment
Secrets must exist under:
kubernetes/prod/_PROJECT_NAME_
kubernetes/stage/_PROJECT_NAME_
Replace _PROJECT_NAME_ with your actual project name.
Key
Description
APP_ENV
prod or stage
AWS_ACCESS_KEY_ID
AWS key
AWS_SECRET_ACCESS_KEY
AWS secret
NEW_RELIC_LICENSE_KEY
New Relic license
NEW_RELIC_ACCOUNT
New Relic account ID
NEW_RELIC_API_KEY
New Relic API key
GH_SSH_KEY
Base64 encoded public GitHub deploy key
Must be:
- Public key
- Base64 encoded
- Single line
- No line breaks
Generate:
bash
cat id_rsa.pub | base64 | tr -d '\n'.git/is automatically excluded from replacements.- Commit your repository before running the script.
- Ensure AWS Secrets exist before running deployment workflows.