Tutorial: Implementación de aplicaciones en Azure Spring Cloud mediante Jenkins y la CLI de Azure
Azure Spring Cloud es un microservicio de desarrollo totalmente administrado con administración de configuración y detección de servicios integrada. Facilita la implementación de aplicaciones de microservicio basadas en Spring Boot en Azure. En este tutorial se muestra cómo usar la CLI de Azure en Jenkins para automatizar la integración y entrega continuas (CI/CD) para Azure Spring Cloud.
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: Antes de comenzar, si no tiene una cuenta de GitHub, cree una gratuita.
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 este 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 información general adicional.
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 de Azure Spring Cloud:
az extension add --name spring-cloudCree un grupo de recursos que contenga el servicio Azure Spring Cloud:
az group create --location eastus --name <resource group name>Aprovisione una instancia de Azure Spring Cloud:
az spring-cloud 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>/piggymetricsConfigure el servidor de configuración. Asegúrese de reemplazar <el identificador de GitHub> por el valor correcto.
az spring-cloud config-server git set -n <your-service-name> --uri https://github.com/<your GitHub id>/piggymetrics --label configCompile el proyecto:
cd piggymetrics mvn clean package -D skipTestsCree los tres microservicios: gateway, auth-service y account-service:
az spring-cloud app create --n gateway -s <service name> -g <resource group name> az spring-cloud app create --n auth-service -s <service name> -g <resource group name> az spring-cloud app create --n account-service -s <service name> -g <resource group name>Implemente las aplicaciones:
az spring-cloud app deploy -n gateway -s <service name> -g <resource group name> --jar-path ./gateway/target/gateway.jar az spring-cloud app deploy -n account-service -s <service name> -g <resource group name> --jar-path ./account-service/target/account-service.jar az spring-cloud app deploy -n auth-service -s <service name> -g <resource group name> --jar-path ./auth-service/target/auth-service.jarAsigne un punto de conexión público a gateway:
az spring-cloud app update -n gateway -s <service name> -g <resource group name> --is-public trueConsulte la aplicación gateway para obtener la URL y así poder comprobar que la aplicación se está ejecutando.
az spring-cloud app show --name gateway | grep urlVaya 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. Elija Manage Jenkins Manage Plugins (Administrar complementos de administración de Jenkins).
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, elija Download now and install after restart (Descargar ahora e instalar después de reiniciar).
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-rbaces 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 Sistema decredenciales. 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
- Identificador de cliente: Identificador de aplicación de la entidad de servicio
- Secreto de cliente: Contraseña de la entidad de servicio
- Id. de inquilino: Identificador 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 . Usaremos este identificador en un paso posterior de este artículo.
- Descripción: Es opcional, pero se recomienda.
Instalación de las extensiones Maven y Az CLI Spring-Cloud
La canalización de ejemplo usa Maven para la compilación y Az CLI para la implementación 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-Cloud.
Conéctese al controlador de Jenkins mediante SSH.
Instale Maven.
sudo apt-get install mavenCompruebe 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 jenkinsAgregue la extensión Spring-Cloud:
az extension add --name spring-cloud
Creación de un archivo Jenkinsfile
En su propio repositorio https://github.com/< (su GitHub > /piggymetrics), cree un https://github.com/ en la raíz.
Actualice el archivo de la forma siguiente. Asegúrese de reemplazar los valores de nombre del grupo de recursos y > nombre del >. 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')]) { // login 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-cloud=<service name>' // Deploy applications sh 'az spring-cloud app deploy -n gateway --jar-path ./gateway/target/gateway.jar' sh 'az spring-cloud app deploy -n account-service --jar-path ./account-service/target/account-service.jar' sh 'az spring-cloud 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, haga clic en New Item (Nuevo elemento).
Proporcione un nombre, Deploy-PiggyMetrics, para el trabajo y seleccione Pipeline (Canalización). Haga clic en Aceptar.
Haga clic en la pestaña Pipeline (Canalización) a continuación.
En Definition (Definición), seleccione Pipeline script from SCM (Script de canalización del SCM).
En SCM, seleccione Git.
Escriba la GitHub url del repositorio bifurcado: el identificador de GitHub <> /piggymetrics.git.
Asegúrese de que Branch Specifier (blank for 'any') (Especificador de rama [en blanco para "cualquiera"]) es * /Azure.
Mantenga Script path (Ruta de acceso del script) como Jenkinsfile.
Haga clic en Guardar
Validación y ejecución del trabajo
Antes de ejecutar el trabajo, vamos a actualizar el texto del cuadro de entrada de inicio de sesión a Escriba el id. de inicio de sesión.
En su propio repositorio, abra
index.htmlindex.htmlBusque "enter your login" y actualice el texto a "Escriba el id. de inicio de sesión".
<input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>Confirmación de los cambios
Ejecute el trabajo en Jenkins manualmente. En el panel de Jenkins, haga clic en el trabajo Deploy-PiggyMetrics y en Build Now (Compilar ahora).
Una vez completado el trabajo, vaya a la dirección IP pública de la aplicación gateway 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>