mirror of https://github.com/portainer/portainer
fix(kubernetes): Prevent rerunning initial cluster detection [EE-5170] (#8666)
parent
6ee5cc6a56
commit
f17a608dc7
|
@ -64,6 +64,7 @@
|
||||||
"UseServerMetrics": false
|
"UseServerMetrics": false
|
||||||
},
|
},
|
||||||
"Flags": {
|
"Flags": {
|
||||||
|
"IsServerIngressClassDetected": false,
|
||||||
"IsServerMetricsDetected": false,
|
"IsServerMetricsDetected": false,
|
||||||
"IsServerStorageDetected": false
|
"IsServerStorageDetected": false
|
||||||
},
|
},
|
||||||
|
|
|
@ -76,6 +76,16 @@ func EndpointSet(endpointIDs []portainer.EndpointID) map[portainer.EndpointID]bo
|
||||||
}
|
}
|
||||||
|
|
||||||
func InitialIngressClassDetection(endpoint *portainer.Endpoint, endpointService dataservices.EndpointService, factory *cli.ClientFactory) {
|
func InitialIngressClassDetection(endpoint *portainer.Endpoint, endpointService dataservices.EndpointService, factory *cli.ClientFactory) {
|
||||||
|
if endpoint.Kubernetes.Flags.IsServerIngressClassDetected {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer func() {
|
||||||
|
endpoint.Kubernetes.Flags.IsServerIngressClassDetected = true
|
||||||
|
endpointService.UpdateEndpoint(
|
||||||
|
portainer.EndpointID(endpoint.ID),
|
||||||
|
endpoint,
|
||||||
|
)
|
||||||
|
}()
|
||||||
cli, err := factory.GetKubeClient(endpoint)
|
cli, err := factory.GetKubeClient(endpoint)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Debug().Err(err).Msg("unable to create kubernetes client for ingress class detection")
|
log.Debug().Err(err).Msg("unable to create kubernetes client for ingress class detection")
|
||||||
|
@ -107,6 +117,16 @@ func InitialIngressClassDetection(endpoint *portainer.Endpoint, endpointService
|
||||||
}
|
}
|
||||||
|
|
||||||
func InitialMetricsDetection(endpoint *portainer.Endpoint, endpointService dataservices.EndpointService, factory *cli.ClientFactory) {
|
func InitialMetricsDetection(endpoint *portainer.Endpoint, endpointService dataservices.EndpointService, factory *cli.ClientFactory) {
|
||||||
|
if endpoint.Kubernetes.Flags.IsServerMetricsDetected {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer func() {
|
||||||
|
endpoint.Kubernetes.Flags.IsServerMetricsDetected = true
|
||||||
|
endpointService.UpdateEndpoint(
|
||||||
|
portainer.EndpointID(endpoint.ID),
|
||||||
|
endpoint,
|
||||||
|
)
|
||||||
|
}()
|
||||||
cli, err := factory.GetKubeClient(endpoint)
|
cli, err := factory.GetKubeClient(endpoint)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Debug().Err(err).Msg("unable to create kubernetes client for initial metrics detection")
|
log.Debug().Err(err).Msg("unable to create kubernetes client for initial metrics detection")
|
||||||
|
@ -118,11 +138,6 @@ func InitialMetricsDetection(endpoint *portainer.Endpoint, endpointService datas
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
endpoint.Kubernetes.Configuration.UseServerMetrics = true
|
endpoint.Kubernetes.Configuration.UseServerMetrics = true
|
||||||
endpoint.Kubernetes.Flags.IsServerMetricsDetected = true
|
|
||||||
err = endpointService.UpdateEndpoint(
|
|
||||||
portainer.EndpointID(endpoint.ID),
|
|
||||||
endpoint,
|
|
||||||
)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Debug().Err(err).Msg("unable to enable UseServerMetrics inside the database")
|
log.Debug().Err(err).Msg("unable to enable UseServerMetrics inside the database")
|
||||||
return
|
return
|
||||||
|
@ -158,6 +173,16 @@ func storageDetect(endpoint *portainer.Endpoint, endpointService dataservices.En
|
||||||
}
|
}
|
||||||
|
|
||||||
func InitialStorageDetection(endpoint *portainer.Endpoint, endpointService dataservices.EndpointService, factory *cli.ClientFactory) {
|
func InitialStorageDetection(endpoint *portainer.Endpoint, endpointService dataservices.EndpointService, factory *cli.ClientFactory) {
|
||||||
|
if endpoint.Kubernetes.Flags.IsServerStorageDetected {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer func() {
|
||||||
|
endpoint.Kubernetes.Flags.IsServerStorageDetected = true
|
||||||
|
endpointService.UpdateEndpoint(
|
||||||
|
portainer.EndpointID(endpoint.ID),
|
||||||
|
endpoint,
|
||||||
|
)
|
||||||
|
}()
|
||||||
log.Info().Msg("attempting to detect storage classes in the cluster")
|
log.Info().Msg("attempting to detect storage classes in the cluster")
|
||||||
err := storageDetect(endpoint, endpointService, factory)
|
err := storageDetect(endpoint, endpointService, factory)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
|
|
@ -588,8 +588,11 @@ type (
|
||||||
Flags KubernetesFlags `json:"Flags"`
|
Flags KubernetesFlags `json:"Flags"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// KubernetesFlags are used to detect if we need to run initial cluster
|
||||||
|
// detection again.
|
||||||
KubernetesFlags struct {
|
KubernetesFlags struct {
|
||||||
IsServerMetricsDetected bool `json:"IsServerMetricsDetected"`
|
IsServerMetricsDetected bool `json:"IsServerMetricsDetected"`
|
||||||
|
IsServerIngressClassDetected bool `json:"IsServerIngressClassDetected"`
|
||||||
IsServerStorageDetected bool `json:"IsServerStorageDetected"`
|
IsServerStorageDetected bool `json:"IsServerStorageDetected"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue