Last active
April 14, 2021 21:50
-
-
Save developer-guy/7c40f3af018ed323b40acd8bc38921ad to your computer and use it in GitHub Desktop.
Provision a Local Kubernetes Cluster Using KinD with Go
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"os" | |
"os/signal" | |
"syscall" | |
"github.com/sirupsen/logrus" | |
"sigs.k8s.io/kind/pkg/cluster" | |
"sigs.k8s.io/kind/pkg/log" | |
) | |
type FurkanLogger struct { | |
logger *logrus.Logger | |
} | |
func (fl *FurkanLogger) V(level log.Level) log.InfoLogger { | |
//fl.logger.SetLevel(logrus.Level(level)) | |
return fl | |
} | |
func (fl *FurkanLogger) Enabled() bool { | |
return true | |
} | |
func (fl *FurkanLogger) Info(message string) { | |
fl.logger.Info(message) | |
} | |
func (fl *FurkanLogger) Infof(format string, args ...interface{}) { | |
fl.logger.Infof(format, args) | |
} | |
func (fl *FurkanLogger) Warn(message string) { | |
fl.logger.Warn(message) | |
} | |
// Warnf should be used to write Printf style user facing warnings | |
func (fl *FurkanLogger) Warnf(format string, args ...interface{}) { | |
fl.logger.Warnf(format, args) | |
} | |
// Error may be used to write an error message when it occurs | |
// Prefer returning an error instead in most cases | |
func (fl *FurkanLogger) Error(message string) { | |
fl.logger.Error(message) | |
} | |
// Errorf may be used to write a Printf style error message when it occurs | |
// Prefer returning an error instead in most cases | |
func (fl *FurkanLogger) Errorf(format string, args ...interface{}) { | |
fl.logger.Errorf(format, args) | |
} | |
var _ log.Logger = new(FurkanLogger) | |
func main() { | |
logger := logrus.New() | |
// Log as JSON instead of the default ASCII formatter. | |
logrus.SetFormatter(&logrus.JSONFormatter{}) | |
// Output to stdout instead of the default stderr | |
// Can be any io.Writer, see below for File example | |
logrus.SetOutput(os.Stdout) | |
// Only log the warning severity or above. | |
logrus.SetLevel(logrus.TraceLevel) | |
fl := FurkanLogger{logger: logger} | |
signChn := make(chan os.Signal) | |
signal.Notify(signChn, syscall.SIGINT, syscall.SIGTERM) | |
provider := cluster.NewProvider(cluster.ProviderWithDocker(), cluster.ProviderWithLogger(&fl)) | |
err := provider.Create("my-test-cluster", cluster.CreateWithConfigFile("./config.yaml"), cluster.CreateWithKubeconfigPath("./kubeconfig")) | |
defer provider.Delete("my-test-cluster", "./config.yaml") | |
if err != nil { | |
fl.Errorf("could not create cluster, error: %s", err.Error()) | |
os.Exit(1) | |
} | |
<-signChn | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment