version: 0.1 component: command timeoutInSeconds: 1200 shell: bash failImmediatelyOnError: true env: variables: APP_NAMESPACE: kagent-demo CONFIGMAP_NAME: demo-config PAYMENT_DEPLOYMENT: payment-service PAYMENT_CONTAINER: payment-service IMAGE_PULL_SECRET: ocir-secret ORDER_HPA_NAME: order-service ORDER_MIN_REPLICAS: "3" ORDER_MAX_REPLICAS: "8" ORDER_CPU_TARGET: "65" WAIT_TIMEOUT: 300s steps: - type: Command name: Fix business ConfigMap command: | kubectl patch configmap "${CONFIGMAP_NAME}" -n "${APP_NAMESPACE}" \ --type merge \ -p '{ "data": { "ORDER_STUCK_REVIEW_MODE": "false", "ORDER_MANUAL_REVIEW_RATE_THRESHOLD": "70", "ORDER_REVENUE_AT_RISK_THRESHOLD": "15000", "PAYMENT_FORCE_TIMEOUT": "false", "INVENTORY_FORCE_OUTAGE": "false" } }' kubectl rollout restart deployment/order-service -n "${APP_NAMESPACE}" - type: Command name: Fix payment image pull secret command: | kubectl patch deployment "${PAYMENT_DEPLOYMENT}" -n "${APP_NAMESPACE}" \ --type merge \ -p "{ \"spec\": { \"template\": { \"spec\": { \"imagePullSecrets\": [ {\"name\": \"${IMAGE_PULL_SECRET}\"} ], \"containers\": [ { \"name\": \"${PAYMENT_CONTAINER}\", \"imagePullPolicy\": \"IfNotPresent\" } ] } } } }" kubectl rollout restart deployment/"${PAYMENT_DEPLOYMENT}" -n "${APP_NAMESPACE}" - type: Command name: Fix order HPA ceiling command: | kubectl patch hpa "${ORDER_HPA_NAME}" -n "${APP_NAMESPACE}" \ --type merge \ -p "{ \"spec\": { \"minReplicas\": ${ORDER_MIN_REPLICAS}, \"maxReplicas\": ${ORDER_MAX_REPLICAS}, \"metrics\": [ { \"type\": \"Resource\", \"resource\": { \"name\": \"cpu\", \"target\": { \"type\": \"Utilization\", \"averageUtilization\": ${ORDER_CPU_TARGET} } } } ] } }" - type: Command name: Wait and verify remediation command: | kubectl rollout status deployment/order-service -n "${APP_NAMESPACE}" --timeout="${WAIT_TIMEOUT}" kubectl rollout status deployment/"${PAYMENT_DEPLOYMENT}" -n "${APP_NAMESPACE}" --timeout="${WAIT_TIMEOUT}" kubectl get pods -n "${APP_NAMESPACE}" -o wide kubectl get hpa -n "${APP_NAMESPACE}" -o wide kubectl get configmap "${CONFIGMAP_NAME}" -n "${APP_NAMESPACE}" -o yaml