ОК, так что я наконец-то решил это. Может быть, это будет полезно для кого-то.
"регистрация" объект из вопроса генерируется в самом Spring Boot Admin. Это надежность интерфейса ServiceInstanceConverter . По умолчанию используется реализация DefaultServiceInstanceConverter (подробнее об этом можно прочитать здесь ).
Существует несколько ключей метаданных, которые можно использовать для изменения managementUrl и healthUrl (по умолчанию используются "/ привод" и "/ привод / здоровье" соответственно).
Сначала я подумал, что мы можем использовать ключ метаданных * management.context-path для добавления нашего server.servlet.context-path , но, к сожалению, вы не можете используйте символ «/» в значении метаданных («словарь / привод» недопустим), поэтому в моем случае этого было недостаточно.
Вместо этого мы решили расширить DefaultServiceInstanceConverter и переопределить convert и getManagementPath методы:
@Component
public class OpenShiftServiceInstanceConverter extends DefaultServiceInstanceConverter {
private static final String MANAGEMENT_CONTEXT_PATH = "/actuator";
private static final String MANAGEMENT_PREFIX = "management.prefix";
@Override
public Registration convert(ServiceInstance instance) {
return Registration.create(instance.getServiceId(), getHealthUrl(instance).toString())
.managementUrl(getManagementUrl(instance).toString()).serviceUrl(getServiceUrl(instance).toString())
.metadata(getMetadata(instance)).build();
}
@Override
protected String getManagementPath(ServiceInstance instance) {
String managementPath = instance.getMetadata().get(MANAGEMENT_PREFIX);
if (!isEmpty(managementPath)) {
return managementPath + MANAGEMENT_CONTEXT_PATH;
}
return MANAGEMENT_CONTEXT_PATH;
}
}
Таким образом, мы можем просто включить server.servlet.context-path в качестве метаданных management.prefix введите шаблон службы:
kind: Template
apiVersion: v1
metadata:
name: dictionary-service
annotations:
description: Template for Dictionary Service 1.0.0
labels:
app: dictionary-service
management.prefix: dictionary
...
И теперь он работает как шарм.