SonarQube - укажите местоположение sonar.properties - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь развернуть SonarQube в Kubernetes, используя configMaps.

Последнее 7.1 изображение , которое я использую, имеет конфигурацию в sonar.properties, встроенную в $SONARQUBE_HOME/conf/. Каталог не пустой и содержит также файл wrapper.conf.

Я бы хотел смонтировать configMap внутри моего контейнера в другом месте, чем / opt / sonar / conf /, и указать sonarQube новый путь для чтения свойств.

Есть ли способ сделать это? (переменная окружения? Аргумент JVM? ...)

Ответы [ 2 ]

0 голосов
/ 16 июля 2018

Для моей проблемы я определил переменную среды для настройки параметров базы данных в моем развертывании в Kubernetes:

      env:
      - name: SONARQUBE_JDBC_URL
        value: jdbc:sqlserver://mydb:1433;databaseName=sonarqube
      - name: SONARQUBE_JDBC_USERNAME
        value: sonarqube
      - name: SONARQUBE_JDBC_PASSWORD
        valueFrom:
          secretKeyRef:
            name: sonarsecret
            key: dbpassword

Мне нужно было также использовать плагин ldap, но в этом случае не удалось настроить переменную среды. Поскольку /opt/sonarqube/conf/ не пусто, я не могу использовать configMap для отделения конфигурации от содержимого изображения. Итак, я создаю свой собственный образ sonarqube, добавив плагин ldap jar и настройку ldap в sonar.properties:

# General Configuration
sonar.security.realm=LDAP
ldap.url=ldap://myldap:389
ldap.bindDn=CN=mysa=_ServicesAccounts,OU=Users,OU=SVC,DC=net
ldap.bindPassword=****

# User Configuration
ldap.user.baseDn=OU=Users,OU=SVC,DC=net
ldap.user.request=(&(sAMAccountName={0})(objectclass=user))
ldap.user.realNameAttribute=cn
ldap.user.emailAttribute=mail

# Group Configuration
ldap.group.baseDn=OU=Users,OU=SVC,DC=net
ldap.group.request=(&(objectClass=group)(member={dn}))
0 голосов
/ 07 июля 2018

Не рекомендуется каким-либо образом изменять эту стандартную конфигурацию. Но мы можем взглянуть на исходный код SonarQube. В этом файле вы можете найти этот код для чтения файла конфигурации:

private static Properties loadPropertiesFile(File homeDir) {
    Properties p = new Properties();
    File propsFile = new File(homeDir, "conf/sonar.properties");
    if (propsFile.exists()) {
      ...
    } else {
      LoggerFactory.getLogger(AppSettingsLoaderImpl.class).warn("Configuration file not found: {}", propsFile);
    }
    return p;
}

Таким образом, conf-путь и имя файла жестко запрограммированы, и вы получите предупреждение, если файл не существует. Домашний каталог находится следующим образом:

private static File detectHomeDir() {
  try {
    File appJar = new File(Class.forName("org.sonar.application.App").getProtectionDomain().getCodeSource().getLocation().toURI());
    return appJar.getParentFile().getParentFile();
  } catch (...) {
     ...
}

Так что это тоже нельзя изменить. Код выше используется здесь:

@Override
public AppSettings load() {
    Properties p = loadPropertiesFile(homeDir);
    p.putAll(CommandLineParser.parseArguments(cliArguments));
    p.setProperty(PATH_HOME.getKey(), homeDir.getAbsolutePath());
    p = ConfigurationUtils.interpolateVariables(p, System.getenv());
    ....
}

Это говорит о том, что вы можете использовать параметры командной строки или переменные среды для изменения настроек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...