zoukankan      html  css  js  c++  java
  • kubernetes 部署SonarQube 7.1 关联LDAP

    之前有写过一篇如何在kubernetes上部署SonarQube的文档,

    然后由于客户的需求,需要SonarQube关联LDAP的用户,

    于是今天花了半天时间研究了以下如何在原有的基础上安装LDAP插件。

    首先如果不知道如何在kubernetes上部署SonarQube的童鞋可以先看一下这篇文档:

    SonarQube install on Kubernetes

    看看传统的方式怎么做:

    • 首先安装LDAP

        参照:...暂无参照,日后会出一篇关于LDAP的安装微博

        安装完成后账号信息如下:

        服务器IP:192.168.1.147:389

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

        Password: password

    • 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替换成你新制作出来的镜像查看效果。

  • 相关阅读:
    javaweb学习总结(二十三)——jsp自定义标签开发入门
    javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
    MyEclipse使用总结——设置MyEclipse使用的Tomcat服务器
    XML学习总结(二)——XML入门
    XML学习总结(一)——XML介绍
    使用java中replaceAll方法替换字符串中的反斜杠
    MyEclipse使用总结——设置MyEclipse开发项目时使用的JDK
    MyEclipse使用总结——修改MyEclipse默认的Servlet和jsp代码模板
    使用js加载器动态加载外部Javascript文件
    JavaScript获取浏览器类型与版本
  • 原文地址:https://www.cnblogs.com/Bourbon-tian/p/9269498.html
Copyright © 2011-2022 走看看