Documentation ¶
Index ¶
- Constants
- Variables
- func CreateNamespace(namespace string, kubeClient client.Client) error
- func CreateOrUpdateRegistrySecret(namespace string, reg *commonmodels.RegistryNamespace, ...) error
- func GetClientset(clusterID string) (kubernetes.Interface, error)
- func GetDirtyResources(ns string, kubeClient client.Client) []metav1.Object
- func GetKubeAPIReader(clusterID string) (client.Reader, error)
- func GetKubeClient(clusterID string) (client.Client, error)
- func GetRESTConfig(clusterID string) (*rest.Config, error)
- func GetSelectedPodsInfo(ns string, selector labels.Selector, kubeClient client.Client, ...) (string, string, []string)
- func MakeSafeLabelValue(value string) string
- func MergeLabels(from, to map[string]string) map[string]string
- func ParseSysKeys(namespace, envName, productName, serviceName, ori string) string
- func ReplaceContainerImages(tmpl string, ori []*commonmodels.Container, replace []*commonmodels.Container) string
- type Service
- func (s *Service) CreateCluster(cluster *models.K8SCluster, logger *zap.SugaredLogger) (*models.K8SCluster, error)
- func (s *Service) DeleteCluster(user string, id string, logger *zap.SugaredLogger) error
- func (s *Service) GetCluster(id string, logger *zap.SugaredLogger) (*models.K8SCluster, error)
- func (s *Service) GetClusterByToken(token string, logger *zap.SugaredLogger) (*models.K8SCluster, error)
- func (s *Service) GetYaml(id, agentImage, aslanURL, hubURI string, useDeployment bool, ...) ([]byte, error)
- func (s *Service) ListClusters(clusterType string, logger *zap.SugaredLogger) ([]*models.K8SCluster, error)
- func (s *Service) ListConnectedClusters(logger *zap.SugaredLogger) ([]*models.K8SCluster, error)
- func (s *Service) UpdateCluster(id string, cluster *models.K8SCluster, logger *zap.SugaredLogger) (*models.K8SCluster, error)
- type TemplateSchema
Constants ¶
View Source
const ( NameSpaceRegexString = "[^a-z0-9.-]" DefaultNameRegexString = "^[a-zA-Z0-9-_]{1,50}$" )
Variables ¶
View Source
var ( NameSpaceRegex = regexp.MustCompile(NameSpaceRegexString) DefaultNameRegex = regexp.MustCompile(DefaultNameRegexString) )
View Source
var YamlTemplate = template.Must(template.New("agentYaml").Parse(`
---
apiVersion: v1
kind: Namespace
metadata:
name: koderover-agent
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: koderover-agent
namespace: koderover-agent
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: koderover-agent-admin-binding
namespace: koderover-agent
subjects:
- kind: ServiceAccount
name: koderover-agent
namespace: koderover-agent
roleRef:
kind: ClusterRole
name: koderover-agent-admin
apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: koderover-agent-admin
rules:
- apiGroups:
- '*'
resources:
- '*'
verbs:
- '*'
- nonResourceURLs:
- '*'
verbs:
- '*'
---
apiVersion: apps/v1
{{- if .UseDeployment }}
kind: Deployment
{{- else }}
kind: DaemonSet
{{- end }}
metadata:
name: koderover-agent-node-agent
namespace: koderover-agent
spec:
selector:
matchLabels:
app: koderover-agent-agent
template:
metadata:
labels:
app: koderover-agent-agent
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: beta.kubernetes.io/os
operator: NotIn
values:
- windows
{{- if .UseDeployment }}
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
topologyKey: kubernetes.io/hostname
{{- end }}
hostNetwork: true
serviceAccountName: koderover-agent
containers:
- name: agent
image: {{.HubAgentImage}}
imagePullPolicy: Always
env:
- name: AGENT_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: HUB_AGENT_TOKEN
value: "{{.ClientToken}}"
- name: HUB_SERVER_BASE_ADDR
value: "{{.HubServerBaseAddr}}"
resources:
limits:
cpu: 1000m
memory: 1Gi
requests:
cpu: 100m
memory: 256Mi
{{- if .UseDeployment }}
replicas: 1
{{- else }}
updateStrategy:
type: RollingUpdate
{{- end }}
`))
View Source
var YamlTemplateForNamespace = template.Must(template.New("agentYaml").Parse(`
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: koderover-agent-sa
namespace: {{.Namespace}}
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
name: koderover-agent-admin-binding
namespace: {{.Namespace}}
subjects:
- kind: ServiceAccount
name: koderover-agent-sa
namespace: {{.Namespace}}
roleRef:
kind: Role
name: koderover-agent-admin-role
apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: koderover-agent-admin-role
namespace: {{.Namespace}}
rules:
- apiGroups:
- '*'
resources:
- '*'
verbs:
- '*'
---
apiVersion: apps/v1
{{- if .UseDeployment }}
kind: Deployment
{{- else }}
kind: DaemonSet
{{- end }}
metadata:
name: koderover-agent-node-agent
namespace: {{.Namespace}}
spec:
selector:
matchLabels:
app: koderover-agent-agent
template:
metadata:
labels:
app: koderover-agent-agent
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: beta.kubernetes.io/os
operator: NotIn
values:
- windows
{{- if .UseDeployment }}
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
topologyKey: kubernetes.io/hostname
{{- end }}
hostNetwork: true
serviceAccountName: koderover-agent-sa
containers:
- name: agent
image: {{.HubAgentImage}}
imagePullPolicy: Always
env:
- name: AGENT_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: HUB_AGENT_TOKEN
value: "{{.ClientToken}}"
- name: HUB_SERVER_BASE_ADDR
value: "{{.HubServerBaseAddr}}"
resources:
limits:
cpu: 1000m
memory: 1Gi
requests:
cpu: 100m
memory: 256Mi
{{- if .UseDeployment }}
replicas: 1
{{- else }}
updateStrategy:
type: RollingUpdate
{{- end }}
`))
Functions ¶
func CreateOrUpdateRegistrySecret ¶
func CreateOrUpdateRegistrySecret(namespace string, reg *commonmodels.RegistryNamespace, kubeClient client.Client) error
func GetClientset ¶
func GetClientset(clusterID string) (kubernetes.Interface, error)
GetClientset returns a client to interact with APIServer which implements kubernetes.Interface
func GetDirtyResources ¶
GetDirtyResources searches for dirty active resources in the given namespace, and return their metadata.
func GetSelectedPodsInfo ¶
func GetSelectedPodsInfo(ns string, selector labels.Selector, kubeClient client.Client, log *zap.SugaredLogger) (string, string, []string)
TODO: improve this function
func MakeSafeLabelValue ¶
func ParseSysKeys ¶
ParseSysKeys 渲染系统变量键值
func ReplaceContainerImages ¶
func ReplaceContainerImages(tmpl string, ori []*commonmodels.Container, replace []*commonmodels.Container) string
Types ¶
type Service ¶
type Service struct { *multicluster.Agent // contains filtered or unexported fields }
func NewService ¶
func (*Service) CreateCluster ¶
func (s *Service) CreateCluster(cluster *models.K8SCluster, logger *zap.SugaredLogger) (*models.K8SCluster, error)
func (*Service) DeleteCluster ¶
func (*Service) GetCluster ¶
func (s *Service) GetCluster(id string, logger *zap.SugaredLogger) (*models.K8SCluster, error)
func (*Service) GetClusterByToken ¶
func (s *Service) GetClusterByToken(token string, logger *zap.SugaredLogger) (*models.K8SCluster, error)
func (*Service) ListClusters ¶
func (s *Service) ListClusters(clusterType string, logger *zap.SugaredLogger) ([]*models.K8SCluster, error)
func (*Service) ListConnectedClusters ¶
func (s *Service) ListConnectedClusters(logger *zap.SugaredLogger) ([]*models.K8SCluster, error)
func (*Service) UpdateCluster ¶
func (s *Service) UpdateCluster(id string, cluster *models.K8SCluster, logger *zap.SugaredLogger) (*models.K8SCluster, error)
Click to show internal directories.
Click to hide internal directories.