mirror of
https://github.com/rancher/k3k.git
synced 2026-08-23 22:36:17 +00:00
Cluster type validations (#89)
* Cluster type validations Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com> * Cluster type validations Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com> --------- Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com>
This commit is contained in:
@@ -21,16 +21,34 @@ spec:
|
||||
type: string
|
||||
servers:
|
||||
type: integer
|
||||
x-kubernetes-validations:
|
||||
- message: cluster must have at least one server
|
||||
rule: self >= 1
|
||||
agents:
|
||||
type: integer
|
||||
x-kubernetes-validations:
|
||||
- message: invalid value for agents
|
||||
rule: self >= 0
|
||||
token:
|
||||
type: string
|
||||
x-kubernetes-validations:
|
||||
- message: token is immutable
|
||||
rule: self == oldSelf
|
||||
clusterCIDR:
|
||||
type: string
|
||||
x-kubernetes-validations:
|
||||
- message: clusterCIDR is immutable
|
||||
rule: self == oldSelf
|
||||
serviceCIDR:
|
||||
type: string
|
||||
x-kubernetes-validations:
|
||||
- message: serviceCIDR is immutable
|
||||
rule: self == oldSelf
|
||||
clusterDNS:
|
||||
type: string
|
||||
x-kubernetes-validations:
|
||||
- message: clusterDNS is immutable
|
||||
rule: self == oldSelf
|
||||
serverArgs:
|
||||
type: array
|
||||
items:
|
||||
|
||||
@@ -236,7 +236,6 @@ func newCluster(name, token string, servers, agents int32, clusterCIDR, serviceC
|
||||
APIVersion: "k3k.io/v1alpha1",
|
||||
},
|
||||
Spec: v1alpha1.ClusterSpec{
|
||||
Name: name,
|
||||
Token: token,
|
||||
Servers: &servers,
|
||||
Agents: &agents,
|
||||
|
||||
@@ -16,7 +16,6 @@ type Cluster struct {
|
||||
}
|
||||
|
||||
type ClusterSpec struct {
|
||||
Name string `json:"name"`
|
||||
Version string `json:"version"`
|
||||
Servers *int32 `json:"servers"`
|
||||
Agents *int32 `json:"agents"`
|
||||
|
||||
@@ -181,8 +181,8 @@ func (c *ClusterReconciler) Reconcile(ctx context.Context, req reconcile.Request
|
||||
}
|
||||
|
||||
func (c *ClusterReconciler) createCluster(ctx context.Context, cluster *v1alpha1.Cluster) error {
|
||||
if cluster.Name == ClusterInvalidName {
|
||||
klog.Errorf("Invalid cluster name %s, no action will be taken", cluster.Name)
|
||||
if err := c.validate(cluster); err != nil {
|
||||
klog.Errorf("invalid change: %v", err)
|
||||
return nil
|
||||
}
|
||||
s := server.New(cluster, c.Client)
|
||||
@@ -574,3 +574,19 @@ func (c *ClusterReconciler) getETCDTLS(cluster *v1alpha1.Cluster) (*tls.Config,
|
||||
Certificates: []tls.Certificate{clientCert},
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *ClusterReconciler) validate(cluster *v1alpha1.Cluster) error {
|
||||
if cluster.Name == ClusterInvalidName {
|
||||
return errors.New("invalid cluster name " + cluster.Name + " no action will be taken")
|
||||
}
|
||||
if cluster.Spec.ClusterCIDR != cluster.Status.ClusterCIDR {
|
||||
return errors.New("immutable field: ClusterCIDR cant be changed once set")
|
||||
}
|
||||
if cluster.Spec.ServiceCIDR != cluster.Status.ServiceCIDR {
|
||||
return errors.New("immutable field: ServiceCIDR cant be changed once set")
|
||||
}
|
||||
if cluster.Spec.ClusterDNS != cluster.Status.ClusterDNS {
|
||||
return errors.New("immutable field: ClusterDNS cant be changed once set")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user