jenkins - 将指标动态添加到 Fabric8 MetricSpecBuilder
问题描述
我想使用 Fabric8 API 创建 HPA。我想将指标动态添加到 MetricSpecBuider。像下面这样的东西,
HorizontalPodAutoscaler horizontalPodAutoscaler = new HorizontalPodAutoscalerBuilder()
.withNewMetadata().withName("${config.metadata_name}-hpa").endMetadata()
.withNewSpec()
.withNewScaleTargetRef()
.withApiVersion("apps/v1")
.withKind("Deployment")
.withName("${config.metadata_name}")
.endScaleTargetRef()
.withMinReplicas(1)
.withMaxReplicas(10)
.addToMetrics(new io.fabric8.kubernetes.api.model.MetricSpecBuilder()
for (metric in config.deploy_env.metrics) {
.withType(metric.type)
.withNewResource()
.withName(metric.resource.name)
.withNewTarget()
.withType(metric.resource.target.type)
.withAverageUtilization(metric.resource.target.averageUtilization)
.endTarget()
.endResource()
}
.build())
.endSpec()
.build()
return horizontalPodAutoscaler
但是,这会导致错误。
81: unexpected token: for @ line 81, column 4.
11:19:14 for (metric in config.deploy_env.metrics) {
11:19:14 ^
11:19:14
11:19:14 1 error
11:19:14
有人可以让我知道如何实现吗?
谢谢 !
解决方案
我来自 Fabric8 团队。我认为您应该能够使用addNewMetric()
构建器中的方法动态创建新指标。我认为您需要这样做才能动态添加新指标。您还可以List<MetricSpec>
动态创建一个并将其分配给带有withMetrics(metricsList)
.
此代码基于 Fabric8 Kubernetes Client v4.10.3:
HorizontalPodAutoscalerBuilder horizontalPodAutoscalerBuilder = new HorizontalPodAutoscalerBuilder()
.withNewMetadata().withName("the-hpa").withNamespace("default").endMetadata()
.withNewSpec()
.withMetrics()
.withNewScaleTargetRef()
.withApiVersion("apps/v1")
.withKind("Deployment")
.withName("the-deployment")
.endScaleTargetRef()
.withMinReplicas(1)
.withMaxReplicas(10)
.withNewBehavior()
.withNewScaleDown()
.addNewPolicy()
.withType("Pods")
.withValue(4)
.withPeriodSeconds(60)
.endPolicy()
.addNewPolicy()
.withType("Percent")
.withValue(10)
.withPeriodSeconds(60)
.endPolicy()
.endScaleDown()
.endBehavior()
.endSpec();
for (int i = 0; i < metricInput.length; i++) {
horizontalPodAutoscalerBuilder
.editOrNewSpec()
.addNewMetric()
.withType(metricInput[i])
// ...
.endMetric()
.endSpec();
}
return horizontalPodAutoscalerBuilder.build()
推荐阅读
- reactjs - 如何与另一个查询共享缓存的 apollo-client 数据
- snakemake - Snakemake:目标规则可能不包含通配符
- regex - Bash:删除目录中的大多数文件
- python - 如何将数据添加到数据库并通过计算显示在管理页面上
- angularjs - 查询参数中的编码斜杠 (%2F) 导致 Angular 应用程序中的重定向失败
- graphql-js - 意外
在使用 graphql 时 - python - 具有不可序列化类的多线程多处理
- angular - 当一个 npm 包不是想要的包时,我应该如何/应该更新它?
- java - Java ImageIO.read(未知来源)
- cloudkit - CloudKit CKShare userDidAcceptCloudKitShareWith 在 Mac 应用上从不触发