kubernetes 部署SonarQube 7.1 關聯LDAP

以前有寫過一篇如何在kubernetes上部署SonarQube的文檔,html

而後因爲客戶的需求,須要SonarQube關聯LDAP的用戶,java

因而今天花了半天時間研究瞭如下如何在原有的基礎上安裝LDAP插件。web

首先若是不知道如何在kubernetes上部署SonarQube的童鞋能夠先看一下這篇文檔:docker

SonarQube install on Kubernetesvim

看看傳統的方式怎麼作:

  • 首先安裝LDAP

    參照:...暫無參照,往後會出一篇關於LDAP的安裝微博bash

    安裝完成後帳號信息以下:服務器

    服務器IP:192.168.1.147:389app

    DN: cn=admin,dc=daocloud,dc=iodom

    Password: passwordui

  • SonarQube

    SonarQube須要安裝LDAP插件:

    

    LDAP插件官方手冊:https://docs.sonarqube.org/display/PLUG/LDAP+Plugin

  • SonarQube配置

    配置文件 sonarqube/conf/sonar.properties

# LDAP configuration
# General Configuration
sonar.security.realm=LDAP
ldap.url=ldap://192.168.1.147:389
ldap.bindDn=cn=admin,dc=daocloud,dc=io
ldap.bindPassword=password

# User Configuration
ldap.user.baseDn=ou=People,dc=daocloud,dc=io
ldap.user.request=(&(objectClass=posixAccount)(uid={login}))
ldap.user.realNameAttribute=cn
ldap.user.emailAttribute=mail

# Group Configuration
ldap.group.baseDn=ou=Group,dc=daocloud,dc=io
ldap.group.request=(&(objectClass=posixGroup)(memberUid={uid}))
  • 重啓服務

    sonarqube/bin/[OS]/sonar.sh restart

  • 查看啓用插件輸出日誌

    日誌文件:sonarqube/logs/sonar.log

2018.07.05 07:12:22 INFO  web[][org.sonar.INFO] Security realm: LDAP
2018.07.05 07:12:22 INFO  web[][o.s.p.l.LdapSettingsManager] User mapping: LdapUserMapping{baseDn=ou=People,dc=daocloud,dc=io, request=(&(objectClass=posixAccount)(uid={0})), realNameAttribute=cn, emailAttribute=mail}
2018.07.05 07:12:22 INFO  web[][o.s.p.l.LdapSettingsManager] Group mapping: LdapGroupMapping{baseDn=ou=Group,dc=daocloud,dc=io, idAttribute=cn, requiredUserAttributes=[uid], request=(&(objectClass=posixGroup)(memberUid={0}))}
2018.07.05 07:12:22 INFO  web[][o.s.p.l.LdapContextFactory] Test LDAP connection on ldap://192.168.1.147:389: OK

容器化部署

現來看看難點:

  1. 插件安裝容器重啓後會丟失;
  2. 配置文件修改一樣會遇到這樣的問題;

固然接下來的作法只是我我的的解決思路,僅供參考。

若是後續有更好的辦法會更新這篇微博,若是你們有更好的辦法也能夠在博客下留言。

  • Dockerfile
mkdir /opt/sonarqube

cd /opt/sonarqube
    
vim Dockerfile

    首先基於openjdk:8-alpine的鏡像,製做屬於咱們本身的SonarQube7.1的docker鏡像:

FROM openjdk:8-alpine

ENV SONAR_VERSION=7.1 \
    SONARQUBE_HOME=/opt/sonarqube \
    # Database configuration
    # Defaults to using H2
    SONARQUBE_JDBC_USERNAME=sonar \
    SONARQUBE_JDBC_PASSWORD=sonar \
    SONARQUBE_JDBC_URL=

# Http port
EXPOSE 9000

RUN addgroup -S sonarqube && adduser -S -G sonarqube sonarqube

RUN set -x \
    && apk add --no-cache gnupg unzip \
    && apk add --no-cache libressl wget \
    && apk add --no-cache su-exec \
    && apk add --no-cache bash \
    && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys F1182E81C792928921DBCAB4CFCA4A29D26468DE \
    && mkdir /opt \
    && cd /opt \
    && wget -O sonarqube.zip --no-verbose https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-$SONAR_VERSION.zip \
    && wget -O sonarqube.zip.asc --no-verbose https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-$SONAR_VERSION.zip.asc \
    && gpg --batch --verify sonarqube.zip.asc sonarqube.zip \
    && unzip sonarqube.zip \
    && mv sonarqube-$SONAR_VERSION sonarqube \
    && rm sonarqube.zip* \
    && rm -rf $SONARQUBE_HOME/extensions/plugins/* \
    && rm -rf $SONARQUBE_HOME/bin/*
ADD plugins/ $SONARQUBE_HOME/extensions/plugins/
ADD sonar.properties $SONARQUBE_HOME/conf/ 

RUN chown -R sonarqube:sonarqube $SONARQUBE_HOME

VOLUME "$SONARQUBE_HOME/data"

WORKDIR $SONARQUBE_HOME
COPY run.sh $SONARQUBE_HOME/bin/
RUN chmod +x $SONARQUBE_HOME/bin/run.sh
ENTRYPOINT ["./bin/run.sh"]
  • run.sh 
vim run.sh


#!/bin/bash

set -e

if [ "${1:0:1}" != '-' ]; then
  exec "$@"
fi

chown -R sonarqube:sonarqube $SONARQUBE_HOME
exec su-exec sonarqube \
  java -jar lib/sonar-application-$SONAR_VERSION.jar \
  -Dsonar.log.console=true \
  -Dsonar.jdbc.username="$SONARQUBE_JDBC_USERNAME" \
  -Dsonar.jdbc.password="$SONARQUBE_JDBC_PASSWORD" \
  -Dsonar.jdbc.url="$SONARQUBE_JDBC_URL" \
  -Dsonar.web.javaAdditionalOpts="$SONARQUBE_WEB_JVM_OPTS -Djava.security.egd=file:/dev/./urandom" \
  "$@"
  • sonar.properties

    建立一個sonar.properties的配置文件,這裏只貼出LDAP配置這一段

# LDAP configuration
# General Configuration
sonar.security.realm=LDAP
ldap.url=ldap://192.168.1.147:389
ldap.bindDn=cn=admin,dc=daocloud,dc=io
ldap.bindPassword=password

# User Configuration
ldap.user.baseDn=ou=People,dc=daocloud,dc=io
ldap.user.request=(&(objectClass=posixAccount)(uid={login}))
ldap.user.realNameAttribute=cn
ldap.user.emailAttribute=mail

# Group Configuration
ldap.group.baseDn=ou=Group,dc=daocloud,dc=io
ldap.group.request=(&(objectClass=posixGroup)(memberUid={uid}))
  • plugins

    建立一個plugins的目錄將全部須要的插件都放在這個目錄下

mkdir plugins

    在這裏列出我所安裝的插件列表:

 

ok!最後是docker build的過程,最後把鏡像push到你的鏡像倉庫。

結合這篇blog:SonarQube install on Kubernetes

把裏面的sonarqube的image替換成你新制做出來的鏡像查看效果。

相關文章
相關標籤/搜索