Nasazení aplikace s vlastní imagí kontejneru
Upozornění
Tento článek odkazuje na CentOS, což je linuxová distribuce se stavem Konec životnosti (EOL). Zvažte své použití a odpovídajícím způsobem naplánujte. Další informace najdete v doprovodných materiálech CentOS End Of Life.
Poznámka:
Plány Basic, Standard a Enterprise budou od poloviny března 2025 vyřazeny ze 3letého období vyřazení. Doporučujeme přejít na Azure Container Apps. Další informace najdete v oznámení o vyřazení Azure Spring Apps.
Od 30. září 2024 bude od 30. září 2024 zastaralý plán s úplným vypnutím po šesti měsících. Doporučujeme přejít na Azure Container Apps. Další informace najdete v tématu Migrace spotřeby Azure Spring Apps Úrovně Standard a vyhrazeného plánu do Azure Container Apps.
Tento článek se vztahuje na:✅ Standard ✅ Enterprise
Tento článek vysvětluje, jak nasadit aplikace Spring Boot v Azure Spring Apps pomocí vlastní image kontejneru. Nasazení aplikace s vlastním kontejnerem podporuje většinu funkcí jako při nasazování aplikace JAR. S imagí kontejneru je možné nasadit i jiné aplikace v Javě a jiných aplikacích než Java.
Požadavky
- Image kontejneru obsahující aplikaci.
- Image se nasdílí do registru imagí. Další informace najdete v tématu Azure Container Registry.
Poznámka:
Webová aplikace musí naslouchat na portu 1025
pro plán Standard a na portu 8080
pro plán Enterprise. Způsob, jak změnit port, závisí na rozhraní aplikace. Zadejte například SERVER_PORT=1025
aplikace Spring Boot nebo ASPNETCORE_URLS=http://+:1025/
pro aplikace ASP.NET Core. Sondu můžete zakázat pro aplikace, které na žádném portu nenaslouchají. Další informace najdete v tématu Konfigurace sond stavu a období odkladu ukončení pro aplikace hostované v Azure Spring Apps.
Nasazení aplikace
Pokud chcete nasadit aplikaci do vlastní image kontejneru, postupujte následovně:
K nasazení image kontejneru použijte jeden z následujících příkazů:
Pokud chcete nasadit image kontejneru do veřejného Docker Hubu do aplikace, použijte následující příkaz:
az spring app deploy \ --resource-group <your-resource-group> \ --name <your-app-name> \ --container-image <your-container-image> \ --service <your-service-name>
K nasazení image kontejneru z ACR do aplikace nebo z jiného privátního registru do aplikace použijte následující příkaz:
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>
Pokud chcete přepsat vstupní bod obrázku, přidejte do některého z výše uvedených příkazů následující dva argumenty:
--container-command "java" \
--container-args "-jar /app.jar -Dkey=value"
Pokud chcete zakázat naslouchání na portu obrázků, které nejsou webové aplikace, přidejte do výše uvedených příkazů následující argument:
--disable-probe true
Matice podpory funkcí
Následující matice ukazuje, jaké funkce jsou podporovány v jednotlivých typech aplikací.
Funkce | Spring Boot Apps – nasazení kontejneru | Polyglot Apps – nasazení kontejneru | Notes |
---|---|---|---|
Správa životního cyklu aplikací | ✅ | ✅ | |
Podpora registrů kontejnerů | ✅ | ✅ | |
Přiřazení koncového bodu | ✅ | ✅ | |
Azure Monitor | ✅ | ✅ | |
Integrace APM | ✅ | ✅ | Podporováno ruční instalací. |
Modré/zelené nasazení | ✅ | ✅ | |
Vlastní doména | ✅ | ✅ | |
Škálování – automatické škálování | ✅ | ✅ | |
Škálování – ruční škálování (in/out, up/down) | ✅ | ✅ | |
Spravovaná identita | ✅ | ✅ | |
Spring Cloud Eureka & Config Server | ✅ | ❎ | |
Portál API pro VMware Tanzu | ✅ | ✅ | Jenom plán Enterprise. |
Brána Spring Cloud pro VMware Tanzu | ✅ | ✅ | Jenom plán Enterprise. |
Služba konfigurace aplikací pro VMware Tanzu | ✅ | ❎ | Jenom plán Enterprise. |
Živé zobrazení aplikace pro VMware Tanzu | ✅ | ❎ | Jenom plán Enterprise. |
Registr služeb VMware Tanzu | ✅ | ❎ | Jenom plán Enterprise. |
Virtuální síť | ✅ | ✅ | Přidejte registr pro seznam povolených ve skupině zabezpečení sítě nebo bráně Azure Firewall. |
Odchozí IP adresa | ✅ | ✅ | |
E2E TLS | ✅ | ✅ | Důvěřovat certifikační autoritě podepsané svým držitelem. |
Nastavení aktivity a připravenosti | ✅ | ✅ | |
Pokročilé řešení potíží – výpis stavu vlákna, haldy nebo JFR | ✅ | ❎ | Image musí obsahovat Bash a sadu JDK se zadaným souborem PATH . |
Používání vlastního úložiště | ✅ | ✅ | |
Integrace vazby služby s konektorem prostředků | ✅ | ❎ | |
Zóna dostupnosti | ✅ | ✅ | |
Události životního cyklu aplikace | ✅ | ✅ | |
Zmenšená velikost aplikace – 0,5 vCPU a 512 MB | ✅ | ✅ | |
Automatizace nasazení aplikací pomocí Terraformu | ✅ | ✅ | |
Obnovitelné odstranění | ✅ | ✅ | |
Interaktivní diagnostické prostředí (založené na AppLens) | ✅ | ✅ | |
SLA | ✅ | ✅ |
Poznámka:
Polyglotní aplikace zahrnují aplikace mimo Spring Boot Java, NodeJS, AngularJS, Python a .NET.
Běžné body, o které je potřeba vědět při nasazování s využitím vlastního kontejneru
Následující body vám pomůžou řešit běžné situace při nasazování s vlastní imagí.
Důvěřovat certifikační autoritě
Certifikační autorita může důvěřovat dvěma možnostem:
Možnost 1: Nahrání přes Azure Spring Apps
Pokud chcete do svých aplikací načíst certifikáty certifikační autority, přečtěte si téma Použití certifikátů TLS/SSL ve vaší aplikaci v Azure Spring Apps. Pak se certifikáty připojí do umístění /etc/azure-spring-cloud/certs/public/.
Možnost 2: Ruční instalace v imagi
Pokud chcete certifikační autoritě v imagi důvěřovat, nastavte následující proměnné v závislosti na vašem prostředí:
Aplikace Java musíte importovat do úložiště důvěryhodnosti přidáním následujících řádků do souboru Dockerfile:
ADD EnterpriseRootCA.crt /opt/ RUN keytool -keystore /etc/ssl/certs/java/cacerts -storepass changeit -noprompt -trustcacerts -importcert -alias EnterpriseRootCA -file /opt/EnterpriseRootCA.crt
Pro Node.js aplikace nastavte proměnnou
NODE_EXTRA_CA_CERTS
prostředí:ADD EnterpriseRootCA.crt /opt/ ENV NODE_EXTRA_CA_CERTS="/opt/EnterpriseRootCA.crt"
V případě Pythonu nebo jiných jazyků závislých na systémovém úložišti certifikační autority na imagích Debianu nebo Ubuntu přidejte následující proměnné prostředí:
ADD EnterpriseRootCA.crt /usr/local/share/ca-certificates/ RUN /usr/sbin/update-ca-certificates
V případě Pythonu nebo jiných jazyků závislých na systémovém úložišti certifikační autority přidejte na imagích založených na CentOS nebo Fedora následující proměnné prostředí:
ADD EnterpriseRootCA.crt /etc/pki/ca-trust/source/anchors/ RUN /usr/bin/update-ca-trust
Vyhněte se neočekávanému chování při změně obrázků
Po restartování nebo horizontálním navýšení kapacity aplikace se vždy natáhne nejnovější image. Pokud byla image změněna, nově spuštěné instance aplikace budou používat novou image, zatímco staré instance budou nadále používat starou image.
Poznámka:
latest
Nepoužívejte značku nebo přepište image bez změny značky, abyste se vyhnuli neočekávanému chování aplikace.
Vyhněte se nemožnosti připojit se k registru kontejneru ve virtuální síti
Pokud jste instanci nasadili do virtuální sítě, ujistěte se, že povolíte síťový provoz do registru kontejneru ve skupině zabezpečení sítě nebo bráně Azure Firewall (pokud se používá). Další informace najdete v tématu Odpovědnost zákazníka za spuštění ve virtuální síti a přidejte potřebná pravidla zabezpečení.
Ruční instalace APM do image
Postup instalace se liší v různých monitorováních výkonu aplikací (APM) a jazycích. Následující kroky jsou určené pro New Relic s aplikacemi v Javě. Soubor Dockerfile musíte upravit pomocí následujícího postupu:
Stáhněte a nainstalujte do image soubor agenta přidáním následujícího souboru do souboru Dockerfile:
ADD newrelic-agent.jar /opt/agents/newrelic/java/newrelic-agent.jar
Přidejte proměnné prostředí vyžadované APM:
ENV NEW_RELIC_APP_NAME=appName ENV NEW_RELIC_LICENSE_KEY=newRelicLicenseKey
Upravte vstupní bod obrázku přidáním:
java -javaagent:/opt/agents/newrelic/java/newrelic-agent.jar
Pokud chcete nainstalovat agenty pro jiné jazyky, projděte si oficiální dokumentaci ostatních agentů:
New Relic:
- Python: Instalace agenta Pythonu
- Node.js: Instalace agenta Node.js
Dynatrace:
- Python: Instrumentace aplikací v Pythonu pomocí OpenTelemetry
- Node.js: Instrumentace aplikací Node.js pomocí OpenTelemetry
AppDynamics:
- Python: Instalace agenta Pythonu
- Node.js: Instalace agenta Node.js
Zobrazení protokolů kontejneru
Pokud chcete zobrazit protokoly konzoly vaší aplikace kontejneru, můžete použít následující příkaz rozhraní příkazového řádku:
az spring app logs \
--resource-group <your-resource-group> \
--name <your-app-name> \
--service <your-service-name> \
--instance <your-instance-name>
Pokud chcete zobrazit protokoly událostí kontejneru ze služby Azure Monitor, zadejte dotaz:
AppPlatformContainerEventLogs
| where App == "hw-20220317-1b"
Kontrola ohrožení zabezpečení image
Doporučujeme používat Microsoft Defender for Cloud s ACR, abyste zabránili ohrožení vašich imagí. Další informace najdete v programu Microsoft Defender for Cloud.
Přepínání mezi nasazením JAR a nasazením kontejneru
Typ nasazení můžete přepnout z nasazení JAR na nasazení kontejneru přímo opětovným nasazením pomocí následujícího příkazu:
az spring app deploy \
--resource-group <your-resource-group> \
--name <your-app-name> \
--container-image <your-container-image> \
--service <your-service-name>
Nebo obráceně:
az spring app deploy \
--resource-group <your-resource-group> \
--name <your-app-name> \
--artifact-path <your-jar-file> \
--service <your-service-name>
Vytvoření dalšího nasazení s existujícím nasazením JAR
Pomocí existujícího nasazení JAR můžete vytvořit jiné nasazení pomocí následujícího příkazu:
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
Automatizace nasazení pomocí úloh Azure Pipelines nebo GitHub Actions se teď podporuje. Další informace najdete v tématu Automatizace nasazení aplikací do Azure Spring Apps a použití CI/CD služby Azure Spring Apps s GitHub Actions.