40 lines
906 B
Go
40 lines
906 B
Go
package kubernetes
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
corev1 "k8s.io/api/core/v1"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/klog/v2"
|
|
)
|
|
|
|
// CreateNamespace namespace IfNotExist
|
|
func (i *InstallOptions) CreateNamespace() error {
|
|
namespaceClient := i.KubeClientSet.CoreV1().Namespaces()
|
|
namespaceList, err := namespaceClient.List(context.TODO(), metav1.ListOptions{})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
for _, nsList := range namespaceList.Items {
|
|
if i.Namespace == nsList.Name {
|
|
klog.Infof("Namespace %s already exists.", i.Namespace)
|
|
return nil
|
|
}
|
|
}
|
|
|
|
n := &corev1.Namespace{
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
Name: i.Namespace,
|
|
},
|
|
}
|
|
|
|
_, err = namespaceClient.Create(context.TODO(), n, metav1.CreateOptions{})
|
|
if err != nil {
|
|
return fmt.Errorf("Create namespace %s failed: %v", i.Namespace, err)
|
|
}
|
|
klog.Infof("Create Namespace '%s' successfully.", i.Namespace)
|
|
return nil
|
|
}
|