Skip to content

Tema:

Instalacion de Sonar

Introducción

En la siguiente guia realizaremos la instalacion del componente Sonarqube dentro de un cluster de kubernetes, Sonarqube es una herramienta para analisis de calidad de codigo, lo cual es bastante util a la hora de desplegar aplicaciones que llegaran a un ambiente productivo.

Objetivo

Objetivo General:

  • El objetivo de esta practica es instalar una instancia de sonarqube para poder hacer uso del mismo en siguientes practicas.

Desarrollo del Tema

SonarQube es una plataforma de código abierto que permite inspeccionar, analizar y mejorar la calidad del código fuente de manera continua. Se utiliza en entornos de Desarrollo, DevOps y CI/CD, integrándose con repositorios y pipelines para detectar problemas automáticamente.

¿Qué hace SonarQube?

  1. Análisis de calidad del código
  2. Detecta bugs (errores lógicos).
  3. Encuentra vulnerabilidades de seguridad.
  4. Señala code smells (malas prácticas).
  5. Identifica duplicación de código.

  6. Cumplimiento de estándares

  7. Aplica reglas de estilo y convenciones de codificación.
  8. Compatible con estándares como OWASP Top 10 y CWE.

  9. Métricas de calidad

  10. Calcula cobertura de pruebas unitarias.
  11. Mide complejidad ciclomática.
  12. Evalúa mantenibilidad y deuda técnica.

  13. Integración continua

  14. Se integra con herramientas como:
    • Jenkins, GitLab CI/CD, GitHub Actions, Azure DevOps, Tekton, entre otros.
  15. Evita que se apruebe código con baja calidad (Quality Gates).

  16. Soporte multi-lenguaje

  17. Compatible con más de 25 lenguajes: Java, C#, Python, JavaScript, TypeScript, Go, C/C++, etc.

Laboratorio para el Estudiante

Indicaciones:

  • Se realizara la instalacion de sonarqube en el ambiente de laboratorio proporcionado.

Inicio de laboratorio

Conexion a ambiente de kubernetes

  1. Ingresar al servidor de laboratorio con la llave proporcionada.

    export LAB=X
    ssh student@lab-${LAB}-aio 
    

  2. Cambiar al usuario root

    sudo -i
    

  3. Proporcione accesos administrativos al cluster de Kubernetes

    export KUBECONFIG=/etc/rancher/rke2/rke2.yaml
    
    export PATH=$PATH:/var/lib/rancher/rke2/bin
    
    export CONTAINERD_ADDRESS=/run/k3s/containerd/containerd.sock
    

  4. Defina la url a utilizar

    export AIO_WILDCARD=${WILDCARD_DOMAIN} # Valide esta información en su inventario, por ejemplo: lab-0.mx-g01.ws.itmlabs.io
    
    export SONAR_URL=sonar.$AIO_WILDCARD
    

  5. Cree una carpeta llamada sonar y acceda a ella

    mkdir sonar ; cd sonar
    

  6. Crear un archivo llamada values.yaml con el siguiente contenido. Para evitar algun tipo de problema colocar directamente el wildcard en las url.

    service:
      type: ClusterIP
      externalPort: 9000
      internalPort: 9000
      labels: {}
      annotations: {}
    
    postgresql:
      enabled: true
    
    ingress:
      enabled: true
      hosts:
        - name: sonar.34-105-107-225.nip.io
          path: /
      annotations:
        nginx.ingress.kubernetes.io/proxy-body-size: "64m"
    

  7. Crear un nuevo namespace llamado sonarqube y exportar una variable llamada MONITORING_PASSCODE necesaria para la instalacion

    kubectl create ns sonarqube
    export MONITORING_PASSCODE="sonar123"
    

  8. Vamos a hacer la instalacion de sonar por medio de helm.

helm repo add sonarqube https://SonarSource.github.io/helm-chart-sonarqube
helm repo update
helm upgrade -f values.yaml --install -n sonarqube sonarqube sonarqube/sonarqube --set monitoringPasscode=$MONITORING_PASSCODE,community.enabled=true
  1. Una vez finalize la instalacion vamos a ingresar con la direccion de sonar.${AIO_WILDCARD} donde AIO_WILDCARD es el wildcard de su laboratorio por ejemplo sonar.34-105-107-225.nip.io

  2. Nos vamos a loguear con admin y con la clave por defecto admin.

  3. Realizar el cambio de clave a la siguente.

    uK5y$i8V=3Z3