...
1 package konfigkonnector
2
3 import (
4 "context"
5 _ "embed"
6 "fmt"
7
8 corev1 "k8s.io/api/core/v1"
9 "k8s.io/apimachinery/pkg/api/errors"
10 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
11 "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
12 "k8s.io/apimachinery/pkg/runtime"
13 utilruntime "k8s.io/apimachinery/pkg/util/runtime"
14 clientgoscheme "k8s.io/client-go/kubernetes/scheme"
15 "sigs.k8s.io/controller-runtime/pkg/client"
16
17 kccAPI "edge-infra.dev/pkg/k8s/konfigkonnector/apis/configconnector/v1beta1"
18 configconnector "edge-infra.dev/third_party/k8s/configconnector"
19 )
20
21 const (
22 ResourceName = "k8s-cfg-connector"
23 )
24
25 var (
26 namespace = "cnrm-system"
27 )
28
29
30
31
32 func LoadManifests() ([]*unstructured.Unstructured, error) {
33 return configconnector.LoadManifests()
34 }
35
36
37
38
39
40 func Install(ctx context.Context, c client.Client, manifests []*unstructured.Unstructured) error {
41
42 for _, manifest := range manifests {
43 if manifest.GetKind() == "Namespace" {
44 if err := c.Create(ctx, manifest); err != nil && !errors.IsAlreadyExists(err) {
45 return err
46 }
47 }
48 }
49
50 for _, manifest := range manifests {
51 if manifest.GetKind() != "Namespace" {
52 if err := c.Create(ctx, manifest); err != nil && !errors.IsAlreadyExists(err) {
53 return err
54 }
55 }
56 }
57
58 return nil
59 }
60
61
62
63
64 func CreateScheme() *runtime.Scheme {
65 scheme := runtime.NewScheme()
66
67 utilruntime.Must(clientgoscheme.AddToScheme(scheme))
68 utilruntime.Must(kccAPI.AddToScheme(scheme))
69
70 return scheme
71 }
72
73
74
75 func SetupCNRMSystem(ctx context.Context, c client.Client, secretName string, key []byte) error {
76 err := c.Create(ctx, &corev1.Namespace{
77 ObjectMeta: metav1.ObjectMeta{Name: namespace},
78 })
79 if err != nil && !errors.IsAlreadyExists(err) {
80 return fmt.Errorf("konfigkonnector.SetupCNRMSystem: failed to create namespace: %w", err)
81 }
82
83 err = c.Create(ctx, &corev1.Secret{
84 ObjectMeta: metav1.ObjectMeta{Name: secretName, Namespace: namespace},
85 Data: map[string][]byte{"key.json": key},
86 })
87 if err != nil && !errors.IsAlreadyExists(err) {
88 return fmt.Errorf("konfigkonnector.SetupCNRMSystem: failed to create secret: %w", err)
89 }
90
91 return nil
92 }
93
View as plain text