Condividi tramite


Esercitazione: connettersi a Eureka Server gestito per Spring in App contenitore di Azure (anteprima)

Eureka Server gestito per Spring è un registro di servizi che consente ai microservizi di registrarsi e individuare altri servizi. Disponibile come componente di App contenitore di Azure, è possibile associare la propria app contenitore a Eureka Server gestito per Spring per la registrazione automatica con il server Eureka.

Questa esercitazione apprendi come:

  • Creare un componente Java di Eureka Server per Spring
  • Associare l'app contenitore al componente Java di Eureka Server per Spring

Importante

Questa esercitazione usa i servizi che possono influire sulla fattura di Azure. Se si decide di seguire la procedura dettagliata, assicurarsi di eliminare le risorse in primo piano in questo articolo per evitare la fatturazione imprevista.

Prerequisiti

Per completare il progetto, sono necessari gli elementi seguenti:

Requisito Istruzioni
Account di Azure È necessaria una sottoscrizione attiva. Se non hai un account, puoi crearlo gratuitamente.
Interfaccia della riga di comando di Azure Installare l'interfaccia della riga di comando di Azure.

Considerazioni

Quando si esegue Eureka Server per Spring in App contenitore di Azure, si tengano presenti i dettagli seguenti:

Articolo Spiegazione
Scope Il componente di Eureka Server per Spring viene eseguito nello stesso ambiente dell'app contenitore connessa.
Ridimensionamento Eureka Server per Spring non può essere ridimensionato. Le proprietà di ridimensionamento minReplicas e maxReplicas sono entrambe impostate su 1.
Risorse L'allocazione delle risorse del contenitore per Eureka Server per Spring è fissa. Il numero di core CPU è 0,5 e la dimensione della memoria è 1 Gi.
Prezzi La fatturazione di Eureka Server per Spring rientra nei prezzi basati sul consumo. Le risorse utilizzate dai componenti Java gestiti vengono fatturate in base alle tariffe attive/inattive. È possibile eliminare i componenti che non sono più in uso per interrompere la fatturazione.
Binding Le app contenitore si connettono a un componente di Eureka Server per Spring tramite un'associazione. Le associazioni inseriscono le configurazioni nelle variabili di ambiente dell'app contenitore. Dopo aver stabilito un'associazione, l'app contenitore può leggere i valori di configurazione dalle variabili di ambiente e connettersi a Eureka Server per Spring.

Attrezzaggio

Prima di iniziare a lavorare con Eureka Server per Spring, occorre innanzitutto creare le risorse necessarie.

Eseguire i comandi seguenti per creare il gruppo di risorse, l'ambiente di App contenitore.

  1. Creare le variabili per supportare la configurazione dell'applicazione. Questi valori vengono forniti ai fini dello svolgimento di questa lezione.

    export LOCATION=eastus
    export RESOURCE_GROUP=my-services-resource-group
    export ENVIRONMENT=my-environment
    export EUREKA_COMPONENT_NAME=eureka
    export APP_NAME=my-eureka-client
    export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-service-eureka-client:latest"
    
    Variabile Descrizione
    LOCATION Posizione dell'area di Azure in cui si creano l'app contenitore e il componente Java.
    ENVIRONMENT Nome dell'ambiente di App contenitore di Azure per l'applicazione demo.
    RESOURCE_GROUP Nome del gruppo di risorse di Azure per l'applicazione demo.
    EUREKA_COMPONENT_NAME Nome del componente Java creato per l'app contenitore. In questo caso, creare un componente Java di Eureka Server per Spring.
    IMAGE Immagine del contenitore usata nell'app contenitore.
  2. Accedere ad Azure con l'interfaccia della riga di comando di Azure.

    az login
    
  3. Creare un gruppo di risorse.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  4. Creare l'ambiente nelle app contenitore.

    az containerapp env create \
      --name $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --location $LOCATION
    

Creare il componente Java di Eureka Server per Spring

Ora che si dispone di un ambiente esistente, è possibile creare l'app contenitore e associarla a un'istanza del componente Java di Eureka Server per Spring.

  1. Creare il componente Java per Eureka Server per Spring.

    az containerapp env java-component eureka-server-for-spring create \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $EUREKA_COMPONENT_NAME
    
  2. Facoltativo: aggiornare la configurazione del componente Java per Eureka Server per Spring.

    az containerapp env java-component eureka-server-for-spring update \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $EUREKA_COMPONENT_NAME 
      --configuration eureka.server.renewal-percent-threshold=0.85 eureka.server.eviction-interval-timer-in-ms=10000
    

Associare l'app contenitore al componente Java di Eureka Server per Spring

  1. Creare l'app contenitore e associarla a Eureka Server per Spring.

    az containerapp create \
      --name $APP_NAME \
      --resource-group $RESOURCE_GROUP \
      --environment $ENVIRONMENT \
      --image $IMAGE \
      --min-replicas 1 \
      --max-replicas 1 \
      --ingress external \
      --target-port 8080 \
      --bind $EUREKA_COMPONENT_NAME \
      --query properties.configuration.ingress.fqdn
    

Copiare l'URL dell’app in un editor di testo in modo da poterlo usare in un passaggio successivo.

Tornare all'app contenitore nel portale e copiare l'URL dell'app in un editor di testo in modo da poterlo usare in un passaggio successivo.

Passare al percorso /allRegistrationStatus per visualizzare tutte le applicazioni registrate con Eureka Server for Spring.

L'associazione inserisce diverse configurazioni nell'applicazione come variabili ambiente, principalmente la proprietà eureka.client.service-url.defaultZone. Questa proprietà indica l'endpoint interno del componente Java di Eureka Server.

L'associazione inserisce anche le proprietà seguenti:

"eureka.client.register-with-eureka":    "true"
"eureka.client.fetch-registry":          "true"
"eureka.instance.prefer-ip-address":     "true"

La proprietà eureka.client.register-with-eureka è impostata su true per applicare la registrazione al server Eureka. Questa registrazione sovrascrive l'impostazione locale in application.properties, dal server di configurazione e in poi. Se si vuole impostarlo su false, è possibile sovrascriverlo impostando una variabile di ambiente nell'app contenitore.

eureka.instance.prefer-ip-address è impostato su true a causa della regola di risoluzione DNS specifica nell'ambiente dell'app contenitore. Non modificare questo valore in modo da non interrompere l'associazione.

Annullare l'associazione dell'app contenitore dal componente Java di Eureka Server for Spring

Per rimuovere un'associazione da un'app contenitore, usare l'opzione --unbind.

  az containerapp update \
    --name $APP_NAME \
    --unbind $JAVA_COMPONENT_NAME \
    --resource-group $RESOURCE_GROUP

Esaminare l'applicazione tramite il dashboard

Importante

Per visualizzare il dashboard, è necessario che all'account sia assegnato almeno il ruolo Microsoft.App/managedEnvironments/write nella risorsa ambiente gestita. È possibile assegnare in modo esplicito il ruolo Owner o Contributor nella risorsa oppure seguire la procedura per creare una definizione del ruolo personalizzata e assegnarla all'account.

  1. Creare la definizione del ruolo personalizzata.

    az role definition create --role-definition '{
        "Name": "<YOUR_ROLE_NAME>",
        "IsCustom": true,
        "Description": "Can access managed Java Component dashboards in managed environments",
        "Actions": [
            "Microsoft.App/managedEnvironments/write"
        ],
        "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"]
    }'
    

    Assicurarsi di sostituire il segnaposto tra le parentesi <> nel valore AssignableScopes con l'ID sottoscrizione in uso.

  2. Assegnare il ruolo personalizzato all'account nella risorsa ambiente gestita.

    Ottenere l'ID risorsa dell'ambiente gestito:

        export ENVIRONMENT_ID=$(az containerapp env show \
         --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ 
         --query id -o tsv)
    
  3. Assegnare il ruolo all'account.

    Prima di eseguire questo comando, sostituire il segnaposto tra le parentesi <> con l'ID dell'entità servizio o dell'utente.

    az role assignment create \
      --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \
      --role "<ROLE_NAME>" \
      --scope $ENVIRONMENT_ID
    

    Nota

    <USER_OR_SERVICE_PRINCIPAL_ID> in genere deve essere l'identità usata per accedere al portale di Azure. <ROLE_NAME> è il nome assegnato nel passaggio 1.

  4. Ottenere l'URL del dashboard di Eureka Server per Spring.

    az containerapp env java-component eureka-server-for-spring show \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $EUREKA_COMPONENT_NAME \
      --query properties.ingress.fqdn -o tsv
    

    Questo comando restituisce l'URL che è possibile usare per accedere al dashboard di Eureka Server per Spring. Tramite il dashboard, l'app contenitore è disponibile anche come illustrato nello screenshot seguente.

Screenshot del dashboard di Eureka Server per Spring.

Facoltativo: integrare i componenti Java per Eureka Server per Spring e Amministrazione per Spring

Per integrare i componenti Java per Eureka Server per Spring e Amministrazione per Spring, vedere Integrare l'Amministrazione gestita per Spring con Eureka Server per Spring.

Pulire le risorse

Le risorse create in questa esercitazione hanno effetto sulla fattura di Azure. Se non si intende usare questi servizi a lungo termine, eseguire il comando seguente per rimuovere tutti gli elementi creati in questa esercitazione.

az group delete \
  --resource-group $RESOURCE_GROUP

Passaggi successivi