Tutorial: Implementación de aplicaciones en Azure Spring Apps mediante Jenkins y la CLI de Azure
Nota:
Azure Spring Apps es el nuevo nombre del servicio Azure Spring Cloud. Aunque el servicio tiene un nuevo nombre, verá el nombre antiguo en algunos lugares durante un tiempo mientras trabajamos para actualizar recursos, como capturas de pantalla, vídeos y diagramas.
Azure Spring Apps es un desarrollo de microservicios totalmente administrado con administración integrada de la detección y configuración de servicios. Facilita la implementación de aplicaciones de microservicio basadas en Spring Boot en Azure. En este tutorial se muestra cómo puede usar la CLI de Azure en Jenkins para automatizar la integración y entrega continuas (CI/CD) para Azure Spring Apps.
En este tutorial va a completar estas tareas:
- Aprovisionamiento de una instancia de servicio e inicio de una aplicación Java Spring
- Preparación del servidor Jenkins
- Uso de la CLI de Azure en una canalización de Jenkins para compilar e implementar las aplicaciones de microservicios
Requisitos previos
- Suscripción de Azure: si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
- Jenkins: Instalación de Jenkins en una máquina virtual Linux
- Cuenta de GitHub: si no tiene una cuenta de GitHub, cree una cuenta gratuita antes de comenzar.
Aprovisionamiento de una instancia de servicio e inicio de una aplicación Java Spring
Usamos Piggy Metrics como aplicación de servicio de Microsoft de ejemplo y seguimos los mismos pasos de Inicio rápido: Inicio de una aplicación Java Spring mediante la CLI de Azure para aprovisionar la instancia de servicio y configurar las aplicaciones. Si ya ha pasado por el mismo proceso, puede ir directamente a la sección siguiente. De lo contrario, a continuación se incluyen los comandos de la CLI de Azure. Consulte Inicio rápido: Inicio de una aplicación java Spring mediante la CLI de Azure para obtener más información.
La máquina local debe cumplir los mismos requisitos previos que el servidor de compilación de Jenkins. Asegúrese de que se instala lo siguiente para compilar e implementar las aplicaciones de microservicios:
- Git
- JDK 8
- Maven 3.0 o cualquier versión superior
- La CLI de Azure instalada, versión 2.0.67 o posterior
Instale la extensión Azure Spring Apps:
az extension add --name spring
Cree un grupo de recursos para que contenga el servicio Azure Spring Apps:
az group create --location eastus --name <resource group name>
Aprovisione una instancia de Azure Spring Apps:
az spring create -n <service name> -g <resource group name>
Bifurque el repositorio de Piggy Metrics a su cuenta de GitHub. En la máquina local, clone el repositorio en un directorio llamado
source-code
:mkdir source-code git clone https://github.com/<your GitHub id>/piggymetrics
Configure el servidor de configuración. Asegúrese de reemplazar <el identificador de GitHub> por el valor correcto.
az spring config-server git set -n <your-service-name> --uri https://github.com/<your GitHub id>/piggymetrics --label config
Compile el proyecto:
cd piggymetrics mvn clean package -D skipTests
Cree los tres microservicios: gateway, auth-service y account-service:
az spring app create --n gateway -s <service name> -g <resource group name> az spring app create --n auth-service -s <service name> -g <resource group name> az spring app create --n account-service -s <service name> -g <resource group name>
Implemente las aplicaciones:
az spring app deploy -n gateway -s <service name> -g <resource group name> --jar-path ./gateway/target/gateway.jar az spring app deploy -n account-service -s <service name> -g <resource group name> --jar-path ./account-service/target/account-service.jar az spring app deploy -n auth-service -s <service name> -g <resource group name> --jar-path ./auth-service/target/auth-service.jar
Asigne un punto de conexión público a gateway:
az spring app update -n gateway -s <service name> -g <resource group name> --is-public true
Consulte la aplicación gateway para obtener la URL y así poder comprobar que la aplicación se está ejecutando.
az spring app show --name gateway | grep url
Vaya hasta la dirección URL proporcionada por el comando anterior para ejecutar la aplicación PiggyMetrics.
Preparación del servidor Jenkins
En esta sección se prepara el servidor de Jenkins para ejecutar una compilación, adecuada para realizar pruebas. Sin embargo, por motivos de seguridad, debe usar un agente de máquina virtual de Azure o un agente de Azure Container para establecer un agente de Azure para ejecutar las compilaciones.
Instalación de los complementos
Inicie sesión en el servidor jenkins.
Seleccione Manage Jenkins (Administración de Jenkins).
Seleccione Administrar complementos.
En la pestaña Available (Disponible), seleccione los siguientes complementos:
Si estos complementos no aparecen en la lista, compruebe la pestaña Installed (Instalado) para ver si ya están instalados.
Para instalar los complementos, seleccione Descargar ahora e instalar después del reinicio.
Reinicie el servidor Jenkins para completar la instalación.
Incorporación de la credencial de la entidad de servicio de Azure en el almacén de credenciales de Jenkins
Se necesita una entidad de servicio de Azure para la implementación en Azure. Para más información, consulte la sección Creación de una entidad de servicio del tutorial Implementación desde GitHub en Azure App Service con Jenkins. La salida de
az ad sp create-for-rbac
es parecida a esta:{ "appId": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx", "displayName": "xxxxxxxjenkinssp", "name": "http://xxxxxxxjenkinssp", "password": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx", "tenant": "xxxxxx--xxx-xxxx-xxx-xxxxxxxxxxxx" }
En el panel de Jenkins, seleccione Credentials (Credenciales)>System(Sistema). A continuación, haga clic en Global credentials(unrestricted) (Credenciales globales [sin restricción]).
Seleccione Add Credentials (Agregar credenciales).
Seleccione el tipo Microsoft Azure Service Principal (Entidad de servicio de Microsoft Azure).
Proporcione valores para los campos siguientes:
- Id. de suscripción: Identificador de suscripción de Azure
- Id. de cliente: appid de entidad de servicio
- Secreto de cliente: contraseña de entidad de servicio
- Id. de inquilino: Id. de inquilino de la cuenta Microsoft
- Entorno de Azure: seleccione el valor adecuado para su entorno. Por ejemplo, use Azure para Azure global.
- Id. : establezca como
azure_service_principal
. Usaremos este identificador en un paso posterior de este artículo. - Descripción: este valor es opcional, pero se recomienda desde el punto de vista de una documentación o mantenimiento.
Instalación de maven y la extensión spring de la CLI de Azure
La canalización de ejemplo usa Maven para compilar y la CLI de Azure para implementarla en la instancia de servicio. Cuando se instala Jenkins, se crea una cuenta de administrador denominada jenkins. Asegúrese de que el usuario jenkins tiene permiso para ejecutar la extensión spring.
Conéctese al controlador de Jenkins mediante SSH.
Instale Maven.
sudo apt-get install maven
Compruebe que la CLI de Azure está instalada; para ello, escriba
az version
. Si la CLI de Azure no está instalada, consulte Instalación de la CLI de Azure.Cambie al usuario
jenkins
:sudo su jenkins
Instale la extensión spring:
az extension add --name spring
Creación de un archivo Jenkinsfile
En su propio repositorio:
https://github.com/your_github_id/piggymetrics
cree un archivo Jenkins en la raíz.Actualice el archivo de la forma siguiente. Asegúrese de reemplazar los valores del nombre del grupo de recursos y< el nombre>> del <servicio. Reemplace entidad_de_servicio_de_azure por el identificador correcto si usa un valor diferente al agregar la credencial en Jenkins.
node { stage('init') { checkout scm } stage('build') { sh 'mvn clean package' } stage('deploy') { withCredentials([azureServicePrincipal('azure_service_principal')]) { // Log in to Azure sh ''' az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID az account set -s $AZURE_SUBSCRIPTION_ID ''' // Set default resource group name and service name. Replace <resource group name> and <service name> with the right values sh 'az config set defaults.group=<resource group name>' sh 'az config set defaults.spring=<service name>' // Deploy applications sh 'az spring app deploy -n gateway --jar-path ./gateway/target/gateway.jar' sh 'az spring app deploy -n account-service --jar-path ./account-service/target/account-service.jar' sh 'az spring app deploy -n auth-service --jar-path ./auth-service/target/auth-service.jar' sh 'az logout' } } }
Confirme el cambio y guárdelo.
Creación del trabajo
En el panel de Jenkins, seleccione Nuevo elemento.
Proporcione un nombre, Deploy-PiggyMetrics, para el trabajo y seleccione Pipeline (Canalización). Haga clic en OK.
Seleccione la pestaña Canalización.
En Definition (Definición), seleccione Pipeline script from SCM (Script de canalización del SCM).
En SCM, seleccione Git.
Escriba la dirección URL de GitHub para el repositorio bifurcado:
https://github.com/<your GitHub id>/piggymetrics.git
.En Especificador de rama (negro para "any"), seleccione /Azure.
En Ruta de acceso de script, seleccione Jenkinsfile.
Seleccione Guardar.
Validación y ejecución del trabajo
Antes de ejecutar el trabajo, edite el texto en el cuadro de entrada de inicio de sesión para escribir el identificador de inicio de sesión.
En el repositorio, abra
index.html
en/gateway/src/main/resources/static/
.enter your login
Busque y actualice ese texto aenter login ID
.<input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
Confirme el cambio y guárdelo.
Ejecute el trabajo en Jenkins manualmente. En el panel de Jenkins, seleccione el trabajo
Deploy-PiggyMetrics
y, a continuación, seleccione Compilar ahora.
Una vez completado el trabajo, vaya a la dirección IP pública de la gateway
aplicación y compruebe que la aplicación se ha actualizado.
Limpieza de recursos
Cuando ya no los necesite, elimine los recursos creados en este artículo:
az group delete -y --no-wait -n <resource group name>