79 lines
2.3 KiB
YAML
79 lines
2.3 KiB
YAML
|
|
# Placeholder deployment that KEDA scales based on Argo queue depth.
|
||
|
|
# When scaled up, these pods request resources on the high-compute pool,
|
||
|
|
# triggering the Civo cluster autoscaler to add nodes.
|
||
|
|
apiVersion: kubernetes.crossplane.io/v1alpha2
|
||
|
|
kind: Object
|
||
|
|
metadata:
|
||
|
|
name: argo-queue-placeholder
|
||
|
|
namespace: crossplane-system
|
||
|
|
spec:
|
||
|
|
providerConfigRef:
|
||
|
|
name: kubernetes-provider
|
||
|
|
forProvider:
|
||
|
|
manifest:
|
||
|
|
apiVersion: apps/v1
|
||
|
|
kind: Deployment
|
||
|
|
metadata:
|
||
|
|
name: argo-queue-placeholder
|
||
|
|
namespace: argo
|
||
|
|
spec:
|
||
|
|
replicas: 0
|
||
|
|
selector:
|
||
|
|
matchLabels:
|
||
|
|
app: argo-queue-placeholder
|
||
|
|
template:
|
||
|
|
metadata:
|
||
|
|
labels:
|
||
|
|
app: argo-queue-placeholder
|
||
|
|
spec:
|
||
|
|
nodeSelector:
|
||
|
|
kubernetes.civo.com/node-pool: high-compute
|
||
|
|
tolerations:
|
||
|
|
- key: "kubernetes.civo.com/node-pool"
|
||
|
|
operator: "Equal"
|
||
|
|
value: "high-compute"
|
||
|
|
effect: "NoSchedule"
|
||
|
|
terminationGracePeriodSeconds: 0
|
||
|
|
containers:
|
||
|
|
- name: placeholder
|
||
|
|
image: busybox
|
||
|
|
command: ["sleep", "infinity"]
|
||
|
|
resources:
|
||
|
|
requests:
|
||
|
|
cpu: "1"
|
||
|
|
memory: 1Gi
|
||
|
|
---
|
||
|
|
# KEDA ScaledObject - scales placeholder based on pending Argo workflow pods.
|
||
|
|
# When workflows are submitted, their pods land in Pending state (no nodes).
|
||
|
|
# KEDA sees the pending pods and scales up the placeholder deployment,
|
||
|
|
# which also targets high-compute nodes, adding pressure for the cluster
|
||
|
|
# autoscaler to provision new nodes.
|
||
|
|
apiVersion: kubernetes.crossplane.io/v1alpha2
|
||
|
|
kind: Object
|
||
|
|
metadata:
|
||
|
|
name: argo-queue-scaledobject
|
||
|
|
namespace: crossplane-system
|
||
|
|
spec:
|
||
|
|
providerConfigRef:
|
||
|
|
name: kubernetes-provider
|
||
|
|
forProvider:
|
||
|
|
manifest:
|
||
|
|
apiVersion: keda.sh/v1alpha1
|
||
|
|
kind: ScaledObject
|
||
|
|
metadata:
|
||
|
|
name: argo-queue-scaler
|
||
|
|
namespace: argo
|
||
|
|
spec:
|
||
|
|
scaleTargetRef:
|
||
|
|
name: argo-queue-placeholder
|
||
|
|
pollingInterval: 15
|
||
|
|
cooldownPeriod: 300
|
||
|
|
minReplicaCount: 0
|
||
|
|
maxReplicaCount: 5
|
||
|
|
triggers:
|
||
|
|
- type: kubernetes-workload
|
||
|
|
metadata:
|
||
|
|
podSelector: "workflows.argoproj.io/completed=false"
|
||
|
|
namespace: "argo"
|
||
|
|
value: "1"
|