-
Notifications
You must be signed in to change notification settings - Fork 3
/
create.go
95 lines (75 loc) · 2.6 KB
/
create.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/*
Copyright © 2022 Christian Hernandez christian@chernand.io
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package cmd
import (
"os"
"runtime"
"github.com/christianh814/fauxpenshift/pkg/microshift"
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
)
// createCmd represents the create command
var createCmd = &cobra.Command{
Use: "create",
Short: "Creates a cluster",
Long: `Create a local Kubernetes cluster based on MicroShift.
Since the router binds to 80, 443, and 6443; you must run this as root.
Rootless won't work because of the aforementioned binding.
PRs are welcome!`,
Run: func(cmd *cobra.Command, args []string) {
// This program should be run as root as "rootless" containers probably won't work
if os.Getuid() != 0 {
log.Fatal("Currently unsupported to run rootless.")
}
// Set the tempdir based on the OS
var tempdir string
switch runtime.GOOS {
case "windows":
log.Fatal("Windows currently not supported")
case "darwin":
tempdir = "/tmp"
case "linux":
tempdir = "/tmp"
default:
tempdir = "/tmp"
}
// create a tempfile for the kubeconfig
///tempkc, err := ioutil.TempFile(tempdir, "fauxpenshift-")
tempkc, err := os.CreateTemp(tempdir, "fauxpenshift-")
if err != nil {
log.Fatal(err)
}
// defer removing the file until this finishes
defer os.Remove(tempkc.Name())
// For now, let's just use the default K8S config path. Later this can be an option
kcfg := tempkc.Name()
// Create the Microshift Cluster
log.Info("Creating Microshift instance")
err = microshift.StartMicroshift(kcfg, Runtime)
if err != nil {
log.Fatal(err)
}
// We should be good to go
log.Info("Finished installing Microshift!")
},
}
func init() {
rootCmd.AddCommand(createCmd)
// Here you will define your flags and configuration settings.
// Cobra supports Persistent Flags which will work for this command
// and all subcommands, e.g.:
// createCmd.PersistentFlags().String("foo", "", "A help for foo")
// Cobra supports local flags which will only run when this command
// is called directly, e.g.:
// createCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
}