feat(EM-35): Configure Kubernetes Deployment Automation and Environment Promotion#55
Open
devin-ai-integration[bot] wants to merge 1 commit intofeat/microservices-migration-v2from
Conversation
…nt promotion - Add Kustomize base manifests for all 4 services (consumer, courier, order, restaurant) - Each service includes deployment, service, and serviceaccount manifests - Configure startup, liveness, and readiness probes on /actuator/health endpoints - Add environment overlays for dev, staging, and production - Dev: 1 replica, 128Mi-256Mi memory, DEBUG logging - Staging: 2 replicas, 256Mi-512Mi memory, INFO logging - Production: 3 replicas, 512Mi-1Gi memory, WARN logging, PodDisruptionBudgets - Add GitHub Actions deploy workflow with manual dispatch and environment promotion - Workflow supports per-service or all-service deployment with dry-run option - Add comprehensive deployment and promotion documentation Co-Authored-By: Alex Baker <alexandercommander453@gmail.com>
Author
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
feat(EM-35): Kubernetes Deployment Automation and Environment Promotion
Summary
Adds Kustomize-based Kubernetes deployment manifests for all 4 FTGO microservices and a GitHub Actions workflow for deploying to dev → staging → production environments.
New files (33 total):
infrastructure/k8s/base/— Base Kustomize manifests per service (deployment, service, serviceaccount)infrastructure/k8s/overlays/{dev,staging,production}/— Environment-specific overlays with patched replicas, resource limits, configmaps, and namespacesinfrastructure/k8s/overlays/production/pdb.yaml— PodDisruptionBudgets for production.github/workflows/deploy.yml— Deployment workflow with manual dispatch, dry-run support, rollout monitoring, and promotion guidanceinfrastructure/k8s/README.md— Deployment and promotion documentationEnvironment differences:
All manifests were validated locally with
kustomize buildfor all 3 overlays + base.Review & Testing Checklist for Human
matchLabels: app.kubernetes.io/name: <service>. Confirm these match the actual pod labels afternamePrefix: prod-transformation is applied. (The base kustomization setsincludeSelectors: truefor these labels, so they should propagate correctly to pod selectors.)KUBECONFIGsecret in GitHub and a real K8s cluster. Recommend testing withdry_run: truefirst, then deploying to dev environment./actuator/health/livenessand/actuator/health/readiness. Confirm these endpoints exist in the actual Spring Boot services (they should if Spring Boot Actuator is configured).JAVA_OPTSsets-XX:MaxRAMPercentage=75.0which should work with these limits.<service>-secrets(marked optional). If services need DB credentials or other secrets, create these manually in each namespace before deploying.Test Plan
KUBECONFIGsecret in GitHub repo settings (base64-encoded kubeconfig)dev, service=all, image_tag=latest, dry_run=truefalseto actually deploykubectl get pods -n ftgo-devkubectl get pods -n ftgo-dev -o wideand check readinessNotes
infrastructure/k8s/base/namespace.yamlexists but is not referenced inbase/kustomization.yaml(removed to fix overlay namespace conflicts). Consider deleting it to avoid confusion.mainbut never auto-deploys (deploy job only runs onworkflow_dispatch).Link to Devin run: https://app.devin.ai/sessions/b767ee84591a4c1584d113ac969c5408
Requested by: @abj453demo