2025-10-07 11:20:26 +01:00

103 lines
3.2 KiB
Plaintext

# KCL Dependency configuration for cilium taskserv
# Defines comprehensive dependency, resource, and health requirements
import provisioning.dependencies as schema
# Cilium taskserv dependency configuration
_dependencies = schema.TaskservDependencies {
name = "cilium"
# Critical dependencies - must be installed first
requires = ["kubernetes", "containerd"]
# Optional enhancements - install if available
optional = ["coredns", "proxy"]
# Cannot coexist with other CNI solutions
conflicts = ["calico", "flannel", "weave"]
# Services provided by this taskserv
provides = ["cni", "network-policy", "load-balancer", "service-mesh", "hubble-ui"]
# Resource requirements for Cilium installation
resources = schema.ResourceRequirement {
cpu = "500m" # 500m CPU for network processing
memory = "512Mi" # 512MB RAM for network state
disk = "2Gi" # 2GB for logs and network data
network = True # Core network functionality
privileged = True # Needs privileged access for network operations
}
# Health checks for Cilium components
health_checks = [
schema.HealthCheck {
command = "kubectl get pods -n kube-system -l k8s-app=cilium | grep -v Running | wc -l | grep -q '^0$'"
interval = 60
timeout = 15
retries = 3
success_threshold = 2
failure_threshold = 3
},
schema.HealthCheck {
command = "kubectl exec -n kube-system ds/cilium -- cilium status | grep -q 'OK'"
interval = 120
timeout = 20
retries = 3
},
schema.HealthCheck {
command = "kubectl get ciliumnodeconfig -A | wc -l | grep -v '^0$'"
interval = 180
timeout = 10
retries = 2
}
]
# Readiness probe for installation completion
readiness_probe = schema.HealthCheck {
command = "kubectl get nodes -o jsonpath='{.items[*].status.conditions[?(@.type==\"Ready\")].status}' | grep -v True | wc -l | grep -q '^0$'"
interval = 30
timeout = 10
retries = 8
success_threshold = 3
}
# Installation phases for ordered deployment
phases = [
schema.InstallationPhase {
name = "pre-install"
order = 1
parallel = False
required = True
},
schema.InstallationPhase {
name = "install"
order = 2
parallel = False
required = True
},
schema.InstallationPhase {
name = "post-install"
order = 3
parallel = True
required = True
},
schema.InstallationPhase {
name = "validate"
order = 4
parallel = False
required = True
}
]
# Installation control
timeout = 600 # 10 minutes for CNI setup
retry_count = 3
# Platform compatibility
os_support = ["linux"]
arch_support = ["amd64", "arm64"]
k8s_versions = ["1.31.x", "1.30.x", "1.29.x", "1.28.x"]
}
# Output for dynamic dependency resolution
_dependencies