Een toepassing implementeren met een aangepaste containerinstallatiekopieën

Let op

In dit artikel wordt verwezen naar CentOS, een Linux-distributie die de status End Of Life (EOL) nadert. Houd rekening met uw gebruik en plan dienovereenkomstig. Zie de Richtlijnen voor het einde van de levensduur van CentOS voor meer informatie.

Notitie

Azure Spring Apps is de nieuwe naam voor de Azure Spring Cloud-service. Hoewel de service een nieuwe naam heeft, ziet u de oude naam op sommige plaatsen terwijl we werken aan het bijwerken van assets, zoals schermopnamen, video's en diagrammen.

Dit artikel is van toepassing op: ✔️ Standard ✔️ Enterprise

In dit artikel wordt uitgelegd hoe u Spring Boot-toepassingen implementeert in Azure Spring Apps met behulp van een aangepaste containerinstallatiekopie. Het implementeren van een toepassing met een aangepaste container ondersteunt de meeste functies als bij het implementeren van een JAR-toepassing. Andere Java- en niet-Java-toepassingen kunnen ook worden geïmplementeerd met de containerinstallatiekopie.

Vereisten

  • Een containerinstallatiekopie met de toepassing.
  • De installatiekopieën worden naar een installatiekopieënregister gepusht. Zie Azure Container Registry voor meer informatie.

Notitie

De webtoepassing moet luisteren naar de poort 1025 voor het Standard-abonnement en op de poort 8080 voor het Enterprise-abonnement. De manier om de poort te wijzigen, is afhankelijk van het framework van de toepassing. Geef SERVER_PORT=1025 bijvoorbeeld op voor Spring Boot-toepassingen of ASPNETCORE_URLS=http://+:1025/ voor ASP.NET Core-toepassingen. U kunt de test uitschakelen voor toepassingen die niet luisteren op een poort. Zie Statustests en respijtperioden configureren voor apps die worden gehost in Azure Spring Apps voor meer informatie.

Uw toepassing implementeren

Als u een toepassing wilt implementeren in een aangepaste containerinstallatiekopieën, gebruikt u de volgende stappen:

Gebruik een van de volgende opdrachten om een containerinstallatiekopieën te implementeren:

  • Als u een containerinstallatiekopieën wilt implementeren in de openbare Docker Hub naar een app, gebruikt u de volgende opdracht:

    az spring app deploy \
       --resource-group <your-resource-group> \
       --name <your-app-name> \
       --container-image <your-container-image> \
       --service <your-service-name>
    
  • Gebruik de volgende opdracht om een containerinstallatiekopieën van ACR te implementeren in een app of vanuit een ander privéregister naar een app:

    az spring app deploy \
       --resource-group <your-resource-group> \
       --name <your-app-name> \
       --container-image <your-container-image> \
       --service <your-service-name>
       --container-registry <your-container-registry> \
       --registry-password <your-password> |
       --registry-username <your-username>
    

Als u het toegangspunt van de afbeelding wilt overschrijven, voegt u de volgende twee argumenten toe aan een van de bovenstaande opdrachten:

    --container-command "java" \
    --container-args "-jar /app.jar -Dkey=value"

Als u het luisteren op een poort wilt uitschakelen voor afbeeldingen die geen webtoepassingen zijn, voegt u het volgende argument toe aan de bovenstaande opdrachten:

    --disable-probe true

Matrix voor functieondersteuning

In de volgende matrix ziet u welke functies in elk toepassingstype worden ondersteund.

Functie Spring Boot-apps - containerimplementatie Polyglot-apps - containerimplementatie Opmerkingen
Beheer van de levenscyclus van apps ✔️ ✔️
Ondersteuning voor containerregisters ✔️ ✔️
Eindpunt toewijzen ✔️ ✔️
Azure Monitor ✔️ ✔️
APM-integratie ✔️ ✔️ Ondersteund door handmatige installatie.
Blauw/groen implementatie ✔️ ✔️
Aangepast domein ✔️ ✔️
Schalen - automatisch schalen ✔️ ✔️
Schalen - handmatig schalen (in/uit, omhoog/omlaag) ✔️ ✔️
Beheerde identiteit ✔️ ✔️
Spring Cloud Eureka & Config-server ✔️
API-portal voor VMware Tanzu ✔️ ✔️ Alleen Enterprise-abonnement.
Spring Cloud Gateway voor VMware Tanzu ✔️ ✔️ Alleen Enterprise-abonnement.
Toepassingsconfiguratieservice voor VMware Tanzu ✔️ Alleen Enterprise-abonnement.
Application Live View voor VMware Tanzu ✔️ Alleen Enterprise-abonnement.
VMware Tanzu-serviceregister ✔️ Alleen Enterprise-abonnement.
VNET ✔️ ✔️ Voeg register toe aan acceptatielijst in NSG of Azure Firewall.
Uitgaand IP-adres ✔️ ✔️
E2E TLS ✔️ ✔️ Vertrouw een zelfondertekende CA.
Instellingen voor leven en gereedheid ✔️ ✔️
Geavanceerde probleemoplossing - thread/heap/JFR-dump ✔️ De installatiekopieën moeten Bash en de JDK bevatten met PATH de opgegeven waarde.
Uw eigen opslag meenemen ✔️ ✔️
Servicebinding integreren met Resource Verbinding maken or ✔️
Beschikbaarheidszone ✔️ ✔️
Gebeurtenissen voor de levenscyclus van apps ✔️ ✔️
Kleinere app-grootte - 0,5 vCPU en 512 MB ✔️ ✔️
App-implementaties automatiseren met Terraform ✔️ ✔️
Voorlopig verwijderen ✔️ ✔️
Interactieve diagnostische ervaring (op basis van AppLens) ✔️ ✔️
SLA ✔️ ✔️

Notitie

Polyglot-apps zijn niet-Spring Boot Java, NodeJS, AngularJS, Python en .NET-apps.

Veelvoorkomende punten waar u rekening mee moet houden bij het implementeren met een aangepaste container

De volgende punten helpen u veelvoorkomende situaties aan te pakken bij het implementeren met een aangepaste installatiekopieën.

Een certificeringsinstantie vertrouwen

Er zijn twee opties om een certificeringsinstantie te vertrouwen:

Optie 1: Uploaden via Azure Spring Apps

Als u de CA-certificaten in uw apps wilt laden, raadpleegt u TLS/SSL-certificaten gebruiken in uw toepassing in Azure Spring Apps. Vervolgens worden de certificaten gekoppeld aan de locatie /etc/azure-spring-cloud/certs/public/.

Optie 2: Handmatige installatie in de installatiekopieën

Als u een CA in de afbeelding wilt vertrouwen, stelt u de volgende variabelen in, afhankelijk van uw omgeving:

  • U moet Java-toepassingen importeren in het vertrouwensarchief door de volgende regels toe te voegen aan uw Dockerfile:

    ADD EnterpriseRootCA.crt /opt/
    RUN keytool -keystore /etc/ssl/certs/java/cacerts -storepass changeit -noprompt -trustcacerts -importcert -alias EnterpriseRootCA -file /opt/EnterpriseRootCA.crt
    
  • Stel voor Node.js toepassingen de NODE_EXTRA_CA_CERTS omgevingsvariabele in:

    ADD EnterpriseRootCA.crt /opt/
    ENV NODE_EXTRA_CA_CERTS="/opt/EnterpriseRootCA.crt"
    
  • Voor Python of andere talen die afhankelijk zijn van het systeem-CA-archief, op Debian- of Ubuntu-installatiekopieën, voegt u de volgende omgevingsvariabelen toe:

    ADD EnterpriseRootCA.crt /usr/local/share/ca-certificates/
    RUN /usr/sbin/update-ca-certificates
    
  • Voor Python of andere talen die afhankelijk zijn van het systeem-CA-archief, voegt u op CentOS- of Fedora gebaseerde installatiekopieën de volgende omgevingsvariabelen toe:

    ADD EnterpriseRootCA.crt /etc/pki/ca-trust/source/anchors/
    RUN /usr/bin/update-ca-trust
    

Onverwacht gedrag voorkomen wanneer afbeeldingen worden gewijzigd

Wanneer uw toepassing opnieuw wordt opgestart of uitgeschaald, wordt de meest recente installatiekopie altijd opgehaald. Als de installatiekopieën zijn gewijzigd, gebruiken de zojuist gestarte toepassingsexemplaren de nieuwe installatiekopieën terwijl de oude exemplaren de oude installatiekopieën blijven gebruiken.

Notitie

Vermijd het gebruik van de latest tag of overschrijf de afbeelding zonder een tagwijziging om onverwacht toepassingsgedrag te voorkomen.

Voorkom dat er geen verbinding kan worden gemaakt met het containerregister in een VNet

Als u het exemplaar hebt geïmplementeerd in een VNet, moet u ervoor zorgen dat het netwerkverkeer naar uw containerregister in de NSG of Azure Firewall wordt toegestaan (indien gebruikt). Zie Klantverantwoordelijkheden voor uitvoering in VNet voor meer informatie om de benodigde beveiligingsregels toe te voegen.

Een APM handmatig in de installatiekopieën installeren

De installatiestappen verschillen per toepassingsprestatiemonitor (APM's) en talen. De volgende stappen zijn bedoeld voor New Relic met Java-toepassingen. U moet het Dockerfile wijzigen met behulp van de volgende stappen:

  1. Download en installeer het agentbestand in de installatiekopieën door het volgende toe te voegen aan het Dockerfile:

    ADD newrelic-agent.jar /opt/agents/newrelic/java/newrelic-agent.jar
    
  2. Voeg de omgevingsvariabelen toe die vereist zijn voor de APM:

    ENV NEW_RELIC_APP_NAME=appName
    ENV NEW_RELIC_LICENSE_KEY=newRelicLicenseKey
    
  3. Pas het invoerpunt van de afbeelding aan door het volgende toe te voegen: java -javaagent:/opt/agents/newrelic/java/newrelic-agent.jar

Raadpleeg de officiële documentatie voor de andere agents om de agents voor andere talen te installeren:

New Relic:

Dynatrace:

AppDynamics:

De containerlogboeken bekijken

Als u de consolelogboeken van uw containertoepassing wilt weergeven, kunt u de volgende CLI-opdracht gebruiken:

az spring app logs \
    --resource-group <your-resource-group> \
    --name <your-app-name> \
    --service <your-service-name> \
    --instance <your-instance-name>

Voer de query in om de logboeken van container gebeurtenissen van Azure Monitor weer te geven:

AppPlatformContainerEventLogs
| where App == "hw-20220317-1b"

Schermopname van Azure Monitor waarin het logboek met container gebeurtenissen wordt weergegeven.

Uw installatiekopieën scannen op beveiligingsproblemen

U wordt aangeraden Microsoft Defender voor Cloud te gebruiken met ACR om te voorkomen dat uw afbeeldingen kwetsbaar zijn. Zie Microsoft Defender voor Cloud voor meer informatie

Schakelen tussen JAR-implementatie en containerimplementatie

U kunt het implementatietype rechtstreeks overschakelen van JAR-implementatie naar containerimplementatie door opnieuw te implementeren met behulp van de volgende opdracht:

az spring app deploy \
    --resource-group <your-resource-group> \
    --name <your-app-name> \
    --container-image <your-container-image> \
    --service <your-service-name>

Of omgekeerd:

az spring app deploy \
    --resource-group <your-resource-group> \
    --name <your-app-name> \
    --artifact-path <your-jar-file> \
    --service <your-service-name>

Een andere implementatie maken met een bestaande JAR-implementatie

U kunt een andere implementatie maken met behulp van een bestaande JAR-implementatie met behulp van de volgende opdracht:

az spring app deployment create \
    --resource-group <your-resource-group> \
    --name <your-deployment-name> \
    --app <your-app-name> \
    --container-image <your-container-image> \
    --service <your-service-name>

CI/CD

Het automatiseren van implementaties met behulp van Azure Pipelines Tasks of GitHub Actions wordt nu ondersteund. Zie Toepassingsimplementaties automatiseren in Azure Spring Apps en Azure Spring Apps CI/CD gebruiken met GitHub Actions voor meer informatie

Volgende stappen