package model import ( "time" ) // KubernetesCluster K8s集群模型 type KubernetesCluster struct { ID uint `gorm:"primarykey" json:"id"` Name string `gorm:"size:128;not null" json:"name"` Code string `gorm:"size:64;uniqueIndex;not null" json:"code"` Version string `gorm:"size:32" json:"version"` Status string `gorm:"size:32;default:healthy" json:"status"` // healthy, warning, error ConfigType int `gorm:"default:1" json:"config_type"` // 0=token, 1=kubeconfig APIServer string `gorm:"size:255" json:"api_server"` APIEndpoint string `gorm:"size:255" json:"api_endpoint"` Token string `gorm:"type:text" json:"-"` KubeConfig string `gorm:"type:text" json:"-"` NodeCount int `gorm:"default:0" json:"node_count"` PodCount int `gorm:"default:0" json:"pod_count"` ServiceCount int `gorm:"default:0" json:"service_count"` DeploymentCount int `gorm:"default:0" json:"deployment_count"` IngressCount int `gorm:"default:0" json:"ingress_count"` // 路由/Ingress 数量 // Logan.Li CPUUsage float64 `json:"cpu_usage"` MemoryUsage float64 `json:"memory_usage"` Description string `gorm:"size:500" json:"description"` Labels string `gorm:"type:text" json:"labels"` // JSON LastSyncAt *time.Time `json:"last_sync_at"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } // TableName 表名 func (KubernetesCluster) TableName() string { return "kubernetes_clusters" } // KubernetesNode K8s节点模型 type KubernetesNode struct { ID uint `gorm:"primarykey" json:"id"` ClusterID uint `gorm:"not null" json:"cluster_id"` Name string `gorm:"size:128;not null" json:"name"` IP string `gorm:"size:64" json:"ip"` Role string `gorm:"size:32" json:"role"` // master, worker Status string `gorm:"size:32" json:"status"` OS string `gorm:"size:64" json:"os"` KubeletVer string `gorm:"size:32" json:"kubelet_version"` CPU int `json:"cpu"` Memory int64 `json:"memory"` Disk int64 `json:"disk"` CPUUsage float64 `json:"cpu_usage"` MemoryUsage float64 `json:"memory_usage"` DiskUsage float64 `json:"disk_usage"` PodCount int `json:"pod_count"` MaxPods int `json:"max_pods"` Labels string `gorm:"type:text" json:"labels"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` // 关联 Cluster *KubernetesCluster `json:"cluster,omitempty"` } // TableName 表名 func (KubernetesNode) TableName() string { return "kubernetes_nodes" } // KubernetesPod K8s Pod模型 type KubernetesPod struct { ID uint `gorm:"primarykey" json:"id"` ClusterID uint `gorm:"not null" json:"cluster_id"` Namespace string `gorm:"size:64;not null" json:"namespace"` Name string `gorm:"size:128;not null" json:"name"` Status string `gorm:"size:32" json:"status"` // Running, Pending, Succeeded, Failed NodeName string `gorm:"size:128" json:"node_name"` IP string `gorm:"size:64" json:"ip"` RestartCount int `json:"restart_count"` Image string `gorm:"size:255" json:"image"` CPUUsage float64 `json:"cpu_usage"` MemoryUsage float64 `json:"memory_usage"` Labels string `gorm:"type:text" json:"labels"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` // 关联 Cluster *KubernetesCluster `json:"cluster,omitempty"` } // TableName 表名 func (KubernetesPod) TableName() string { return "kubernetes_pods" } // KubernetesDeployment K8s Deployment模型 type KubernetesDeployment struct { ID uint `gorm:"primarykey" json:"id"` ClusterID uint `gorm:"not null" json:"cluster_id"` Namespace string `gorm:"size:64;not null" json:"namespace"` Name string `gorm:"size:128;not null" json:"name"` Replicas int `json:"replicas"` AvailableReplicas int `json:"available_replicas"` ReadyReplicas int `json:"ready_replicas"` Image string `gorm:"size:255" json:"image"` Strategy string `gorm:"size:32" json:"strategy"` Labels string `gorm:"type:text" json:"labels"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` // 关联 Cluster *KubernetesCluster `json:"cluster,omitempty"` } // TableName 表名 func (KubernetesDeployment) TableName() string { return "kubernetes_deployments" } // KubernetesService K8s Service模型 type KubernetesService struct { ID uint `gorm:"primarykey" json:"id"` ClusterID uint `gorm:"not null" json:"cluster_id"` Namespace string `gorm:"size:64;not null" json:"namespace"` Name string `gorm:"size:128;not null" json:"name"` Type string `gorm:"size:32" json:"type"` // ClusterIP, NodePort, LoadBalancer ClusterIP string `gorm:"size:64" json:"cluster_ip"` ExternalIP string `gorm:"size:255" json:"external_ip"` Ports string `gorm:"type:text" json:"ports"` // JSON Selector string `gorm:"type:text" json:"selector"` Labels string `gorm:"type:text" json:"labels"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` // 关联 Cluster *KubernetesCluster `json:"cluster,omitempty"` } // TableName 表名 func (KubernetesService) TableName() string { return "kubernetes_services" } // KubernetesIngress K8s Ingress模型 type KubernetesIngress struct { ID uint `gorm:"primarykey" json:"id"` ClusterID uint `gorm:"not null" json:"cluster_id"` Namespace string `gorm:"size:64;not null" json:"namespace"` Name string `gorm:"size:128;not null" json:"name"` Hosts string `gorm:"type:text" json:"hosts"` // JSON Backend string `gorm:"size:255" json:"backend"` TLS bool `json:"tls"` TLSHosts string `gorm:"type:text" json:"tls_hosts"` Labels string `gorm:"type:text" json:"labels"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` // 关联 Cluster *KubernetesCluster `json:"cluster,omitempty"` } // TableName 表名 func (KubernetesIngress) TableName() string { return "kubernetes_ingresses" } // CreateKubernetesClusterRequest 创建K8s集群请求 type CreateKubernetesClusterRequest struct { Name string `json:"name" binding:"required"` Code string `json:"code" binding:"required"` Version string `json:"version"` ConfigType int `json:"config_type"` // 0=token, 1=kubeconfig APIServer string `json:"api_server"` APIEndpoint string `json:"api_endpoint"` Token string `json:"token"` KubeConfig string `json:"kube_config"` Description string `json:"description"` } // KubernetesClusterStats K8s集群统计 type KubernetesClusterStats struct { Total int64 `json:"total"` Healthy int64 `json:"healthy"` Warning int64 `json:"warning"` Error int64 `json:"error"` TotalNodes int64 `json:"total_nodes"` TotalPods int64 `json:"total_pods"` TotalServices int64 `json:"total_services"` } // TopologyLayout 拓扑布局(保存节点位置 + 自定义节点 + 自定义连线) // Logan.Li type TopologyLayout struct { ID uint `gorm:"primarykey" json:"id"` ClusterID uint `gorm:"uniqueIndex;not null" json:"cluster_id"` LayoutData string `gorm:"type:text" json:"layout_data"` // JSON: {positions, customNodes, customEdges} CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } // TableName 指定表名 func (TopologyLayout) TableName() string { return "kubernetes_topology_layouts" }