blob: c8e62d172fc6b557956cf3a717dff5a6c77579c5 [file] [log] [blame]
giof6ad2982024-08-23 17:42:49 +04001package cluster
2
3import (
4 "net"
5)
6
7const (
8 whichTailscale = "which tailscale"
9 tailscaleInstallCmd = "curl -fsSL https://tailscale.com/install.sh | sh"
10 tailscaleUpCmd = "sudo tailscale up --login-server=%s --auth-key=%s --hostname=%s --reset"
11)
12
13type Server struct {
14 Name string `json:"name"`
15 IP net.IP `json:"ip"`
16 Port int `json:"port"`
17 HostKey string `json:"hostKey"`
18 User string `json:"user"`
19 Password string `json:"password"`
20 ClientKey string `json:"clientKey"`
21 AuthKey string `json:"authKey"`
22}
23
24type State struct {
25 Name string `json:"name"`
26 IngressClassName string `json:"ingressClassName"`
27 IngressIP net.IP `json:"ingressIP"`
28 ServerAddr string `json:"serverAddr"`
29 ServerToken string `json:"serverToken"`
30 Kubeconfig string `json:"kubeconfig"`
31 Controllers []Server `json:"controllers"`
32 Workers []Server `json:"workers"`
33}
34
35type ClusterSetupFunc func(name, kubeconfig, ingressClassName string) (net.IP, error)
36
37type Manager interface {
38 Init(s Server, setupFn ClusterSetupFunc) (net.IP, error)
39 JoinController(s Server) error
40 JoinWorker(s Server) error
41 RemoveServer(name string) error
42 State() State
43}