Skip to content

Commit c785154

Browse files
committed
fix k8s client init in-cluster and some improvements
1 parent 20b6844 commit c785154

File tree

3 files changed

+44
-32
lines changed

3 files changed

+44
-32
lines changed

cmd/k8s.go

Lines changed: 30 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,16 @@ import (
1313
"path/filepath"
1414
)
1515

16-
func getConfig() *rest.Config {
16+
func getConfig() (*rest.Config, error) {
1717
// Try in-cluster configuration
1818
config, err := rest.InClusterConfig()
19-
if err == nil {
20-
return config
21-
}
22-
23-
// Fallback to kubeconfig
24-
kubeconfig := filepath.Join(os.Getenv("HOME"), ".kube", "config")
25-
config, err = clientcmd.BuildConfigFromFlags("", kubeconfig)
2619
if err != nil {
27-
log.Fatal(err)
20+
// Fallback to kubeconfig
21+
kubeconfig := filepath.Join(os.Getenv("HOME"), ".kube", "config")
22+
config, err = clientcmd.BuildConfigFromFlags("", kubeconfig)
23+
if err != nil {
24+
return nil, err
25+
}
2826
}
2927

3028
schema := scheme.Scheme
@@ -39,34 +37,44 @@ func getConfig() *rest.Config {
3937
config.NegotiatedSerializer = serializer.NewCodecFactory(schema)
4038
//config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: serializer.NewCodecFactory(scheme)}
4139

42-
return config
40+
return config, nil
4341
}
4442

45-
func getClient() *kubernetes.Clientset {
46-
config := getConfig()
43+
func getClient() (*kubernetes.Clientset, error) {
44+
config, err := getConfig()
45+
if err != nil {
46+
return nil, err
47+
}
48+
4749
client, err := kubernetes.NewForConfig(config)
4850
if err != nil {
49-
log.Fatal(err)
51+
return nil, err
5052
}
5153

52-
return client
54+
return client, nil
5355
}
5456

55-
func getRestClient() *rest.RESTClient {
56-
config := getConfig()
57+
func getRestClient() (*rest.RESTClient, error) {
58+
config, err := getConfig()
59+
if err != nil {
60+
return nil, err
61+
}
5762
client, err := rest.RESTClientFor(config)
5863
if err != nil {
59-
log.Fatal(err)
64+
return nil, err
6065
}
6166

62-
return client
67+
return client, nil
6368
}
6469

65-
func getDynamicClient() *dynamic.DynamicClient {
66-
config := getConfig()
70+
func getDynamicClient() (*dynamic.DynamicClient, error) {
71+
config, err := getConfig()
72+
if err != nil {
73+
return nil, err
74+
}
6775
client, err := dynamic.NewForConfig(config)
6876
if err != nil {
69-
log.Fatal(err)
77+
return nil, err
7078
}
71-
return client
79+
return client, nil
7280
}

cmd/main.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,22 @@ import (
1111
)
1212

1313
func setupServer(config Config, logger *zap.Logger) {
14-
reconciler := NewReconciler(logger)
14+
k8sClient, err := getRestClient()
15+
if err != nil {
16+
logger.Fatal("Failed to get Kubernetes client", zap.Error(err))
17+
}
18+
reconciler := NewReconciler(k8sClient, logger)
1519
handlers := NewHandlers(config, reconciler, logger)
1620
http.Handle("/webhook", WithLogging(http.HandlerFunc(handlers.Webhook), logger))
1721
http.Handle("/subscribe", WithLogging(http.HandlerFunc(handlers.Subscribe), logger))
1822
}
1923

2024
func setupClient(config Config, shutdownChan chan struct{}, logger *zap.Logger) {
21-
reconciler := NewReconciler(logger)
25+
k8sClient, err := getRestClient()
26+
if err != nil {
27+
logger.Fatal("Failed to get Kubernetes client", zap.Error(err))
28+
}
29+
reconciler := NewReconciler(k8sClient, logger)
2230

2331
u, err := url.Parse(config.ServerEndpoint)
2432
if err != nil {

cmd/reconciler.go

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,16 @@ type Reconciler struct {
1717
logger *zap.Logger
1818
}
1919

20-
func NewReconciler(logger *zap.Logger) *Reconciler {
20+
func NewReconciler(client *rest.RESTClient, logger *zap.Logger) *Reconciler {
2121
return &Reconciler{
22-
restClient: getRestClient(),
22+
restClient: client,
2323
logger: logger,
2424
}
2525
}
2626

2727
func (r *Reconciler) ReconcileSources(ociUrl string, tag string) {
28-
restClient := getRestClient()
29-
3028
var res sourceController.OCIRepositoryList
31-
err := restClient.Get().Resource("ocirepositories").Namespace("").Do(context.Background()).Into(&res)
29+
err := r.restClient.Get().Resource("ocirepositories").Namespace("").Do(context.Background()).Into(&res)
3230
if err != nil {
3331
r.logger.Error("Failed to get OCIRepositories", zap.Error(err))
3432
}
@@ -46,8 +44,6 @@ func (r *Reconciler) ReconcileSources(ociUrl string, tag string) {
4644
}
4745

4846
func (r *Reconciler) annotateRepository(repository sourceController.OCIRepository) error {
49-
restClient := getRestClient()
50-
5147
patch := struct {
5248
Metadata struct {
5349
Annotations map[string]string `json:"annotations"`
@@ -61,7 +57,7 @@ func (r *Reconciler) annotateRepository(repository sourceController.OCIRepositor
6157
patchJson, _ := json.Marshal(patch)
6258

6359
var res sourceController.OCIRepository
64-
return restClient.
60+
return r.restClient.
6561
Patch(types.MergePatchType).
6662
Resource("ocirepositories").
6763
Namespace(repository.Namespace).

0 commit comments

Comments
 (0)