Cómo Implementar SonarQube en un cluster de Azure Kubernetes e integrarlo con un canal de Azure DevOps (es-MX)
Articulo Original: https://blogs.msdn.microsoft.com/atverma/2018/11/26/deploy-sonarqube-to-azure-kubernetes-service-cluster-and-integrate-with-azure-devops-build-pipeline/
Esta es la siguiente parte de la serie sobre desarrollo y despliegue.
- Angular, ASP.NET Core Web API y SQL Server para Azure Kubernetes
- Aplicaciones de función que utilizan el tiempo de ejecución de Azure Functions 2.0
En este artículo, vamos a compartir los pasos necesarios para implementar SonarQube en el clúster de Azure Kubernetes e integrarlos con un canal de Azure DevOps para configurar el análisis de código para las aplicaciones web Angular y ASP.NET Core creadas en partes anteriores de esta serie. Los anteriores artículos de esta serie son:
Azure Kubernetes Service (AKS): implementación de Angular, ASP.NET Core y SQL Server en Linux
Funciones de Azure 2.0: crear, depurar e implementar en el servicio de Kureetes de Azure (AKS)
Las herramientas utilizadas para desarrollar estos componentes son Visual Studio para Mac / VS Code / VS 2017, AKS Dashboard, Docker for Desktop y kubectl.
SonarQube
SonarQube proporciona la capacidad no solo de mostrar la salud de una aplicación, sino también de resaltar los problemas recientemente presentados. Voy a configurar SQL Server como base de datos backend para SonarQube.
Crear una base de datos de SQL Server
Cree una base de datos de SQL Server llamada 'SonarDB' en la instancia de servidor SQL existente que había creado durante la primera parte de esta serie. SonarQube requiere que la recopilación de la base de datos debe distinguir entre mayúsculas y minúsculas y el acento. Puede especificar la intercalación mientras crea la base de datos o actualizarla, por ejemplo, fragmentos de código para crear / cambiar la intercalación a SQL_Latin1_General_CP1_CS_AS sigue
CREATE DATABASE SonarDB
COLLATE SQL_Latin1_General_CP1_CS_AS;
ALTER DATABASE SonarDB
COLLATE SQL_Latin1_General_CP1_CS_AS;
Cree una cuenta de inicio de sesión SQL que SonarQube necesite para conectarse a la base de datos 'SonarDB'.
Crear un volumen persistente
Se necesita un reclamo de volumen persistente para almacenar los datos de SonarQube. El fragmento de código yaml para crear un almacenamiento de 5 GB se muestra a continuación. El recurso de implementación va a montar archivos en esta reclamación de almacenamiento. Puedes leer más sobre Volúmenes persistentes.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: sonar-data-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
Crear un servicio de Kubernetes
El siguiente paso es crear un servicio Kubernetes para SonarQube. Como puede ver en el siguiente fragmento de código yaml, el puerto 80/9000 está definido y el tipo es LoadBalancer, es decir, este servicio tendrá puntos finales externos. Kubernetes utilizará para seleccionar 'app: sonar-deploy' para asignarlo a la implementación como se verá a continuación. Puedes leer más sobre Servicios.
apiVersion: v1
kind: Service
metadata:
name: sonar-svc
labels:
name: sonar-svc
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 9000
selector:
app: sonar-deployment
Crear un despliegue de Kubernetes
El siguiente paso es crear una implementación de Kubernetes para SonarQube. El fragmento de código yaml se muestra a continuación y algunos punteros son
La imagen de la ventana acoplable que se utiliza para crear este recurso es image: sonarqube
Puede cambiar el número de pods actualizando réplicas: 1
Aplicación de etiquetas: la implementación de la sonda tiene que coincidir con el selector definido en el servicio
La reclamación de volumen persistente creada anteriormente se utiliza para el almacenamiento, es decir, persistentVolumeClaim: claimName: sonar-data-claim.
Se especifican el nombre de usuario, la contraseña y la URL de JDBC, que deben actualizarse en función de los valores específicos de su base de datos 'SonarDB' y del usuario de inicio de sesión.
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: sonar-deployment
labels:
app: sonar-deployment
spec:
replicas: 1
template:
metadata:
labels:
app: sonar-deployment
spec:
terminationGracePeriodSeconds: 15
initContainers:
- name: fix-the-volume-permission
image: busybox
command:
- sh
- -c
- chown -R 1000:1000 /opt/sonarqube/extensions
securityContext:
privileged: true
volumeMounts:
- name: sonarqube-data
mountPath: /opt/sonarqube/extensions
- name: fix-the-volume-permission1
image: busybox
command:
- sh
- -c
- chown -R 1000:1000 /opt/sonarqube/data
securityContext:
privileged: true
volumeMounts:
- name: sonarqube-data
mountPath: /opt/sonarqube/data
containers:
- name: sonarqube
image: sonarqube
ports:
- name: sonarqube
containerPort: 9000
env:
- name: SONARQUBE_JDBC_USERNAME
value: sonar
- name: SONARQUBE_JDBC_PASSWORD
value: SONAR_SQL_LOGIN_PASSWORD
- name: SONARQUBE_JDBC_URL
value: jdbc:sqlserver://mssql-deployment:1433;databaseName=sonardb;user=sonar;password=SONAR_SQL_LOGIN_PASSWORD
volumeMounts:
- name: sonarqube-data
mountPath: /opt/sonarqube/extensions
subPath: extensions
- name: sonarqube-data
mountPath: /opt/sonarqube/data
subPath: data
volumes:
- name: sonarqube-data
persistentVolumeClaim:
claimName: sonar-data-claim
Después de que los recursos de SonarQube se desplieguen en el clúster AKS, navegue hasta el punto final público e inicie sesión con las credenciales predeterminadas, es decir, el nombre de usuario y la contraseña son "admin". Puede cambiar la contraseña. Para esta muestra, los usuarios incorporados están provistos para autenticación, sin embargo, puede configurar proveedores de identidad externos. Puede leer más sobre los proveedores de identidad externos y la autenticación basada en encabezados http.
Habilitar el complemento de SonarQube en Azure DevOps
Debe habilitar la extensión de SonarQube en Azure DevOps. Busque la extensión de SonarQube en el mercado y habilítela.
Generar Token en SonarQube
Los DevOps de Azure necesitarán un token para conectarse a la instancia de SonarQube. Debe generar el token en el portal de SonarQube navegando a SonarQube> Seguridad> Generar tokens. Mantenga una nota de la ficha.
https://msdnshared.blob.core.windows.net/media/2018/11/Screen-Shot-2018-11-25-at-9.18.16-PM-1024x543.png
Crear proyectos en SonarQube
El siguiente paso es crear proyectos para Angular App y ASP.NET Core Web API en el portal de SonarQube. Las claves del proyecto serán necesarias en la compilación de DevOps de Azure, por lo tanto, tome nota de estos valores.
https://msdnshared.blob.core.windows.net/media/2018/11/Screen-Shot-2018-11-25-at-9.05.16-PM-1024x253.png
Crear una nueva conexión de servicio en Azure DevOps
Para conectar Azure DevOps a SonarQube, deberá crear una nueva conexión de servicio en Azure DevOps. Los principales punteros son
Especifique un nombre de conexión
Especifique la URL del servidor como dirección de punto final de SonarQube
Especifique el valor del token que se genera en el paso anterior
https://msdnshared.blob.core.windows.net/media/2018/11/Screen-Shot-2018-11-25-at-9.14.01-PM-1024x579.png
Configurando la compilación de Azure DevOps para la aplicación Angular
Los tres pasos necesarios para la integración de SonarQube al impedir la instalación de npm y la compilación de npm son
- Preparar la configuración del análisis
- Este paso debe ejecutarse antes de construir
- Seleccione el punto final del servidor SonarQube
- Especifique la clave del proyecto y el nombre del proyecto para la aplicación angular
- Especifique la raíz del directorio de fuentes, es decir, la ruta al directorio raíz que contiene los archivos de origen
- Ejecutar análisis de código
- Este paso debe ejecutarse después de la construcción
- Publicar el resultado de Quality Gate
https://msdnshared.blob.core.windows.net/media/2018/11/Screen-Shot-2018-11-25-at-9.29.47-PM-1024x552.png
Configuración del canal de compilación de Azure DevOps para la aplicación web básica de ASP.NET API
Los tres pasos necesarios para la integración de SonarQube, a excepción de Restaurar y Construir, son
- Preparar la configuración del análisis
- Este paso debe ejecutarse antes de construir
- Seleccione el punto final del servidor SonarQube
- Especifique la clave del proyecto para la aplicación de la API web principal de ASP.NET
- Seleccione integrar con la opción MSBuild
- Ejecutar análisis de código
- Este paso debe ejecutarse después de la construcción
- Publicar el resultado de Quality Gate
https://msdnshared.blob.core.windows.net/media/2018/11/Screen-Shot-2018-11-25-at-9.25.54-PM-1024x521.png
Construcción de web API web con Angular y ASP.NET Core
La API con Angular y la web API central de ASP.NET se pueden ver en un análisis detallado en el portal de SonarQube.
https://msdnshared.blob.core.windows.net/media/2018/11/Screen-Shot-2018-11-25-at-9.32.36-PM-1024x169.png
Esto completa este artículo sobre la implementación de SonarQube en el clúster del servicio de Azure Kubernetes y la integración con el sistema de desarrollo de Azure DevOps. Los recursos de Kubernetes necesarios para implementar SonarQube en el clúster AKS se pueden descargar desde GitHub.