Skip to content

Commit bc3f906

Browse files
authored
Fix status update, updated k3s default version, updated CRDs (#218)
* fix status update * fix schema and default image * removed retry in controller * removed fmt
1 parent 19efdc8 commit bc3f906

File tree

7 files changed

+34
-20
lines changed

7 files changed

+34
-20
lines changed

charts/k3k/crds/k3k.io_clusters.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ spec:
164164
type: string
165165
type:
166166
default: ephemeral
167-
description: Type can be ephermal, static, dynamic
167+
description: Type can be ephemeral, static, dynamic
168168
type: string
169169
required:
170170
- type
@@ -238,7 +238,7 @@ spec:
238238
type: string
239239
type:
240240
default: ephemeral
241-
description: Type can be ephermal, static, dynamic
241+
description: Type can be ephemeral, static, dynamic
242242
type: string
243243
required:
244244
- type

cli/cmds/cluster/create.go

-1
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ var (
107107
Name: "version",
108108
Usage: "k3s version",
109109
Destination: &version,
110-
Value: "v1.26.1-k3s1",
111110
},
112111
&cli.StringFlag{
113112
Name: "mode",

main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ var (
5050
Name: "shared-agent-image",
5151
EnvVars: []string{"SHARED_AGENT_IMAGE"},
5252
Usage: "K3K Virtual Kubelet image",
53-
Value: "rancher/k3k:k3k-kubelet-dev",
53+
Value: "rancher/k3k:latest",
5454
Destination: &sharedAgentImage,
5555
},
5656
&cli.StringFlag{

pkg/controller/cluster/cluster.go

+21-3
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ func Add(ctx context.Context, mgr manager.Manager, sharedAgentImage, sharedAgent
5858
return err
5959
}
6060

61+
if sharedAgentImage == "" {
62+
return errors.New("missing shared agent image")
63+
}
64+
6165
// initialize a new Reconciler
6266
reconciler := ClusterReconciler{
6367
DiscoveryClient: discoveryClient,
@@ -109,7 +113,19 @@ func (c *ClusterReconciler) Reconcile(ctx context.Context, req reconcile.Request
109113
}
110114
}
111115

112-
return reconcile.Result{}, reconcilerErr
116+
// if there was an error during the reconciliation, return
117+
if reconcilerErr != nil {
118+
return reconcile.Result{}, reconcilerErr
119+
}
120+
121+
// update Cluster if needed
122+
if !reflect.DeepEqual(orig.Spec, cluster.Spec) {
123+
if err := c.Client.Update(ctx, &cluster); err != nil {
124+
return reconcile.Result{}, err
125+
}
126+
}
127+
128+
return reconcile.Result{}, nil
113129
}
114130

115131
func (c *ClusterReconciler) reconcileCluster(ctx context.Context, cluster *v1alpha1.Cluster) error {
@@ -118,7 +134,7 @@ func (c *ClusterReconciler) reconcileCluster(ctx context.Context, cluster *v1alp
118134
// if the Version is not specified we will try to use the same Kubernetes version of the host.
119135
// This version is stored in the Status object, and it will not be updated if already set.
120136
if cluster.Spec.Version == "" && cluster.Status.HostVersion == "" {
121-
log.V(1).Info("cluster version not set")
137+
log.Info("cluster version not set")
122138

123139
hostVersion, err := c.DiscoveryClient.ServerVersion()
124140
if err != nil {
@@ -130,6 +146,7 @@ func (c *ClusterReconciler) reconcileCluster(ctx context.Context, cluster *v1alp
130146
cluster.Status.HostVersion = k8sVersion + "-k3s1"
131147
}
132148

149+
// TODO: update status?
133150
if err := c.validate(cluster); err != nil {
134151
log.Error(err, "invalid change")
135152
return nil
@@ -161,6 +178,7 @@ func (c *ClusterReconciler) reconcileCluster(ctx context.Context, cluster *v1alp
161178
}
162179

163180
log.Info("creating cluster service")
181+
164182
serviceIP, err := c.createClusterService(ctx, cluster, s)
165183
if err != nil {
166184
return err
@@ -209,7 +227,7 @@ func (c *ClusterReconciler) reconcileCluster(ctx context.Context, cluster *v1alp
209227
return err
210228
}
211229

212-
return c.Client.Update(ctx, cluster)
230+
return nil
213231
}
214232

215233
func (c *ClusterReconciler) createClusterConfigs(ctx context.Context, cluster *v1alpha1.Cluster, server *server.Server, serviceIP string) error {

pkg/controller/cluster/cluster_suite_test.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
appsv1 "k8s.io/api/apps/v1"
1414
corev1 "k8s.io/api/core/v1"
1515
networkingv1 "k8s.io/api/networking/v1"
16+
rbacv1 "k8s.io/api/rbac/v1"
1617
"k8s.io/apimachinery/pkg/runtime"
1718
"k8s.io/client-go/kubernetes"
1819
ctrl "sigs.k8s.io/controller-runtime"
@@ -59,7 +60,7 @@ var _ = BeforeSuite(func() {
5960
Expect(err).NotTo(HaveOccurred())
6061

6162
ctx, cancel = context.WithCancel(context.Background())
62-
err = cluster.Add(ctx, mgr, "", "")
63+
err = cluster.Add(ctx, mgr, "rancher/k3k-kubelet:latest", "")
6364
Expect(err).NotTo(HaveOccurred())
6465

6566
go func() {
@@ -82,6 +83,8 @@ func buildScheme() *runtime.Scheme {
8283

8384
err := corev1.AddToScheme(scheme)
8485
Expect(err).NotTo(HaveOccurred())
86+
err = rbacv1.AddToScheme(scheme)
87+
Expect(err).NotTo(HaveOccurred())
8588
err = appsv1.AddToScheme(scheme)
8689
Expect(err).NotTo(HaveOccurred())
8790
err = networkingv1.AddToScheme(scheme)

pkg/controller/cluster/server/bootstrap/bootstrap.go

+5-11
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"encoding/base64"
77
"encoding/json"
88
"errors"
9+
"fmt"
910
"net/http"
1011
"time"
1112

@@ -14,7 +15,6 @@ import (
1415
v1 "k8s.io/api/core/v1"
1516
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1617
"k8s.io/apimachinery/pkg/types"
17-
"k8s.io/client-go/util/retry"
1818
"sigs.k8s.io/controller-runtime/pkg/client"
1919
)
2020

@@ -36,19 +36,13 @@ type content struct {
3636
// 1- use the server token to get the bootstrap data from k3s
3737
// 2- save the bootstrap data as a secret
3838
func Generate(ctx context.Context, cluster *v1alpha1.Cluster, ip, token string) (*v1.Secret, error) {
39-
var bootstrap *ControlRuntimeBootstrap
40-
if err := retry.OnError(controller.Backoff, func(err error) bool {
41-
return true
42-
}, func() error {
43-
var err error
44-
bootstrap, err = requestBootstrap(token, ip)
45-
return err
46-
}); err != nil {
47-
return nil, err
39+
bootstrap, err := requestBootstrap(token, ip)
40+
if err != nil {
41+
return nil, fmt.Errorf("failed to request bootstrap secret: %w", err)
4842
}
4943

5044
if err := decodeBootstrap(bootstrap); err != nil {
51-
return nil, err
45+
return nil, fmt.Errorf("failed to decode bootstrap secret: %w", err)
5246
}
5347

5448
bootstrapData, err := json.Marshal(bootstrap)

tests/tests_suite_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ var _ = BeforeSuite(func() {
4343
var err error
4444
ctx := context.Background()
4545

46-
k3sContainer, err = k3s.Run(ctx, "rancher/k3s:v1.27.1-k3s1")
46+
k3sContainer, err = k3s.Run(ctx, "rancher/k3s:v1.32.1-k3s1")
4747
Expect(err).To(Not(HaveOccurred()))
4848

4949
kubeconfig, err := k3sContainer.GetKubeConfig(context.Background())

0 commit comments

Comments
 (0)