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.

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:

  1. Instale la extensión Azure Spring Apps:

    az extension add --name spring
    
  2. Cree un grupo de recursos para que contenga el servicio Azure Spring Apps:

    az group create --location eastus --name <resource group name>
    
  3. Aprovisione una instancia de Azure Spring Apps:

    az spring create -n <service name> -g <resource group name>
    
  4. 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
    
  5. 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
    
  6. Compile el proyecto:

    cd piggymetrics
    mvn clean package -D skipTests
    
  7. 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>
    
  8. 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
    
  9. 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
    
  10. 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
    
  11. 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

  1. Inicie sesión en el servidor jenkins.

  2. Seleccione Manage Jenkins (Administración de Jenkins).

  3. Seleccione Administrar complementos.

  4. 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.

  5. Para instalar los complementos, seleccione Descargar ahora e instalar después del reinicio.

  6. 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

  1. 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"
    }
    
  2. En el panel de Jenkins, seleccione Credentials (Credenciales)>System(Sistema). A continuación, haga clic en Global credentials(unrestricted) (Credenciales globales [sin restricción]).

  3. Seleccione Add Credentials (Agregar credenciales).

  4. Seleccione el tipo Microsoft Azure Service Principal (Entidad de servicio de Microsoft Azure).

  5. 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.

  1. Conéctese al controlador de Jenkins mediante SSH.

  2. Instale Maven.

    sudo apt-get install maven
    
  3. 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.

  4. Cambie al usuario jenkins:

    sudo su jenkins
    
  5. Instale la extensión spring:

    az extension add --name spring
    

Creación de un archivo Jenkinsfile

  1. En su propio repositorio: https://github.com/your_github_id/piggymetrics cree un archivo Jenkins en la raíz.

  2. 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'
            }
          }
        }
    
  3. Confirme el cambio y guárdelo.

Creación del trabajo

  1. En el panel de Jenkins, seleccione Nuevo elemento.

  2. Proporcione un nombre, Deploy-PiggyMetrics, para el trabajo y seleccione Pipeline (Canalización). Haga clic en OK.

  3. Seleccione la pestaña Canalización.

  4. En Definition (Definición), seleccione Pipeline script from SCM (Script de canalización del SCM).

  5. En SCM, seleccione Git.

  6. Escriba la dirección URL de GitHub para el repositorio bifurcado: https://github.com/&lt;your GitHub id&gt;/piggymetrics.git.

  7. En Especificador de rama (negro para "any"), seleccione /Azure.

  8. En Ruta de acceso de script, seleccione Jenkinsfile.

  9. 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.

  1. En el repositorio, abra index.html en /gateway/src/main/resources/static/.

  2. enter your login Busque y actualice ese texto a enter login ID.

    <input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
    
  3. Confirme el cambio y guárdelo.

  4. 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.

Updated Piggy Metrics

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>

Pasos siguientes