97 lines
2.8 KiB
Plaintext
97 lines
2.8 KiB
Plaintext
# KCL Dependency configuration for kubernetes taskserv
|
|
# Defines comprehensive dependency, resource, and health requirements
|
|
|
|
import provisioning.dependencies as schema
|
|
|
|
# Kubernetes taskserv dependency configuration
|
|
_dependencies = schema.TaskservDependencies {
|
|
name = "kubernetes"
|
|
|
|
# Critical dependencies - must be installed first
|
|
requires = ["containerd", "etcd", "os"]
|
|
|
|
# Optional enhancements - install if available
|
|
optional = ["coredns", "cilium", "proxy"]
|
|
|
|
# Cannot coexist with alternative container runtimes
|
|
conflicts = ["docker", "podman", "crio"]
|
|
|
|
# Services provided by this taskserv
|
|
provides = ["k8s-api", "kubelet", "kubectl", "kube-scheduler", "kube-controller-manager"]
|
|
|
|
# Resource requirements for Kubernetes installation
|
|
resources = schema.ResourceRequirement {
|
|
cpu = "2000m" # 2 CPU cores minimum
|
|
memory = "2Gi" # 2GB RAM minimum
|
|
disk = "20Gi" # 20GB for etcd, logs, images
|
|
network = True # Requires network for cluster communication
|
|
privileged = True # Needs privileged access for system integration
|
|
}
|
|
|
|
# Health checks for Kubernetes components
|
|
health_checks = [
|
|
schema.HealthCheck {
|
|
command = "kubectl cluster-info"
|
|
interval = 60
|
|
timeout = 15
|
|
retries = 3
|
|
success_threshold = 2
|
|
failure_threshold = 3
|
|
},
|
|
schema.HealthCheck {
|
|
command = "systemctl is-active kubelet"
|
|
interval = 30
|
|
timeout = 5
|
|
retries = 2
|
|
}
|
|
]
|
|
|
|
# Readiness probe for installation completion
|
|
readiness_probe = schema.HealthCheck {
|
|
command = "kubectl get nodes --no-headers | grep -q Ready"
|
|
interval = 30
|
|
timeout = 10
|
|
retries = 10
|
|
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 = 1200 # 20 minutes for full cluster setup
|
|
retry_count = 3
|
|
|
|
# Platform compatibility
|
|
os_support = ["linux"]
|
|
arch_support = ["amd64", "arm64"]
|
|
k8s_versions = ["1.31.0", "1.30.x", "1.29.x"]
|
|
}
|
|
|
|
# Output for dynamic dependency resolution
|
|
_dependencies |