Advertisement
Guest User

Untitled

a guest
Sep 11th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 7.92 KB | None | 0 0
  1. package tools
  2.  
  3. import (
  4.     "crypto/x509"
  5.     "encoding/base64"
  6.     "fmt"
  7.     "time"
  8.  
  9.     "golang.org/x/crypto/ssh"
  10.     "models"
  11.     "service"
  12. )
  13.  
  14. const (
  15.     MASTER_TASK_ID                = "MASTER"
  16.     MASTER_INSECURE_ENDPOINT_PORT = int(60001)
  17.     MASTER_SECURE_ENDPOINT_PORT   = int(60002)
  18.     K8S_BINARY                    = "static.ccs.tencentyun.com/k8s-1.10.5-e78e7740.tar.gz"
  19.     DOCKER_BINARY                 = "static.ccs.tencentyun.com/docker-17.12.1-ce.tgz"
  20. )
  21.  
  22. func GenServiceAccount(apiSrvKey string) ([]byte, error) {
  23.     private, err := x509.ParsePKCS1PrivateKey([]byte(apiSrvKey))
  24.     if err != nil {
  25.         return nil, err
  26.     }
  27.     publicKey, err := ssh.NewPublicKey(private.PublicKey)
  28.     if err != nil {
  29.         return nil, err
  30.     }
  31.     return publicKey.Marshal(), nil
  32. }
  33.  
  34. type MasterCertAndKey struct {
  35.     ClsID               string
  36.     ApiServerCert       string
  37.     ApiServerKey        string
  38.     ApiServerKubeletCrt string
  39.     ApiServerKubeletKey string
  40.     ServiceAccountPrv   string
  41.     ServiceAccountPem   string
  42. }
  43.  
  44. type K8sConfigInfo struct {
  45.     ServiceCIDR  string
  46.     PodCIDR      string
  47.     NodeMaskSize int
  48. }
  49.  
  50. func GenerateMasterInstallJob(curNode *models.VmInstance, masterLb, etcdEndpPoints string, certAndKey MasterCertAndKey, info K8sConfigInfo) *models.Job {
  51.     return &models.Job{
  52.         TaskId: MASTER_TASK_ID,
  53.         Status: models.JobStatus{
  54.             State:     models.JOB_STATE_TODO,
  55.             CreatedAt: time.Now(),
  56.         },
  57.         Configs: []models.Config{
  58.             {
  59.                 DstPath: service.CLUSTER_SERVER_CRT_PATH,
  60.                 Content: base64.StdEncoding.EncodeToString([]byte(certAndKey.ApiServerCert)),
  61.             },
  62.             {
  63.                 DstPath: service.CLUSTER_SERVER_KEY_PATH,
  64.                 Content: base64.StdEncoding.EncodeToString([]byte(certAndKey.ApiServerKey)),
  65.             },
  66.             {
  67.                 DstPath: service.CLUSTER_APISERVER_CLIENT_CRT_PATH,
  68.                 Content: base64.StdEncoding.EncodeToString([]byte(certAndKey.ApiServerKubeletCrt)),
  69.             },
  70.             {
  71.                 DstPath: service.CLUSTER_APISERVER_CLIENT_KEY_PATH,
  72.                 Content: base64.StdEncoding.EncodeToString([]byte(certAndKey.ApiServerKubeletKey)),
  73.             },
  74.             {
  75.                 DstPath: service.CLUSTER_SERVICE_ACCOUNT_PRV,
  76.                 Content: base64.StdEncoding.EncodeToString([]byte(certAndKey.ServiceAccountPrv)),
  77.             },
  78.             {
  79.                 DstPath: service.CLUSTER_SERVICE_ACCOUNT_PEM,
  80.                 Content: base64.StdEncoding.EncodeToString([]byte(certAndKey.ServiceAccountPem)),
  81.             },
  82.         },
  83.         Cmds: []models.Cmd{
  84.             {
  85.                 Name: "/usr/local/bin/tke-tool",
  86.                 Args: []string{
  87.                     "kubernetes",
  88.                     "master",
  89.                     "up",
  90.                     fmt.Sprintf("--hostname=%s", *curNode.LanIp),
  91.                     // apiserver
  92.                     fmt.Sprintf("--kube-apiserver-cluster-service-ip-range=%s", info.ServiceCIDR),
  93.                     fmt.Sprintf("--kube-apiserver-enable-api-aggregation=true"),
  94.                     fmt.Sprintf("--kube-apiserver-etcd-servers=%s", etcdEndpPoints),
  95.                     fmt.Sprintf("--kube-apiserver-cluster-ca=%s", service.CLUSTER_ETCD_CA_CRT_PATH),
  96.                     fmt.Sprintf("--kube-apiserver-etcd-ca=%s", service.CLUSTER_ETCD_CA_CRT_PATH),
  97.                     fmt.Sprintf("--kube-apiserver-etcd-cert=%s", service.CLUSTER_ETCD_CRT_PATH),
  98.                     fmt.Sprintf("--kube-apiserver-etcd-key=%s", service.CLUSTER_ETCD_KEY_PATH),
  99.                     fmt.Sprintf("--kube-apiserver-requestheader-client-ca=%s", service.CLUSTER_ETCD_CA_CRT_PATH),
  100.                     fmt.Sprintf("--kube-apiserver-proxy-client-cert=%s", service.CLUSTER_APISERVER_CLIENT_CRT_PATH),
  101.                     fmt.Sprintf("--kube-apiserver-proxy-client-key=%s", service.CLUSTER_APISERVER_CLIENT_KEY_PATH),
  102.                     fmt.Sprintf("--kube-apiserver-kubelet-ca=%s", service.CLUSTER_SERVICE_ACCOUNT_PRV),
  103.                     fmt.Sprintf("--kube-apiserver-kubelet-client-cert=%s", service.CLUSTER_APISERVER_CLIENT_CRT_PATH),
  104.                     fmt.Sprintf("--kube-apiserver-kubelet-client-key=%s", service.CLUSTER_APISERVER_CLIENT_KEY_PATH),
  105.                     fmt.Sprintf("--kube-apiserver-sa-key=%s", service.CLUSTER_SERVICE_ACCOUNT_PEM),
  106.                     fmt.Sprintf("--kube-apiserver-serve-tls-cert=%s", service.CLUSTER_SERVER_CRT_PATH),
  107.                     fmt.Sprintf("--kube-apiserver-serve-tls-key=%s", service.CLUSTER_SERVER_KEY_PATH),
  108.                     fmt.Sprintf("--kube-apiserver-secure-bind-address=%s", "0.0.0.0"),
  109.                     fmt.Sprintf("--kube-apiserver-secure-bind-port=%d", MASTER_SECURE_ENDPOINT_PORT),
  110.                     fmt.Sprintf("--kube-apiserver-insecure-bind-address=%s", *curNode.LanIp),
  111.                     fmt.Sprintf("--kube-apiserver-insecure-bind-port=%s", MASTER_INSECURE_ENDPOINT_PORT),
  112.                     // apiserver override
  113.                     fmt.Sprintf("--kube-apiserver-override-parameters=advertise-address=%s", masterLb),
  114.                     fmt.Sprintf("--kube-apiserver-override-parameters=cloud-provider=%s", "qcloud"),
  115.                     fmt.Sprintf("--kube-apiserver-override-parameters=basic-auth-file=%s", service.CLUSTER_BASIC_AUTH_PATH),
  116.                     fmt.Sprintf("--kube-apiserver-override-parameters=cloud-config=%s", service.CLUSTER_CLOUD_CONFIG_PATH),
  117.                     fmt.Sprintf("--kube-apiserver-override-parameters=token-auth-file=%s", service.CLUSTER_KNOWN_TOKEND_PATH),
  118.                     fmt.Sprintf("--kube-apiserver-override-parameters=etcd-prefix=%s", certAndKey.ClsID),
  119.                     fmt.Sprintf("--kube-apiserver-override-parameters=authorization-mode=%s", service.AUTHORIZATION_MODE_K8S_17x),
  120.                     fmt.Sprintf("--kube-apiserver-override-parameters=enable-admission-plugins=%s", service.ADMISSION_CONTROLE_K8S_17x),
  121.                     fmt.Sprintf("--kube-apiserver-override-parameters=authorization-policy-file=%s", service.DEFAULT_AUTHORIZATION_POLICY_PATH),
  122.                     fmt.Sprintf("--kube-apiserver-override-parameters=authorization-policy-file=%s", service.DEFAULT_AUTHORIZATION_POLICY_PATH),
  123.                     fmt.Sprintf("--kube-apiserver-override-parameters=external-hostname=%s.ccs.tencent-cloud.com", curNode.ClusterInstanceId),
  124.                     // controller manager
  125.                     fmt.Sprintf("--kube-controller-manager-apiserver=https:%s:%d", masterLb, MASTER_SECURE_ENDPOINT_PORT),
  126.                     fmt.Sprintf("--kube-controller-manager-apiserver-ca-cert=%s", service.CLUSTER_ETCD_CA_CRT_PATH),
  127.                     fmt.Sprintf("--kube-controller-manager-apiserver-client-cert=%s", service.CLUSTER_SERVER_CRT_PATH),
  128.                     fmt.Sprintf("--kube-controller-manager-apiserver-client-key=%s", service.CLUSTER_SERVER_KEY_PATH),
  129.                     fmt.Sprintf("--kube-controller-manager-cluster-sign-cert=%s", service.CLUSTER_SERVER_CRT_PATH),
  130.                     fmt.Sprintf("--kube-controller-manager-cluster-sign-key=%s", service.CLUSTER_SERVER_KEY_PATH),
  131.                     fmt.Sprintf("--kube-controller-manager-sa-private-key=%s", service.CLUSTER_SERVER_KEY_PATH),
  132.                     fmt.Sprintf("--kube-controller-manager-cluster-pod-ip-range=%s", info.PodCIDR),
  133.                     fmt.Sprintf("--kube-controller-manager-cluster-service-ip-range=%s", info.ServiceCIDR),
  134.                     fmt.Sprintf("--kube-controller-manager-node-cidr-mask-size=%d", info.NodeMaskSize),
  135.                     // cm override
  136.                     fmt.Sprintf("--kube-controller-manager-overrides-parameters=cluster-name=%s", curNode.ClusterInstanceId),
  137.                     fmt.Sprintf("--kube-controller-manager-overrides-parameters=cloud-provider=%s", "qcloud"),
  138.                     fmt.Sprintf("--kube-controller-manager-overrides-parameters=horizontal-pod-autoscaler-use-rest-clients=%s", "true"),
  139.                     // scheduler
  140.                     fmt.Sprintf("--kube-scheduler-apiserver=https://%s:%d", masterLb, MASTER_SECURE_ENDPOINT_PORT),
  141.                     fmt.Sprintf("--kube-scheduler-apiserver-ca-cert=%s", service.CLUSTER_ETCD_CA_CRT_PATH),
  142.                     fmt.Sprintf("--kube-scheduler-apiserver-client-cert=%s", service.CLUSTER_APISERVER_CLIENT_CRT_PATH),
  143.                     fmt.Sprintf("--kube-scheduler-apiserver-client-key=%s", service.CLUSTER_APISERVER_CLIENT_KEY_PATH),
  144.                     // kubelet
  145.                     fmt.Sprintf("--kubelet-apiserver=https://%s:%d", masterLb, MASTER_SECURE_ENDPOINT_PORT),
  146.                     fmt.Sprintf("--kubelet-apiserver-ca-cert=%s", service.CLUSTER_ETCD_CA_CRT_PATH),
  147.                     fmt.Sprintf("--kubelet-apiserver-client-cert=%s", service.CLUSTER_APISERVER_CLIENT_CRT_PATH),
  148.                     fmt.Sprintf("--kubelet-apiserver-client-key=%s", service.CLUSTER_APISERVER_CLIENT_KEY_PATH),
  149.                     fmt.Sprintf("--kubelet-secure-serve-cert=%s", service.CLUSTER_SERVER_CRT_PATH),
  150.                     fmt.Sprintf("--kubelet-secure-serve-key=%s", service.CLUSTER_SERVER_KEY_PATH),
  151.                     fmt.Sprintf("--kubelet-resource-url=http://%s", K8S_BINARY),
  152.                     fmt.Sprintf("--docker-resource-url=http://%s", DOCKER_BINARY),
  153.                 },
  154.             },
  155.         },
  156.     }
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement