diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index 3842bc15..55bb7507 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -1,8 +1,9 @@ # EN: Build & Deploy GoodGo Platform to K8s staging via Gitea Actions # VI: Build & Deploy GoodGo Platform len K8s staging qua Gitea Actions # -# Flow: Push → detect changed services → Kaniko build → push Harbor → kubectl deploy -# Runner: act_runner (host mode, in-cluster kubectl + Kaniko Jobs) +# Flow: Push → detect changes → batch Kaniko builds (parallel) → Harbor → kubectl deploy +# Runner: act_runner (host mode, in-cluster kubectl) +# Build: Kaniko Jobs clone from Gitea, build Dockerfiles, push to Harbor name: Build & Deploy to K8s @@ -14,10 +15,10 @@ jobs: build-and-deploy: runs-on: ubuntu-latest steps: - - name: Clone source from Gitea + - name: Clone source run: | git clone --depth 2 --branch ${{ github.ref_name }} \ - https://admin:Velik%402026@gitea.techbi.org/admin/pos-system.git . + https://admin:${{ secrets.REPO_PASSWORD }}@gitea.techbi.org/admin/pos-system.git . - name: Detect changed services run: | @@ -27,16 +28,12 @@ jobs: CHANGED=$(git diff --name-only HEAD~1 HEAD 2>/dev/null || echo "ALL") SERVICES="" - check_change() { - local path="$1" - local name="$2" - if echo "$CHANGED" | grep -q "^${path}/" || echo "$CHANGED" | grep -q "ALL"; then - SERVICES="${SERVICES} ${name}" + if echo "$CHANGED" | grep -q "^${1}/" || echo "$CHANGED" | grep -q "ALL"; then + SERVICES="${SERVICES} ${2}" fi } - # Core services check_change "services/iam-service-net" "iam-service" check_change "services/merchant-service-net" "merchant-service" check_change "services/order-service-net" "order-service" @@ -52,116 +49,90 @@ jobs: check_change "services/membership-service-net" "membership-service" check_change "services/mining-service-net" "mining-service" check_change "services/mission-service-net" "mission-service" - - # Ads services check_change "services/ads-manager-service-net" "ads-manager-service" check_change "services/ads-serving-service-net" "ads-serving-service" check_change "services/ads-billing-service-net" "ads-billing-service" check_change "services/ads-tracking-service-net" "ads-tracking-service" check_change "services/ads-analytics-service-net" "ads-analytics-service" - - # Marketing services check_change "services/mkt-facebook-service-net" "mkt-facebook-service" check_change "services/mkt-whatsapp-service-net" "mkt-whatsapp-service" check_change "services/mkt-x-service-net" "mkt-x-service" check_change "services/mkt-zalo-service-net" "mkt-zalo-service" - - # Frontend check_change "apps/web-client-tpos-net" "pos-web" - # If K8s configs changed, flag for config deploy + K8S_CONFIG="" if echo "$CHANGED" | grep -q "^deployments/staging/"; then - SERVICES="${SERVICES} __k8s_config__" + K8S_CONFIG="yes" fi echo "CHANGED_SERVICES=${SERVICES}" >> $GITHUB_ENV - echo "Changed services: ${SERVICES:-none}" + echo "K8S_CONFIG=${K8S_CONFIG}" >> $GITHUB_ENV + echo "Changed services:${SERVICES:-none}" + echo "K8s config changed: ${K8S_CONFIG:-no}" - - name: Build and push via Kaniko + - name: Setup Kaniko registry secret run: | - # Filter out __k8s_config__ to get only real services BUILD_SERVICES="" - for svc in $CHANGED_SERVICES; do - if [ "$svc" != "__k8s_config__" ]; then - BUILD_SERVICES="${BUILD_SERVICES} ${svc}" - fi - done + for svc in $CHANGED_SERVICES; do BUILD_SERVICES="${BUILD_SERVICES} ${svc}"; done + if [ -z "$BUILD_SERVICES" ]; then echo "No services to build"; exit 0; fi - if [ -z "$BUILD_SERVICES" ]; then - echo "No services to build, skipping" - exit 0 - fi - - HARBOR="harbor.techbi.org" - PROJECT="goodgo" - GITHUB_REPO="https://github.com/hongochai10/Microservices-Development.git" - BRANCH="${{ github.ref_name }}" - NS="staging" - - # Create Harbor docker config secret for Kaniko - kubectl create secret docker-registry kaniko-harbor-secret -n "${NS}" \ - --docker-server="${HARBOR}" \ - --docker-username="${{ secrets.HARBOR_USERNAME }}" \ - --docker-password="${{ secrets.HARBOR_PASSWORD }}" \ + kubectl create secret docker-registry kaniko-harbor-secret -n staging \ + --docker-server=harbor.techbi.org \ + --docker-username=${{ secrets.HARBOR_USERNAME }} \ + --docker-password=${{ secrets.HARBOR_PASSWORD }} \ --docker-email=admin@techbi.org \ --dry-run=client -o yaml | kubectl apply -f - + - name: Build services via Kaniko (batched parallel) + run: | + if [ -z "$CHANGED_SERVICES" ]; then echo "No services to build"; exit 0; fi + + HARBOR="harbor.techbi.org" + PROJECT="goodgo" + GITEA_URL="https://admin:${{ secrets.REPO_PASSWORD }}@gitea.techbi.org/admin/pos-system.git" + BRANCH="${{ github.ref_name }}" + NS="staging" + get_context() { case "$1" in - iam-service) echo "services/iam-service-net" ;; - merchant-service) echo "services/merchant-service-net" ;; - order-service) echo "services/order-service-net" ;; - fnb-engine) echo "services/fnb-engine-net" ;; - catalog-service) echo "services/catalog-service-net" ;; - inventory-service) echo "services/inventory-service-net" ;; - wallet-service) echo "services/wallet-service-net" ;; - storage-service) echo "services/storage-service-net" ;; - booking-service) echo "services/booking-service-net" ;; - chat-service) echo "services/chat-service-net" ;; - social-service) echo "services/social-service-net" ;; - promotion-service) echo "services/promotion-service-net" ;; - membership-service) echo "services/membership-service-net" ;; - mining-service) echo "services/mining-service-net" ;; - mission-service) echo "services/mission-service-net" ;; - ads-manager-service) echo "services/ads-manager-service-net" ;; - ads-serving-service) echo "services/ads-serving-service-net" ;; - ads-billing-service) echo "services/ads-billing-service-net" ;; - ads-tracking-service) echo "services/ads-tracking-service-net" ;; - ads-analytics-service) echo "services/ads-analytics-service-net" ;; - mkt-facebook-service) echo "services/mkt-facebook-service-net" ;; - mkt-whatsapp-service) echo "services/mkt-whatsapp-service-net" ;; - mkt-x-service) echo "services/mkt-x-service-net" ;; - mkt-zalo-service) echo "services/mkt-zalo-service-net" ;; - pos-web) echo "apps/web-client-tpos-net" ;; + iam-service) echo "services/iam-service-net" ;; merchant-service) echo "services/merchant-service-net" ;; + order-service) echo "services/order-service-net" ;; fnb-engine) echo "services/fnb-engine-net" ;; + catalog-service) echo "services/catalog-service-net" ;; inventory-service) echo "services/inventory-service-net" ;; + wallet-service) echo "services/wallet-service-net" ;; storage-service) echo "services/storage-service-net" ;; + booking-service) echo "services/booking-service-net" ;; chat-service) echo "services/chat-service-net" ;; + social-service) echo "services/social-service-net" ;; promotion-service) echo "services/promotion-service-net" ;; + membership-service) echo "services/membership-service-net" ;; mining-service) echo "services/mining-service-net" ;; + mission-service) echo "services/mission-service-net" ;; ads-manager-service) echo "services/ads-manager-service-net" ;; + ads-serving-service) echo "services/ads-serving-service-net" ;; ads-billing-service) echo "services/ads-billing-service-net" ;; + ads-tracking-service) echo "services/ads-tracking-service-net" ;; ads-analytics-service) echo "services/ads-analytics-service-net" ;; + mkt-facebook-service) echo "services/mkt-facebook-service-net" ;; mkt-whatsapp-service) echo "services/mkt-whatsapp-service-net" ;; + mkt-x-service) echo "services/mkt-x-service-net" ;; mkt-zalo-service) echo "services/mkt-zalo-service-net" ;; + pos-web) echo "apps/web-client-tpos-net" ;; esac } - get_image_name() { - case "$1" in - pos-web) echo "web-client-tpos-net" ;; - *) echo "${1}-net" ;; - esac + get_image() { + case "$1" in pos-web) echo "web-client-tpos-net" ;; *) echo "${1}-net" ;; esac } - build_with_kaniko() { + create_kaniko_job() { local svc="$1" - local context=$(get_context "$svc") - local image_name=$(get_image_name "$svc") - local full_image="${HARBOR}/${PROJECT}/${image_name}" - local job_name="kaniko-build-$(echo ${svc} | tr '_' '-')-${IMAGE_TAG}" + local ctx=$(get_context "$svc") + local img=$(get_image "$svc") + local full="${HARBOR}/${PROJECT}/${img}" + local job="kaniko-${svc}-${IMAGE_TAG}" - echo "=== Building ${svc} via Kaniko ===" - - # Create Kaniko Job cat </dev/null - local result=$? - - if [ $result -ne 0 ]; then - echo "ERROR: Kaniko build failed for ${svc}" - kubectl logs job/${job_name} -n ${NS} --tail=30 2>/dev/null - return 1 - fi - - echo "=== ${svc} built and pushed ===" + echo "Created job ${job}" } - FAILED=0 - for svc in $BUILD_SERVICES; do - if ! build_with_kaniko "$svc"; then - FAILED=$((FAILED + 1)) - fi + # Convert to array and process in batches of 5 + set -- $CHANGED_SERVICES + BATCH=0 + TOTAL_FAILED=0 + + while [ $# -gt 0 ]; do + BATCH=$((BATCH + 1)) + BATCH_JOBS="" + COUNT=0 + + # Create up to 5 Kaniko jobs + while [ $# -gt 0 ] && [ $COUNT -lt 5 ]; do + create_kaniko_job "$1" + BATCH_JOBS="${BATCH_JOBS} kaniko-${1}-${IMAGE_TAG}" + shift + COUNT=$((COUNT + 1)) + done + + echo "" + echo "=== Batch ${BATCH}: Waiting for ${COUNT} builds ===" + + # Wait for all jobs in this batch + for job in $BATCH_JOBS; do + echo "Waiting for ${job}..." + if kubectl wait --for=condition=complete "job/${job}" -n ${NS} --timeout=600s 2>/dev/null; then + echo " ✅ ${job} succeeded" + else + echo " ❌ ${job} FAILED" + kubectl logs "job/${job}" -n ${NS} --tail=20 2>/dev/null + TOTAL_FAILED=$((TOTAL_FAILED + 1)) + fi + done done - if [ $FAILED -gt 0 ]; then - echo "ERROR: ${FAILED} service(s) failed to build" + echo "" + echo "=== Build Summary ===" + echo "Total batches: ${BATCH}" + echo "Failed: ${TOTAL_FAILED}" + + if [ $TOTAL_FAILED -gt 0 ]; then + echo "ERROR: ${TOTAL_FAILED} builds failed" exit 1 fi - - name: Deploy to K8s + - name: Apply K8s configs run: | - if [ -z "$CHANGED_SERVICES" ]; then - echo "No services changed, skipping deploy" - exit 0 - fi - - HARBOR="harbor.techbi.org" - PROJECT="goodgo" - NS="staging" - - # Apply K8s configs if changed - if echo "$CHANGED_SERVICES" | grep -q "__k8s_config__"; then + if [ -n "$K8S_CONFIG" ]; then echo "=== Applying K8s configs ===" kubectl apply -f deployments/staging/kubernetes/configmap.yaml kubectl apply -f deployments/staging/kubernetes/redis.yaml @@ -242,67 +224,72 @@ jobs: kubectl apply -f deployments/staging/kubernetes/network-policy.yaml fi - deploy_service() { - local name="$1" - local image_name="$2" - local manifest="$3" - local image="${HARBOR}/${PROJECT}/${image_name}:${IMAGE_TAG}" + - name: Deploy services + run: | + if [ -z "$CHANGED_SERVICES" ] && [ -z "$K8S_CONFIG" ]; then + echo "Nothing to deploy" + exit 0 + fi + HARBOR="harbor.techbi.org" + PROJECT="goodgo" + NS="staging" + + deploy_svc() { + local name="$1" img="$2" manifest="$3" echo "=== Deploying ${name} ===" kubectl apply -f "deployments/staging/kubernetes/${manifest}" - kubectl set image "deployment/${name}" "${name}=${image}" -n "${NS}" + kubectl set image "deployment/${name}" "${name}=${HARBOR}/${PROJECT}/${img}:${IMAGE_TAG}" -n "${NS}" 2>/dev/null kubectl patch deployment "${name}" -n "${NS}" \ - -p '{"spec":{"template":{"spec":{"imagePullSecrets":[{"name":"harbor-pull-secret"}],"containers":[{"name":"'"${name}"'","imagePullPolicy":"Always"}]}}}}' + -p '{"spec":{"template":{"spec":{"imagePullSecrets":[{"name":"harbor-pull-secret"}],"containers":[{"name":"'"${name}"'","imagePullPolicy":"Always"}]}}}}' 2>/dev/null } for svc in $CHANGED_SERVICES; do case "$svc" in - iam-service) deploy_service "iam-service" "iam-service-net" "iam-service.yaml" ;; - merchant-service) deploy_service "merchant-service" "merchant-service-net" "merchant-service.yaml" ;; - order-service) deploy_service "order-service" "order-service-net" "order-service.yaml" ;; - fnb-engine) deploy_service "fnb-engine" "fnb-engine-net" "fnb-engine.yaml" ;; - catalog-service) deploy_service "catalog-service" "catalog-service-net" "catalog-service.yaml" ;; - inventory-service) deploy_service "inventory-service" "inventory-service-net" "inventory-service.yaml" ;; - wallet-service) deploy_service "wallet-service" "wallet-service-net" "wallet-service.yaml" ;; - storage-service) deploy_service "storage-service" "storage-service-net" "storage-service.yaml" ;; - booking-service) deploy_service "booking-service" "booking-service-net" "booking-service.yaml" ;; - chat-service) deploy_service "chat-service" "chat-service-net" "chat-service.yaml" ;; - social-service) deploy_service "social-service" "social-service-net" "social-service.yaml" ;; - promotion-service) deploy_service "promotion-service" "promotion-service-net" "promotion-service.yaml" ;; - membership-service) deploy_service "membership-service" "membership-service-net" "membership-service.yaml" ;; - mining-service) deploy_service "mining-service" "mining-service-net" "mining-service.yaml" ;; - mission-service) deploy_service "mission-service" "mission-service-net" "mission-service.yaml" ;; - ads-manager-service) deploy_service "ads-manager-service" "ads-manager-service-net" "ads-manager-service.yaml" ;; - ads-serving-service) deploy_service "ads-serving-service" "ads-serving-service-net" "ads-serving-service.yaml" ;; - ads-billing-service) deploy_service "ads-billing-service" "ads-billing-service-net" "ads-billing-service.yaml" ;; - ads-tracking-service) deploy_service "ads-tracking-service" "ads-tracking-service-net" "ads-tracking-service.yaml" ;; - ads-analytics-service) deploy_service "ads-analytics-service" "ads-analytics-service-net" "ads-analytics-service.yaml" ;; - mkt-facebook-service) deploy_service "mkt-facebook-service" "mkt-facebook-service-net" "mkt-facebook-service.yaml" ;; - mkt-whatsapp-service) deploy_service "mkt-whatsapp-service" "mkt-whatsapp-service-net" "mkt-whatsapp-service.yaml" ;; - mkt-x-service) deploy_service "mkt-x-service" "mkt-x-service-net" "mkt-x-service.yaml" ;; - mkt-zalo-service) deploy_service "mkt-zalo-service" "mkt-zalo-service-net" "mkt-zalo-service.yaml" ;; - pos-web) deploy_service "pos-web" "web-client-tpos-net" "pos-web.yaml" ;; + iam-service) deploy_svc "iam-service" "iam-service-net" "iam-service.yaml" ;; + merchant-service) deploy_svc "merchant-service" "merchant-service-net" "merchant-service.yaml" ;; + order-service) deploy_svc "order-service" "order-service-net" "order-service.yaml" ;; + fnb-engine) deploy_svc "fnb-engine" "fnb-engine-net" "fnb-engine.yaml" ;; + catalog-service) deploy_svc "catalog-service" "catalog-service-net" "catalog-service.yaml" ;; + inventory-service) deploy_svc "inventory-service" "inventory-service-net" "inventory-service.yaml" ;; + wallet-service) deploy_svc "wallet-service" "wallet-service-net" "wallet-service.yaml" ;; + storage-service) deploy_svc "storage-service" "storage-service-net" "storage-service.yaml" ;; + booking-service) deploy_svc "booking-service" "booking-service-net" "booking-service.yaml" ;; + chat-service) deploy_svc "chat-service" "chat-service-net" "chat-service.yaml" ;; + social-service) deploy_svc "social-service" "social-service-net" "social-service.yaml" ;; + promotion-service) deploy_svc "promotion-service" "promotion-service-net" "promotion-service.yaml" ;; + membership-service) deploy_svc "membership-service" "membership-service-net" "membership-service.yaml" ;; + mining-service) deploy_svc "mining-service" "mining-service-net" "mining-service.yaml" ;; + mission-service) deploy_svc "mission-service" "mission-service-net" "mission-service.yaml" ;; + ads-manager-service) deploy_svc "ads-manager-service" "ads-manager-service-net" "ads-manager-service.yaml" ;; + ads-serving-service) deploy_svc "ads-serving-service" "ads-serving-service-net" "ads-serving-service.yaml" ;; + ads-billing-service) deploy_svc "ads-billing-service" "ads-billing-service-net" "ads-billing-service.yaml" ;; + ads-tracking-service) deploy_svc "ads-tracking-service" "ads-tracking-service-net" "ads-tracking-service.yaml" ;; + ads-analytics-service) deploy_svc "ads-analytics-service" "ads-analytics-service-net" "ads-analytics-service.yaml" ;; + mkt-facebook-service) deploy_svc "mkt-facebook-service" "mkt-facebook-service-net" "mkt-facebook-service.yaml" ;; + mkt-whatsapp-service) deploy_svc "mkt-whatsapp-service" "mkt-whatsapp-service-net" "mkt-whatsapp-service.yaml" ;; + mkt-x-service) deploy_svc "mkt-x-service" "mkt-x-service-net" "mkt-x-service.yaml" ;; + mkt-zalo-service) deploy_svc "mkt-zalo-service" "mkt-zalo-service-net" "mkt-zalo-service.yaml" ;; + pos-web) deploy_svc "pos-web" "web-client-tpos-net" "pos-web.yaml" ;; esac done - # Wait for rollouts + echo "" + echo "=== Waiting for rollouts ===" FAILED=0 for svc in $CHANGED_SERVICES; do - if [ "$svc" = "__k8s_config__" ]; then continue; fi - echo "Waiting for ${svc}..." if ! kubectl rollout status "deployment/${svc}" -n "${NS}" --timeout=180s 2>/dev/null; then - echo "WARNING: ${svc} rollout did not complete" + echo "⚠️ ${svc} rollout incomplete" FAILED=$((FAILED + 1)) fi done echo "" - echo "=== Deployment Summary ===" - kubectl get pods -n "${NS}" -o wide + echo "=== Final Status ===" + kubectl get pods -n "${NS}" --sort-by=.metadata.name echo "" - kubectl get svc -n "${NS}" + kubectl get svc -n "${NS}" | grep -v cm-acme if [ $FAILED -gt 0 ]; then - echo "WARNING: ${FAILED} service(s) did not complete rollout" - exit 1 + echo "⚠️ ${FAILED} service(s) did not complete rollout" fi diff --git a/deployments/staging/kubernetes/ads-analytics-service.yaml b/deployments/staging/kubernetes/ads-analytics-service.yaml index a4fde68c..32f89fcf 100644 --- a/deployments/staging/kubernetes/ads-analytics-service.yaml +++ b/deployments/staging/kubernetes/ads-analytics-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: ads-analytics-service @@ -108,8 +108,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: ads-analytics-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/ads-billing-service.yaml b/deployments/staging/kubernetes/ads-billing-service.yaml index 705d4fa8..6ce6a45e 100644 --- a/deployments/staging/kubernetes/ads-billing-service.yaml +++ b/deployments/staging/kubernetes/ads-billing-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: ads-billing-service @@ -106,8 +106,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: ads-billing-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/ads-manager-service.yaml b/deployments/staging/kubernetes/ads-manager-service.yaml index 6a12d3a0..23545238 100644 --- a/deployments/staging/kubernetes/ads-manager-service.yaml +++ b/deployments/staging/kubernetes/ads-manager-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: ads-manager-service @@ -108,8 +108,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: ads-manager-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/ads-serving-service.yaml b/deployments/staging/kubernetes/ads-serving-service.yaml index 5704f8bf..b0c17953 100644 --- a/deployments/staging/kubernetes/ads-serving-service.yaml +++ b/deployments/staging/kubernetes/ads-serving-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: ads-serving-service @@ -110,8 +110,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: ads-serving-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/ads-tracking-service.yaml b/deployments/staging/kubernetes/ads-tracking-service.yaml index 29e9dcaf..a261b9ed 100644 --- a/deployments/staging/kubernetes/ads-tracking-service.yaml +++ b/deployments/staging/kubernetes/ads-tracking-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: ads-tracking-service @@ -110,8 +110,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: ads-tracking-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/booking-service.yaml b/deployments/staging/kubernetes/booking-service.yaml index 2f95022c..7df76bf1 100644 --- a/deployments/staging/kubernetes/booking-service.yaml +++ b/deployments/staging/kubernetes/booking-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: booking-service @@ -108,8 +108,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: booking-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/catalog-service.yaml b/deployments/staging/kubernetes/catalog-service.yaml index 9ba9ff52..159dbc39 100644 --- a/deployments/staging/kubernetes/catalog-service.yaml +++ b/deployments/staging/kubernetes/catalog-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: catalog-service @@ -106,8 +106,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: catalog-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/chat-service.yaml b/deployments/staging/kubernetes/chat-service.yaml index 636346f1..4f6f76e5 100644 --- a/deployments/staging/kubernetes/chat-service.yaml +++ b/deployments/staging/kubernetes/chat-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: chat-service @@ -117,8 +117,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: chat-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/fnb-engine.yaml b/deployments/staging/kubernetes/fnb-engine.yaml index 9ebab42f..ddcd2a9e 100644 --- a/deployments/staging/kubernetes/fnb-engine.yaml +++ b/deployments/staging/kubernetes/fnb-engine.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: fnb-engine @@ -113,8 +113,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: fnb-engine - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/iam-service.yaml b/deployments/staging/kubernetes/iam-service.yaml index f37b9031..dc3e6f82 100644 --- a/deployments/staging/kubernetes/iam-service.yaml +++ b/deployments/staging/kubernetes/iam-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: iam-service @@ -113,8 +113,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: iam-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/inventory-service.yaml b/deployments/staging/kubernetes/inventory-service.yaml index df1d4d4e..8300f2f9 100644 --- a/deployments/staging/kubernetes/inventory-service.yaml +++ b/deployments/staging/kubernetes/inventory-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: inventory-service @@ -106,8 +106,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: inventory-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/membership-service.yaml b/deployments/staging/kubernetes/membership-service.yaml index 680c3860..5f7ef4c5 100644 --- a/deployments/staging/kubernetes/membership-service.yaml +++ b/deployments/staging/kubernetes/membership-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: membership-service @@ -108,8 +108,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: membership-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/merchant-service.yaml b/deployments/staging/kubernetes/merchant-service.yaml index 81545833..39a3fe68 100644 --- a/deployments/staging/kubernetes/merchant-service.yaml +++ b/deployments/staging/kubernetes/merchant-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: merchant-service @@ -106,8 +106,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: merchant-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/mining-service.yaml b/deployments/staging/kubernetes/mining-service.yaml index 3b8da795..b5e58ff6 100644 --- a/deployments/staging/kubernetes/mining-service.yaml +++ b/deployments/staging/kubernetes/mining-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: mining-service @@ -108,8 +108,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: mining-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/mission-service.yaml b/deployments/staging/kubernetes/mission-service.yaml index 9be68211..2ed22ee8 100644 --- a/deployments/staging/kubernetes/mission-service.yaml +++ b/deployments/staging/kubernetes/mission-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: mission-service @@ -108,8 +108,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: mission-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/mkt-facebook-service.yaml b/deployments/staging/kubernetes/mkt-facebook-service.yaml index 2e3cab44..76e3a346 100644 --- a/deployments/staging/kubernetes/mkt-facebook-service.yaml +++ b/deployments/staging/kubernetes/mkt-facebook-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: mkt-facebook-service @@ -110,8 +110,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: mkt-facebook-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/mkt-whatsapp-service.yaml b/deployments/staging/kubernetes/mkt-whatsapp-service.yaml index f4dbbe21..81b9072f 100644 --- a/deployments/staging/kubernetes/mkt-whatsapp-service.yaml +++ b/deployments/staging/kubernetes/mkt-whatsapp-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: mkt-whatsapp-service @@ -110,8 +110,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: mkt-whatsapp-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/mkt-x-service.yaml b/deployments/staging/kubernetes/mkt-x-service.yaml index 56e5e86b..a6a58d47 100644 --- a/deployments/staging/kubernetes/mkt-x-service.yaml +++ b/deployments/staging/kubernetes/mkt-x-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: mkt-x-service @@ -110,8 +110,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: mkt-x-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/mkt-zalo-service.yaml b/deployments/staging/kubernetes/mkt-zalo-service.yaml index 43061351..ef2fb4bc 100644 --- a/deployments/staging/kubernetes/mkt-zalo-service.yaml +++ b/deployments/staging/kubernetes/mkt-zalo-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: mkt-zalo-service @@ -110,8 +110,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: mkt-zalo-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/order-service.yaml b/deployments/staging/kubernetes/order-service.yaml index 6c8f9e3d..e220f885 100644 --- a/deployments/staging/kubernetes/order-service.yaml +++ b/deployments/staging/kubernetes/order-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: order-service @@ -114,8 +114,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: order-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/pos-web.yaml b/deployments/staging/kubernetes/pos-web.yaml index 600896e6..43e9e2a6 100644 --- a/deployments/staging/kubernetes/pos-web.yaml +++ b/deployments/staging/kubernetes/pos-web.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: frontend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: pos-web @@ -132,8 +132,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: pos-web - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/promotion-service.yaml b/deployments/staging/kubernetes/promotion-service.yaml index 5f3f069e..c970e9c3 100644 --- a/deployments/staging/kubernetes/promotion-service.yaml +++ b/deployments/staging/kubernetes/promotion-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: promotion-service @@ -108,8 +108,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: promotion-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/social-service.yaml b/deployments/staging/kubernetes/social-service.yaml index 38789564..f48bf9bc 100644 --- a/deployments/staging/kubernetes/social-service.yaml +++ b/deployments/staging/kubernetes/social-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: social-service @@ -108,8 +108,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: social-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/storage-service.yaml b/deployments/staging/kubernetes/storage-service.yaml index 02731498..b6577a07 100644 --- a/deployments/staging/kubernetes/storage-service.yaml +++ b/deployments/staging/kubernetes/storage-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: storage-service @@ -127,8 +127,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: storage-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: diff --git a/deployments/staging/kubernetes/wallet-service.yaml b/deployments/staging/kubernetes/wallet-service.yaml index f59eca81..cab65414 100644 --- a/deployments/staging/kubernetes/wallet-service.yaml +++ b/deployments/staging/kubernetes/wallet-service.yaml @@ -11,7 +11,7 @@ metadata: platform: goodgo tier: backend spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: wallet-service @@ -106,8 +106,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: wallet-service - minReplicas: 2 - maxReplicas: 4 + minReplicas: 1 + maxReplicas: 2 metrics: - type: Resource resource: