diff --git a/controlplane/api/v1beta1/rke2controlplane_types.go b/controlplane/api/v1beta1/rke2controlplane_types.go index 227ff230..0b61ed22 100644 --- a/controlplane/api/v1beta1/rke2controlplane_types.go +++ b/controlplane/api/v1beta1/rke2controlplane_types.go @@ -238,6 +238,10 @@ type RKE2ServerConfig struct { //+optional CloudProviderConfigMap *corev1.ObjectReference `json:"cloudProviderConfigMap,omitempty"` + // SupervisorMetrics enables the RKE2 supervisor metrics endpoint on port 9345. + //+optional + SupervisorMetrics bool `json:"supervisorMetrics,omitempty"` + // EmbeddedRegistry enables the embedded registry. //+optional EmbeddedRegistry bool `json:"embeddedRegistry,omitempty"` diff --git a/controlplane/api/v1beta1/zz_generated.conversion.go b/controlplane/api/v1beta1/zz_generated.conversion.go index cf793a25..9a695dda 100644 --- a/controlplane/api/v1beta1/zz_generated.conversion.go +++ b/controlplane/api/v1beta1/zz_generated.conversion.go @@ -859,6 +859,7 @@ func autoConvert_v1beta1_RKE2ServerConfig_To_v1beta2_RKE2ServerConfig(in *RKE2Se out.CloudControllerManager = (*apiv1beta2.ComponentConfig)(unsafe.Pointer(in.CloudControllerManager)) out.CloudProviderName = in.CloudProviderName out.CloudProviderConfigMap = (*corev1.ObjectReference)(unsafe.Pointer(in.CloudProviderConfigMap)) + out.SupervisorMetrics = in.SupervisorMetrics out.EmbeddedRegistry = in.EmbeddedRegistry out.ExternalDatastoreSecret = (*corev1.ObjectReference)(unsafe.Pointer(in.ExternalDatastoreSecret)) return nil @@ -893,6 +894,7 @@ func autoConvert_v1beta2_RKE2ServerConfig_To_v1beta1_RKE2ServerConfig(in *v1beta out.CloudControllerManager = (*apiv1beta1.ComponentConfig)(unsafe.Pointer(in.CloudControllerManager)) out.CloudProviderName = in.CloudProviderName out.CloudProviderConfigMap = (*corev1.ObjectReference)(unsafe.Pointer(in.CloudProviderConfigMap)) + out.SupervisorMetrics = in.SupervisorMetrics out.EmbeddedRegistry = in.EmbeddedRegistry out.ExternalDatastoreSecret = (*corev1.ObjectReference)(unsafe.Pointer(in.ExternalDatastoreSecret)) return nil diff --git a/controlplane/api/v1beta2/rke2controlplane_types.go b/controlplane/api/v1beta2/rke2controlplane_types.go index ea0d5bb9..4aceb0f6 100644 --- a/controlplane/api/v1beta2/rke2controlplane_types.go +++ b/controlplane/api/v1beta2/rke2controlplane_types.go @@ -244,6 +244,10 @@ type RKE2ServerConfig struct { //+optional CloudProviderConfigMap *corev1.ObjectReference `json:"cloudProviderConfigMap,omitempty"` + // SupervisorMetrics enables the RKE2 supervisor metrics endpoint on port 9345. + //+optional + SupervisorMetrics bool `json:"supervisorMetrics,omitempty"` + // EmbeddedRegistry enables the embedded registry. //+optional EmbeddedRegistry bool `json:"embeddedRegistry,omitempty"` diff --git a/controlplane/config/crd/bases/controlplane.cluster.x-k8s.io_rke2controlplanes.yaml b/controlplane/config/crd/bases/controlplane.cluster.x-k8s.io_rke2controlplanes.yaml index a099da97..0730ba0b 100644 --- a/controlplane/config/crd/bases/controlplane.cluster.x-k8s.io_rke2controlplanes.yaml +++ b/controlplane/config/crd/bases/controlplane.cluster.x-k8s.io_rke2controlplanes.yaml @@ -1395,6 +1395,10 @@ spec: description: 'ServiceNodePortRange is the port range to reserve for services with NodePort visibility (default: "30000-32767").' type: string + supervisorMetrics: + description: SupervisorMetrics enables the RKE2 supervisor metrics + endpoint on port 9345. + type: boolean tlsSan: description: TLSSan Add additional hostname or IP as a Subject Alternative Name in the TLS cert. @@ -2988,6 +2992,10 @@ spec: description: 'ServiceNodePortRange is the port range to reserve for services with NodePort visibility (default: "30000-32767").' type: string + supervisorMetrics: + description: SupervisorMetrics enables the RKE2 supervisor metrics + endpoint on port 9345. + type: boolean tlsSan: description: TLSSan Add additional hostname or IP as a Subject Alternative Name in the TLS cert. diff --git a/controlplane/config/crd/bases/controlplane.cluster.x-k8s.io_rke2controlplanetemplates.yaml b/controlplane/config/crd/bases/controlplane.cluster.x-k8s.io_rke2controlplanetemplates.yaml index 9643f82d..7a3ebffd 100644 --- a/controlplane/config/crd/bases/controlplane.cluster.x-k8s.io_rke2controlplanetemplates.yaml +++ b/controlplane/config/crd/bases/controlplane.cluster.x-k8s.io_rke2controlplanetemplates.yaml @@ -1445,6 +1445,10 @@ spec: reserve for services with NodePort visibility (default: "30000-32767").' type: string + supervisorMetrics: + description: SupervisorMetrics enables the RKE2 supervisor + metrics endpoint on port 9345. + type: boolean tlsSan: description: TLSSan Add additional hostname or IP as a Subject Alternative Name in the TLS cert. @@ -3092,6 +3096,10 @@ spec: reserve for services with NodePort visibility (default: "30000-32767").' type: string + supervisorMetrics: + description: SupervisorMetrics enables the RKE2 supervisor + metrics endpoint on port 9345. + type: boolean tlsSan: description: TLSSan Add additional hostname or IP as a Subject Alternative Name in the TLS cert. diff --git a/pkg/rke2/config.go b/pkg/rke2/config.go index ae176602..6b5831bf 100644 --- a/pkg/rke2/config.go +++ b/pkg/rke2/config.go @@ -141,6 +141,7 @@ type ServerConfig struct { ServiceNodePortRange string `yaml:"service-node-port-range,omitempty"` TLSSan []string `yaml:"tls-san,omitempty"` EmbeddedRegistry bool `yaml:"embedded-registry,omitempty"` + SupervisorMetrics bool `yaml:"supervisor-metrics,omitempty"` DatastoreEndpoint string `yaml:"datastore-endpoint,omitempty"` DatastoreCAFile string `yaml:"datastore-cafile,omitempty"` DatastoreCertFile string `yaml:"datastore-certfile,omitempty"` @@ -400,6 +401,7 @@ func newRKE2ServerConfig(opts ServerConfigOpts) (*ServerConfig, []bootstrapv1.Fi } rke2ServerConfig.EmbeddedRegistry = opts.ServerConfig.EmbeddedRegistry + rke2ServerConfig.SupervisorMetrics = opts.ServerConfig.SupervisorMetrics if opts.ServerConfig.ExternalDatastoreSecret != nil { externalDatastoreSecret := &corev1.Secret{} diff --git a/pkg/rke2/config_test.go b/pkg/rke2/config_test.go index b6ae7517..0d0e25ff 100644 --- a/pkg/rke2/config_test.go +++ b/pkg/rke2/config_test.go @@ -169,7 +169,8 @@ var _ = Describe("RKE2ServerConfig", func() { ExtraEnv: map[string]string{"testenv": "testenv"}, ExtraMounts: map[string]string{"testmount": "testmount"}, }, - EmbeddedRegistry: true, + SupervisorMetrics: true, + EmbeddedRegistry: true, ExternalDatastoreSecret: &corev1.ObjectReference{ Name: "test", Namespace: "test", @@ -233,6 +234,7 @@ var _ = Describe("RKE2ServerConfig", func() { Expect(rke2ServerConfig.CloudControllerManagerExtraMounts).To(Equal(componentMapToSlice(extraMount, serverConfig.CloudControllerManager.ExtraMounts))) Expect(rke2ServerConfig.CloudControllerManagerExtraEnv).To(Equal(componentMapToSlice(extraEnv, serverConfig.CloudControllerManager.ExtraEnv))) Expect(rke2ServerConfig.Token).To(Equal(opts.Token)) + Expect(rke2ServerConfig.SupervisorMetrics).To(BeTrue()) Expect(rke2ServerConfig.EmbeddedRegistry).To(BeTrue()) Expect(rke2ServerConfig.DatastoreEndpoint).To(Equal("test_endpoint")) Expect(rke2ServerConfig.DatastoreCAFile).To(Equal("/etc/rancher/rke2/datastore-ca.crt"))