Files
kubevela/pkg/cmd/util/init.go
Herman Zhu a9f9bc055c feat(init): Add rudr init (#43)
* feat(init): Add `rudr init`

Support `rudr init` which will check/install oam-k8s-runtime into
cluster

Fixes #12

Signed-off-by: zhuhuijun <zhuhuijunzhj@gmail.com>

* feat(init): Add `rudr init`

Support `rudr init` which will check/install oam-k8s-runtime into cluster

Fixes #12

Signed-off-by: zhuhuijun <zhuhuijunzhj@gmail.com>

* feat(init): add version flag

Add version flag

Fixes #12

Signed-off-by: zhuhuijun <zhuhuijunzhj@gmail.com>

* feat(init): create native resource WorkloadDefinition

Create native resource WorkloadDefinition

Fixes: #12

Signed-off-by: zhuhuijun <zhuhuijunzhj@gmail.com>
2020-07-29 15:54:21 +08:00

67 lines
1.4 KiB
Go

package util
import (
"context"
"os"
"path/filepath"
corev1 "k8s.io/api/core/v1"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
"sigs.k8s.io/controller-runtime/pkg/client"
)
// GetKubeClient creates a Kubernetes config and client for a given kubeconfig context.
func GetKubeClient() error {
config, err := clientcmd.BuildConfigFromFlags("", GetKubeConfig())
if err != nil {
return err
}
// Creates the dynamic interface.
_, err = kubernetes.NewForConfig(config)
if err != nil {
return err
}
return nil
}
func HomeDir() string {
if h := os.Getenv("HOME"); h != "" {
return h
}
return os.Getenv("USERPROFILE")
}
func GetKubeConfig() string {
return filepath.Join(HomeDir(), ".kube", "config")
}
func IsNamespaceExist(c client.Client, namespace string) bool {
var ns corev1.Namespace
err := c.Get(context.Background(), types.NamespacedName{Name: namespace}, &ns)
if err != nil {
return false
}
return true
}
func NewNamespace(c client.Client, namespace string) error {
ns := &v1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: namespace}}
err := c.Create(context.Background(), ns)
if err != nil {
return err
}
return nil
}
func IsCoreCRDExist(c client.Client, cxt context.Context, object runtime.Object) error {
return c.List(cxt, object, &client.ListOptions{})
}