Skip to content

Commit

Permalink
chore(kubernetes): Bump fabric8 library to 4.6.0 (#4060)
Browse files Browse the repository at this point in the history
* chore(kubernetes): Bump fabric8 library to 4.3.1

This commit also updates the code in response to a couple of
breaking changes in the upgrade. Notably, the cpu utilization target
of a replicaset is now a top-level field rather than being nested
in a metrics object. Likewise, the current utilization is a top-level
field of the status, rather than nested in a metrics object.

* chore(kubernetes): Bump fabric8 library to 4.6.0
  • Loading branch information
ezimanyi committed Sep 26, 2019
1 parent d631f2c commit 8cd088f
Show file tree
Hide file tree
Showing 4 changed files with 5 additions and 16 deletions.
2 changes: 1 addition & 1 deletion clouddriver-kubernetes-v1/clouddriver-kubernetes-v1.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ dependencies {
implementation "com.netflix.spinnaker.fiat:fiat-core:$fiatVersion"
implementation "com.netflix.spinnaker.kork:kork-config"
implementation "com.netflix.spinnaker.moniker:moniker"
implementation "io.fabric8:kubernetes-client:4.1.1"
implementation "io.fabric8:kubernetes-client:4.6.0"
implementation "io.kubernetes:client-java:5.0.0"
implementation "org.springframework.boot:spring-boot-actuator"
implementation "org.springframework.boot:spring-boot-starter-web"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,13 +87,10 @@ import io.fabric8.kubernetes.api.model.HTTPHeaderBuilder
import io.fabric8.kubernetes.api.model.Handler
import io.fabric8.kubernetes.api.model.HandlerBuilder
import io.fabric8.kubernetes.api.model.HorizontalPodAutoscaler
import io.fabric8.kubernetes.api.model.HorizontalPodAutoscalerBuilder
import io.fabric8.kubernetes.api.model.HorizontalPodAutoscalerFluentImpl
import io.fabric8.kubernetes.api.model.HostPathVolumeSourceBuilder
import io.fabric8.kubernetes.api.model.IntOrString
import io.fabric8.kubernetes.api.model.KeyToPath
import io.fabric8.kubernetes.api.model.MetricSpec
import io.fabric8.kubernetes.api.model.MetricSpecBuilder
import io.fabric8.kubernetes.api.model.NFSVolumeSourceBuilder
import io.fabric8.kubernetes.api.model.PersistentVolumeClaimVolumeSourceBuilder
import io.fabric8.kubernetes.api.model.PodTemplateSpec
Expand Down Expand Up @@ -820,7 +817,7 @@ class KubernetesApiConverter {
description.capacity = new Capacity(min: autoscaler.spec.minReplicas,
max: autoscaler.spec.maxReplicas,
desired: description.targetSize)
def cpuUtilization = new KubernetesCpuUtilization(target: autoscaler.spec.metrics?.find { metric -> metric.resource.name == "cpu" }?.resource?.targetAverageUtilization)
def cpuUtilization = new KubernetesCpuUtilization(target: autoscaler.spec.targetCPUUtilizationPercentage)
description.scalingPolicy = new KubernetesScalingPolicy(cpuUtilization: cpuUtilization)
}

Expand All @@ -836,13 +833,7 @@ class KubernetesApiConverter {
.withNewSpec()
.withMinReplicas(description.capacity.min)
.withMaxReplicas(description.capacity.max)
.addToMetrics(new MetricSpecBuilder()
.withType("Resource")
.withNewResource()
.withName("cpu")
.withTargetAverageUtilization(description.scalingPolicy.cpuUtilization.target)
.endResource()
.build())
.withTargetCPUUtilizationPercentage(description.scalingPolicy.cpuUtilization.target)
.withNewScaleTargetRef()
.withKind(resourceKind)
.withName(resourceName)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ import com.netflix.spinnaker.clouddriver.kubernetes.v1.deploy.exception.Kubernet
import com.netflix.spinnaker.clouddriver.orchestration.AtomicOperation
import io.fabric8.kubernetes.api.model.DoneableHorizontalPodAutoscaler
import io.fabric8.kubernetes.api.model.HorizontalPodAutoscalerBuilder
import io.fabric8.kubernetes.api.model.MetricSpecBuilder

class UpsertKubernetesAutoscalerAtomicOperation implements AtomicOperation<Void> {
KubernetesAutoscalerDescription description
Expand Down Expand Up @@ -81,8 +80,7 @@ class UpsertKubernetesAutoscalerAtomicOperation implements AtomicOperation<Void>
description.scalingPolicy = description.scalingPolicy ?: new KubernetesScalingPolicy()
description.scalingPolicy.cpuUtilization = description.scalingPolicy.cpuUtilization ?: new KubernetesCpuUtilization()
description.scalingPolicy.cpuUtilization.target = description.scalingPolicy.cpuUtilization.target != null ?
description.scalingPolicy.cpuUtilization.target :
autoscaler.spec.metrics?.find { metric -> metric.resource.name == "cpu" }?.resource?.targetAverageUtilization
description.scalingPolicy.cpuUtilization.target : autoscaler.spec.targetCPUUtilizationPercentage

((DoneableHorizontalPodAutoscaler) KubernetesApiConverter.toAutoscaler(
credentials.apiAdaptor.editAutoscaler(namespace, name), description, name, kind, version
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class KubernetesAutoscalerStatus {
if (autoscaler.status == null) {
log.warn("Autoscaler on ${autoscaler.metadata.name} has a null status. The replicaset may be missing a CPU request.")
} else {
this.currentCpuUtilization = autoscaler.status.currentMetrics?.find { metric -> metric.resource.name == "cpu" }?.resource?.currentAverageUtilization
this.currentCpuUtilization = autoscaler.status.currentCPUUtilizationPercentage
this.currentReplicas = autoscaler.status.currentReplicas
this.desiredReplicas = autoscaler.status.desiredReplicas
this.lastScaleTime = KubernetesModelUtil.translateTime(autoscaler.status.lastScaleTime)
Expand Down

0 comments on commit 8cd088f

Please sign in to comment.