通过Helm Chart部署服务时,安装失败,因为tiller不允许serviceaccount创建ServiceMonitor资源。
注意:
ServiceMonitor 是Prometheus操作员定义的CRD,用于自动获取Pod中正在运行的容器的指标。我想验证tiller服务帐户的权限。
kubectl使用该auth can-i命令,此类查询(请参见下文)始终返回no。
kubectl auth can-i list deployment --as=tillerkubectl auth can-i list deployment --as=staging:tiller检查服务帐户权限的正确方法是什么?
如何启用该tiller帐户创建ServiceMonitor资源?
我有一个连接到在Google(GKE)上运行的k8s集群的Gitlab云。该集群是通过Gitlab云创建的。
我想自定义的config.toml,因为我想解决的K8S缓存中提出这个问题。
我config.toml在runner-gitlab-runnerConfigMap中找到了配置。我更新了ConfigMap以包含此config.toml设置:
config.toml: |
concurrent = 4
check_interval = 3
log_level = "info"
listen_address = '[::]:9252'
[[runners]]
executor = "kubernetes"
cache_dir = "/tmp/gitlab/cache"
[runners.kubernetes]
memory_limit = "1Gi"
[runners.kubernetes.node_selector]
gitlab = "true"
[[runners.kubernetes.volumes.host_path]]
name = "gitlab-cache"
mount_path = "/tmp/gitlab/cache"
host_path = "/home/core/data/gitlab-runner/data"
Run Code Online (Sandbox Code Playgroud)
要应用更改,我删除了runner-gitlab-runner-xxxx-xxxpod,因此使用更新的来创建一个新的pod config.toml。
但是,当我查看新的广告连播时,/home/gitlab-runner/.gitlab-runner/config.toml现在包含两个[[runners]]部分:
listen_address = "[::]:9252"
concurrent = 4
check_interval = 3
log_level = "info"
[session_server]
session_timeout = 1800 …Run Code Online (Sandbox Code Playgroud) 因为Prometheus仅支持json中的文本度量和许多工具返回指标(如Finatra,Spring Boot),所以我创建了一个将json转换为文本的简单代理.因为我想将它用于多个源,所以通过查询参数设置要从中检索实际度量的目标.
指标网址如下所示:/metrics?prefix=finatra&url=http:// :9990/admin/metrics.json
这在浏览器或卷曲中工作正常.但是,在普罗米修斯的'?' 被编码为'%3F',因此请求失败:/metrics%3Fprefix=finatra&url=http:// :9990/admin/metrics.json
如何防止Prometheus编码'?'?这是普罗米修斯的错误吗?我已经尝试用'%'或'\'来逃避,使用unicode等,但仍然没有运气.
这是我经常遇到的情况,但是我还没有找到解决方案。
假设您有一个人员列表,而您只想验证人员名称。这有效:
persons.map(_.name) should contain theSameElementsAs(List("A","B"))
Run Code Online (Sandbox Code Playgroud)
相反,我宁愿这样写
val toName: Person => String = _.name
persons should contain theSameElementsAs(List("A","B")) (after mapping toName)
Run Code Online (Sandbox Code Playgroud)
因为这就是你怎么说
但是有时候,您想使用一个自定义匹配器,该匹配器不仅可以匹配对象的一个属性。怎么可能使用
persons should contain(..)
Run Code Online (Sandbox Code Playgroud)
语法,但能够以某种方式使用自定义匹配器?
在这两种情况下,我都可以使用Hamcrest匹配器轻松地使用JUnit或TestNG解决这两种情况,但是我还没有找到使用ScalaTest做到这一点的方法。
我尝试使用Explicitly特性中的“ before be”语法,但这是不可能的,因为这需要一个“ Normalization”,它定义了“ normalized”方法对参数和返回类型使用相同的类型。因此,不可能将Person更改为String。另外,我还没有成功实现类似trait的“ Explicitly”,因为它不喜欢我返回的Equality [。]类型和/或它不再知道原始列表类型是什么,因此使用“ _.name”可以不编译。
欢迎任何建议。
运行 Micronaut 应用程序的本机映像时,检索 Prometheus 指标失败,因为它无法获取 jvm 指标。
当然native-image预编译应用程序并且只包含实际使用的内容,但是在运行本机映像时使用什么样的 JVM?我认为它也是标准热点虚拟机的大大简化版本。
那么在运行本机映像时甚至可以获取 jvm 指标还是应该使用其他方法来检索正在运行的应用程序的 cpu 和内存统计信息?
在这种情况下,我使用了 Micronaut,但我认为从具有 prometheus 指标的任何本机图像应用程序获取指标是很常见的。
重现:
- install Micronaut cli (e.g. via Homebrew on Mac)
- install GraalVM 19.2.0 (e.g. via Sdkman on Mac)
- install GraalVM native-image tool: gu install native-image
- create application: mn create-app --features=management,micrometer-prometheus,graal-native-image --build maven metrics-graalvm-image
- update src/main/resources/application.yml to allow anonymous access to prometheus endpoint:
endpoints:
all:
enabled: true
sensitive: false
- run application: man exec:exec
- check prometheus …Run Code Online (Sandbox Code Playgroud) 还有其他人也注意到 Java 21 中 Java 泛型的变化吗?
我们使用Jdbi进行数据库访问,当更新到 Java 21 时,会出现问题,因为无法再确定泛型类型。
在调试时我注意到一个条件
java.lang.reflect.Type type = ...
if (type instanceof Class) {..}
Run Code Online (Sandbox Code Playgroud)
其中type是一个接口,在 Java 17 中计算结果为false,但true在 Java 21 中计算结果为 。
Jdbi的某些泛型依赖于Geantyref库。静态方法GenericTypeReflector.getTypeParameter(..)在 Java 17 中返回泛型类型,但null在 Java 21 中返回。
在发行说明或其他公告中,我找不到任何有关 Java 21 中有关泛型的更改的信息。也没有发现向后兼容的重大更改。
我假设一些内部结构可能由于记录反射 (JEP-440) 或开关的模式匹配 (JEP-441) 而发生了变化,但我已经将这些功能用作 17 预览版功能,没有任何问题。
有人知道是什么导致了这些变化以及为什么吗?
我想我已经明白了。我将问题追溯到记录类的构造函数参数。似乎在 Java 21 中,记录类的默认构造函数的参数不知何故不具有泛型类型。所以对于像这样的记录
record Person(Optional<String> name, Optional<Integer> age) {}
Run Code Online (Sandbox Code Playgroud)
泛型类型String并 …
对于Jenkins的SonarQube工作,即使某些测试可能会失败,我们仍希望继续.目前Sonar Runner没有开始,因为测试失败了.在Maven中你只需添加-DtestFailureIgnore = true,但我找不到任何类似的SBT.
我确实找到了onFailuresbt 的东西,但没有找到任何地方如何使用它的例子.这可以用来忽略测试失败,这样构建工作就会继续,所以Sonar Runner会在之后启动吗?
或者Jenkins中有一个设置忽略构建的结果?我们使用'sbt clean coverage test coverageReport'作为构建命令,并在构建后步骤中使用Sonar Runner.
在Scala的项目中,我更新了build.properties从0.13.8至0.13.11.那个"打破"了,因为它不再启动,即它无法下载0.13.11罐子?!sbt打印一个尝试过的repo列表,但repo.typesafe.com不是其中之一.
我当地安装的sbt是0.13.8.
出于某种原因scala-sbt,在Typesafe的Bintray中不再提供罐子.最大版本有0.13.9.
我知道得到它的地方是https://repo.typesafe.com/typesafe/ivy-releases/,但我怎么告诉sbt使用这个回购?
我已经尝试过了:
plugins.sbtbuild.sbt.sbt/repositories但我无法让它发挥作用.
如何告诉sbt在哪里获取二进制文件?
我在BitBucket管道中运行的测试"突然"开始失败并出现此错误:无法识别的字段'snapshot'(代码= 9).
在本地测试都运行正常.本地和BitBucket我都使用Mongo 3.7 docker容器.活跃的Mongo版本是0.13.0
任何人都知道为什么会这样,以及如何解决这个问题?