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.

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:

  1. Instale la extensión de Azure Spring Cloud:

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

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

    az spring-cloud 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-cloud 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-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>
    
  8. 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.jar
    
  9. Asigne 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 true
    
  10. Consulte 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 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. Elija Manage Jenkins Manage Plugins (Administrar complementos de administración de Jenkins).

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

  3. Para instalar los complementos, elija Download now and install after restart (Descargar ahora e instalar después de reiniciar).

  4. 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 Sistema decredenciales. 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
    • 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.

  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. Agregue la extensión Spring-Cloud:

    az extension add --name spring-cloud
    

Creación de un archivo Jenkinsfile

  1. En su propio repositorio https://github.com/< (su GitHub > /piggymetrics), cree un https://github.com/ en la raíz.

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

Creación del trabajo

  1. En el panel de Jenkins, haga clic en New Item (Nuevo elemento).

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

  3. Haga clic en la pestaña Pipeline (Canalización) a continuació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 GitHub url del repositorio bifurcado: el identificador de GitHub <> /piggymetrics.git.

  7. Asegúrese de que Branch Specifier (blank for 'any') (Especificador de rama [en blanco para "cualquiera"]) es * /Azure.

  8. Mantenga Script path (Ruta de acceso del script) como Jenkinsfile.

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

  1. En su propio repositorio, abra index.htmlindex.html

  2. Busque "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"/>
    
  3. Confirmación de los cambios

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

PiggyMetrics 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>

Pasos siguientes