Skip to main content
Glama
kube_config.go4.03 kB
package models import ( "encoding/base64" "time" "github.com/weibaohui/k8m/internal/dao" "github.com/weibaohui/k8m/pkg/comm/utils" "gorm.io/gorm" ) // KubeConfig 用户导入kubeconfig type KubeConfig struct { ID uint `gorm:"primaryKey;autoIncrement" json:"id,omitempty"` // 模板 ID,主键,自增 Content string `gorm:"type:text" json:"content,omitempty"` // 模板内容,支持大文本存储 Server string `json:"server,omitempty"` User string `json:"user,omitempty"` Cluster string `json:"cluster,omitempty"` // 类型,最大长度 100 Namespace string `json:"namespace,omitempty"` DisplayName string `json:"display_name,omitempty"` // aws 集群相关 AccessKey string `json:"-"` // AWS Access Key ID SecretAccessKey string `json:"-"` // AWS Secret Access Key ClusterName string `json:"cluster_name"` // AWS EKS 集群名称 Region string `json:"region"` // AWS 区域 IsAWSEKS bool `json:"is_aws_eks,omitempty"` // 标识是否为AWS EKS集群 // token 纳管相关 server\token\cadata Token string `gorm:"type:text" json:"token,omitempty"` // token 内容,支持大文本存储 CACert string `gorm:"type:text" json:"ca_data,omitempty"` // ca 证书内容,支持大文本存储 // kom 集群注册配置项 // ProxyURL 设置 HTTP 代理,例如 http://127.0.0.1:7890 ProxyURL string `gorm:"type:varchar(255)" json:"proxy_url,omitempty"` // Timeout 设置请求超时时间,单位为秒,默认为 30 秒 Timeout int `gorm:"default:30" json:"timeout,omitempty"` // QPS 设置每秒查询数限制,默认为 200 QPS float32 `gorm:"default:200" json:"qps,omitempty"` // Burst 设置突发请求数限制,默认为 2000 Burst int `gorm:"default:2000" json:"burst,omitempty"` CreatedAt time.Time `json:"created_at,omitempty" gorm:"<-:create"` UpdatedAt time.Time `json:"updated_at,omitempty"` // Automatically managed by GORM for update time } func (c *KubeConfig) List(params *dao.Params, queryFuncs ...func(*gorm.DB) *gorm.DB) ([]*KubeConfig, int64, error) { return dao.GenericQuery(params, c, queryFuncs...) } func (c *KubeConfig) Save(params *dao.Params, queryFuncs ...func(*gorm.DB) *gorm.DB) error { return dao.GenericSave(params, c, queryFuncs...) } func (c *KubeConfig) Delete(params *dao.Params, ids string, queryFuncs ...func(*gorm.DB) *gorm.DB) error { return dao.GenericDelete(params, c, utils.ToInt64Slice(ids), queryFuncs...) } func (c *KubeConfig) GetOne(params *dao.Params, queryFuncs ...func(*gorm.DB) *gorm.DB) (*KubeConfig, error) { return dao.GenericGetOne(params, c, queryFuncs...) } // BeforeSave 在保存前加密敏感字段 func (c *KubeConfig) BeforeSave(tx *gorm.DB) error { if c.AccessKey != "" { encrypted, err := encryptField(c.AccessKey) if err != nil { return err } c.AccessKey = encrypted } if c.SecretAccessKey != "" { encrypted, err := encryptField(c.SecretAccessKey) if err != nil { return err } c.SecretAccessKey = encrypted } return nil } // AfterFind 在查询后解密敏感字段 func (c *KubeConfig) AfterFind(tx *gorm.DB) error { if c.AccessKey != "" { decrypted, err := decryptField(c.AccessKey) if err != nil { return err } c.AccessKey = decrypted } if c.SecretAccessKey != "" { decrypted, err := decryptField(c.SecretAccessKey) if err != nil { return err } c.SecretAccessKey = decrypted } return nil } // encryptField 加密字段 func encryptField(plaintext string) (string, error) { if plaintext == "" { return "", nil } encrypted, err := utils.AesEncrypt([]byte(plaintext)) if err != nil { return "", err } return base64.StdEncoding.EncodeToString(encrypted), nil } // decryptField 解密字段 func decryptField(ciphertext string) (string, error) { if ciphertext == "" { return "", nil } decrypted, err := utils.AesDecrypt(ciphertext) if err != nil { return "", err } return string(decrypted), nil }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/weibaohui/k8m'

If you have feedback or need assistance with the MCP directory API, please join our Discord server