Skip to content

Commit 2d721b2

Browse files
author
Otávio Fernandes
committed
Create namespace if not found.
1 parent b0a8abb commit 2d721b2

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

pkg/vault-handler/kubernetes.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88

99
log "github.com/sirupsen/logrus"
1010
corev1 "k8s.io/api/core/v1"
11+
"k8s.io/apimachinery/pkg/api/errors"
1112
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1213
"k8s.io/client-go/kubernetes"
1314
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp" // making sure gcp plugin is present
@@ -119,6 +120,25 @@ func (k *Kubernetes) localConfig() (*rest.Config, error) {
119120
return clientcmd.BuildConfigFromFlags(k.context, k.kubeConfig)
120121
}
121122

123+
// createNamespace is not found.
124+
func (k *Kubernetes) createNamespace() error {
125+
var err error
126+
127+
if _, err = k.clientset.CoreV1().Namespaces().Get(k.namespace, metav1.GetOptions{}); err != nil {
128+
if !errors.IsNotFound(err) {
129+
return err
130+
}
131+
132+
k.logger.Infof("Creating namespace '%s'", k.namespace)
133+
spec := &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: k.namespace}}
134+
if _, err = k.clientset.CoreV1().Namespaces().Create(spec); err != nil {
135+
return err
136+
}
137+
}
138+
139+
return nil
140+
}
141+
122142
// NewKubernetes instantiate object by checking if local or in-cluster configuration first.
123143
func NewKubernetes(kubeConfig, context, namespace string, inCluster bool) (*Kubernetes, error) {
124144
var cfg *rest.Config
@@ -145,6 +165,9 @@ func NewKubernetes(kubeConfig, context, namespace string, inCluster bool) (*Kube
145165
if k.clientset, err = kubernetes.NewForConfig(cfg); err != nil {
146166
return nil, err
147167
}
168+
if err = k.createNamespace(); err != nil {
169+
return nil, err
170+
}
148171

149172
return k, nil
150173
}

0 commit comments

Comments
 (0)