module kubernetes import incubaid.herolib.data.encoderhero import os // K8s API Version and Kind tracking @[params] pub struct K8sMetadata { pub mut: name string namespace string = 'default' labels map[string]string annotations map[string]string owner_reference string } // Pod Specification @[params] pub struct ContainerSpec { pub mut: name string image string image_pull_policy string = 'IfNotPresent' ports []ContainerPort env []EnvVar resources ResourceRequirements volume_mounts []VolumeMount command []string args []string } @[params] pub struct ContainerPort { pub mut: name string container_port int protocol string = 'TCP' host_port int } @[params] pub struct EnvVar { pub mut: name string value string } @[params] pub struct ResourceRequirements { pub mut: requests map[string]string // cpu, memory limits map[string]string } @[params] pub struct VolumeMount { pub mut: name string mount_path string read_only bool } @[params] pub struct PodSpec { pub mut: metadata K8sMetadata containers []ContainerSpec restart_policy string = 'Always' service_account string volumes []Volume } @[params] pub struct Volume { pub mut: name string config_map string secret string empty_dir bool } // Deployment Specification @[params] pub struct DeploymentSpec { pub mut: metadata K8sMetadata replicas int = 1 selector map[string]string template PodSpec strategy DeploymentStrategy progress_deadline_seconds int = 600 } @[params] pub struct DeploymentStrategy { pub mut: strategy_type string = 'RollingUpdate' rolling_update RollingUpdateStrategy } @[params] pub struct RollingUpdateStrategy { pub mut: max_surge string = '25%' max_unavailable string = '25%' } // Service Specification @[params] pub struct ServiceSpec { pub mut: metadata K8sMetadata service_type string = 'ClusterIP' // ClusterIP, NodePort, LoadBalancer selector map[string]string ports []ServicePort cluster_ip string external_ips []string session_affinity string } @[params] pub struct ServicePort { pub mut: name string protocol string = 'TCP' port int target_port int node_port int } // ConfigMap @[params] pub struct ConfigMapSpec { pub mut: metadata K8sMetadata data map[string]string } // Secret @[params] pub struct SecretSpec { pub mut: metadata K8sMetadata secret_type string = 'Opaque' data map[string]string // base64 encoded } // Kube Client Configuration @[params] pub struct KubeConfig { pub mut: kubeconfig_path string context string = '' namespace string = 'default' api_server string ca_cert_path string client_cert_path string client_key_path string token string insecure_skip_tls_verify bool } // Validation result for YAML files pub struct K8sValidationResult { pub mut: valid bool kind string api_version string metadata K8sMetadata errors []string } // Cluster info pub struct ClusterInfo { pub mut: version string nodes int namespaces int running_pods int api_server string }