Een toepassing implementeren met een aangepaste containerinstallatiekopieën
Let op
Dit artikel verwijst naar CentOS, een Linux-distributie met de EOL-status (End Of Life). Houd rekening met uw gebruik en plan dienovereenkomstig. Zie de Richtlijnen voor het einde van de levensduur van CentOS voor meer informatie.
Notitie
De Basic-, Standard- en Enterprise-abonnementen worden afgeschaft vanaf medio maart 2025, met een pensioenperiode van 3 jaar. We raden u aan om over te stappen naar Azure Container Apps. Zie de aankondiging over buitengebruikstelling van Azure Spring Apps voor meer informatie.
Het standaardverbruik en het speciale abonnement worden vanaf 30 september 2024 afgeschaft, met een volledige afsluiting na zes maanden. We raden u aan om over te stappen naar Azure Container Apps. Zie Azure Spring Apps Standard-verbruik en toegewezen abonnement migreren naar Azure Container Apps voor meer informatie.
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 Connector | ✔️ | ❌ | |
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:
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
Voeg de omgevingsvariabelen toe die vereist zijn voor de APM:
ENV NEW_RELIC_APP_NAME=appName ENV NEW_RELIC_LICENSE_KEY=newRelicLicenseKey
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:
- Python: De Python-agent installeren
- Node.js: de Node.js-agent installeren
Dynatrace:
- Python: Python-toepassingen instrumenteren met OpenTelemetry
- Node.js: Instrument Node.js-toepassingen met OpenTelemetry
AppDynamics:
- Python: De Python-agent installeren
- Node.js: de Node.js-agent installeren
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"
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