Skip to content

Commit

Permalink
Add labels to Cluster when deploying clusterTemplate
Browse files Browse the repository at this point in the history
  • Loading branch information
wahabmk committed Dec 18, 2024
1 parent 60a6edc commit f080795
Show file tree
Hide file tree
Showing 16 changed files with 82 additions and 23 deletions.
27 changes: 27 additions & 0 deletions api/v1alpha1/managedcluster_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
package v1alpha1

import (
"encoding/json"
"fmt"

apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apimeta "k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
Expand Down Expand Up @@ -124,9 +127,33 @@ func (in *ManagedCluster) HelmValues() (values map[string]any, err error) {
if in.Spec.Config != nil {
err = yaml.Unmarshal(in.Spec.Config.Raw, &values)
}

return values, err
}

func (in *ManagedCluster) SetHelmValues(values map[string]any) error {
b, err := json.Marshal(values)
if err != nil {
return fmt.Errorf("error marshalling values: %w", err)
}

in.Spec.Config = &apiextensionsv1.JSON{Raw: b}
return nil
}

func (in *ManagedCluster) AddHelmValues(fn func(map[string]any) error) error {
values, err := in.HelmValues()
if err != nil {
return err
}

if err := fn(values); err != nil {
return err
}

return in.SetHelmValues(values)
}

func (in *ManagedCluster) GetConditions() *[]metav1.Condition {
return &in.Status.Conditions
}
Expand Down
34 changes: 11 additions & 23 deletions internal/controller/managedcluster_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ package controller

import (
"context"
"encoding/json"
"errors"
"fmt"
"slices"
Expand All @@ -31,7 +30,6 @@ import (
"helm.sh/helm/v3/pkg/action"
"helm.sh/helm/v3/pkg/chart"
corev1 "k8s.io/api/core/v1"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
apimeta "k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
Expand Down Expand Up @@ -297,13 +295,19 @@ func (r *ManagedClusterReconciler) updateCluster(ctx context.Context, mc *hmc.Ma
return ctrl.Result{}, nil
}

helmValues, err := setIdentityHelmValues(mc.Spec.Config, cred.Spec.IdentityRef)
if err != nil {
return ctrl.Result{}, fmt.Errorf("error setting identity values: %w", err)
}
mc.AddHelmValues(func(values map[string]any) error {

Check failure on line 298 in internal/controller/managedcluster_controller.go

View workflow job for this annotation

GitHub Actions / Build and Unit Test

Error return value of `mc.AddHelmValues` is not checked (errcheck)
values["clusterIdentity"] = cred.Spec.IdentityRef

if _, ok := values["clusterLabels"]; !ok {
// Use the ManagedCluster's own labels if not defined.
values["clusterLabels"] = mc.GetObjectMeta().GetLabels()
}

return nil
})

hrReconcileOpts := helm.ReconcileHelmReleaseOpts{
Values: helmValues,
Values: mc.Spec.Config,
OwnerReference: &metav1.OwnerReference{
APIVersion: hmc.GroupVersion.String(),
Kind: hmc.ManagedClusterKind,
Expand Down Expand Up @@ -779,22 +783,6 @@ func (r *ManagedClusterReconciler) reconcileCredentialPropagation(ctx context.Co
return nil
}

func setIdentityHelmValues(values *apiextensionsv1.JSON, idRef *corev1.ObjectReference) (*apiextensionsv1.JSON, error) {
var valuesJSON map[string]any
err := json.Unmarshal(values.Raw, &valuesJSON)
if err != nil {
return nil, fmt.Errorf("error unmarshalling values: %w", err)
}

valuesJSON["clusterIdentity"] = idRef
valuesRaw, err := json.Marshal(valuesJSON)
if err != nil {
return nil, fmt.Errorf("error marshalling values: %w", err)
}

return &apiextensionsv1.JSON{Raw: valuesRaw}, nil
}

func (r *ManagedClusterReconciler) setAvailableUpgrades(ctx context.Context, managedCluster *hmc.ManagedCluster, template *hmc.ClusterTemplate) error {
if template == nil {
return nil
Expand Down
4 changes: 4 additions & 0 deletions templates/cluster/aws-eks/templates/cluster.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
name: {{ include "cluster.name" . }}
labels:
{{- with .Values.clusterLabels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- with .Values.clusterNetwork }}
clusterNetwork:
Expand Down
2 changes: 2 additions & 0 deletions templates/cluster/aws-eks/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ clusterNetwork:
cidrBlocks:
- "10.96.0.0/12"

clusterLabels:

# EKS cluster parameters
region: ""
sshKeyName: ""
Expand Down
4 changes: 4 additions & 0 deletions templates/cluster/aws-hosted-cp/templates/cluster.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
name: {{ include "cluster.name" . }}
labels:
{{- with .Values.clusterLabels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- with .Values.clusterNetwork }}
clusterNetwork:
Expand Down
2 changes: 2 additions & 0 deletions templates/cluster/aws-hosted-cp/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ clusterNetwork:
cidrBlocks:
- "10.96.0.0/12"

clusterLabels:

# AWS cluster parameters
vpcID: ""
region: ""
Expand Down
4 changes: 4 additions & 0 deletions templates/cluster/aws-standalone-cp/templates/cluster.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
name: {{ include "cluster.name" . }}
labels:
{{- with .Values.clusterLabels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- with .Values.clusterNetwork }}
clusterNetwork:
Expand Down
4 changes: 4 additions & 0 deletions templates/cluster/aws-standalone-cp/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ clusterNetwork:
cidrBlocks:
- "10.96.0.0/12"

clusterLabels:
# env: dev3
# region: region1

# AWS cluster parameters
region: ""
sshKeyName: ""
Expand Down
4 changes: 4 additions & 0 deletions templates/cluster/azure-hosted-cp/templates/cluster.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
name: {{ include "cluster.name" . }}
labels:
{{- with .Values.clusterLabels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- with .Values.clusterNetwork }}
clusterNetwork:
Expand Down
2 changes: 2 additions & 0 deletions templates/cluster/azure-hosted-cp/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ clusterNetwork:
cidrBlocks:
- "10.96.0.0/12"

clusterLabels:

# Azure cluster parameters
location: ""
subscriptionID: ""
Expand Down
4 changes: 4 additions & 0 deletions templates/cluster/azure-standalone-cp/templates/cluster.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
name: {{ include "cluster.name" . }}
labels:
{{- with .Values.clusterLabels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- with .Values.clusterNetwork }}
clusterNetwork:
Expand Down
2 changes: 2 additions & 0 deletions templates/cluster/azure-standalone-cp/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ clusterNetwork:
cidrBlocks:
- "10.96.0.0/12"

clusterLabels:

# Azure cluster parameters
location: ""
subscriptionID: ""
Expand Down
4 changes: 4 additions & 0 deletions templates/cluster/vsphere-hosted-cp/templates/cluster.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
name: {{ include "cluster.name" . }}
labels:
{{- with .Values.clusterLabels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- with .Values.clusterNetwork }}
clusterNetwork:
Expand Down
2 changes: 2 additions & 0 deletions templates/cluster/vsphere-hosted-cp/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ clusterNetwork:
cidrBlocks:
- "10.96.0.0/12"

clusterLabels:

# vSphere cluster parameters
clusterIdentity:
name: ""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
name: {{ include "cluster.name" . }}
labels:
{{- with .Values.clusterLabels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- with .Values.clusterNetwork }}
clusterNetwork:
Expand Down
2 changes: 2 additions & 0 deletions templates/cluster/vsphere-standalone-cp/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ clusterNetwork:
cidrBlocks:
- "10.96.0.0/12"

clusterLabels:

# vSphere cluster parameters
clusterIdentity:
name: ""
Expand Down

0 comments on commit f080795

Please sign in to comment.