Skip to content

Deployment

Automated Deploy Script

./deploy/deploy.sh                  # Build + push + rollout
./deploy/deploy.sh --build-only     # Build + push, no rollout
./deploy/deploy.sh --rollout-only   # Rollout existing latest tag

Manual Workflow

1. Sync to Build VM

rsync -az --exclude '.git' --exclude '__pycache__' \
  . control-plane-oci:/tmp/octo-drone-shop/

2. Build (Native x86_64)

TAG=$(date +%Y%m%d%H%M%S)
ssh control-plane-oci "cd /tmp/octo-drone-shop && \
  docker build -t ${OCIR_REPO}/octo-drone-shop:${TAG} \
               -t ${OCIR_REPO}/octo-drone-shop:latest ."

3. Push to OCIR

ssh control-plane-oci "docker push ${OCIR_REPO}/octo-drone-shop:${TAG} && \
  docker push ${OCIR_REPO}/octo-drone-shop:latest"

4. Rollout on OKE

kubectl set image deployment/octo-drone-shop \
  app=${OCIR_REPO}/octo-drone-shop:${TAG} -n octo-drone-shop

kubectl rollout status deployment/octo-drone-shop -n octo-drone-shop

K8s Configuration

  • Replicas: 2
  • Resources: 250m CPU / 512Mi (request), 1 CPU / 1Gi (limit)
  • Liveness: /health every 15s (12s initial delay)
  • Readiness: /ready every 12s (18s initial delay)
  • Image pull: OCIR with ocir-pull-secret
  • ATP wallet: Mounted as read-only volume