Sdílet prostřednictvím


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, Standarda Enterprise vstoupily do důchodového období 17. března 2025. Další informace najdete v oznámení o vyřazení Azure Spring Apps.

Plán Standardní spotřeba a vyhrazený plán vstoupily do fáze vyřazování dne 30. září 2024 s úplným vypnutím do konce března 2025. Další informace najdete v tématu Migrace spotřebního plánu a vyhrazeného plánu úroveň Standard pro Azure Spring Apps 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.
  • Obraz je nahrán do registru obrázků. 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 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"

Chcete-li zakázat naslouchání na portu pro obrazy, které nejsou webovými aplikacemi, 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 Poznámky
Správa životního cyklu aplikací
Podpora registrů kontejnerů
Přiřadit koncový bod
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í – manuální škálování (zvětšení/zmenšení, nahoru/dolů)
Spravovaná identita
Spring Cloud Eureka & Config Server
Portál API pro VMware Tanzu Pouze Enterprise plán.
Brána Spring Cloud pro VMware Tanzu Pouze plán Enterprise.
Služba konfigurace aplikací pro VMware Tanzu Pouze Enterprise plán.
Živé zobrazení aplikace pro VMware Tanzu Jenom plán Enterprise.
Registr služeb VMware Tanzu Pouze plán Enterprise.
VNET 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 samopodepsané certifikační autoritě.
Nastavení živosti 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 .
Přineste si vlastní úložiště
Integrace napojení služby se zdrojovým konektorem
Zóna dostupnosti
Události životního cyklu aplikace
Zmenšená velikost aplikace – 0,5 vCPU a 512 MB
Automatizace nasazení aplikací pomocí Terraformu
Dočasné odstranění
Interaktivní diagnostické prostředí (založené na AppLens)
Smlouva o úrovni poskytovaných služeb (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ě

Existují dvě možnosti, jak důvěřovat certifikační autoritě:

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 obrazu

Aby bylo možné důvěřovat certifikační autoritě v imagu, 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 stáhne nejnovější obraz. 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:

Vyhněte se použití značky latest nebo přepisu obrázku 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á). Pro více informací se podívejte na Odpovědnost zákazníka za spuštění ve virtuální síti, abychom mohli přidat potřebná pravidla zabezpečení.

Nainstalujte ručně APM do obrazu.

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:

  1. 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
    
  2. Přidejte proměnné prostředí vyžadované APM:

    ENV NEW_RELIC_APP_NAME=appName
    ENV NEW_RELIC_LICENSE_KEY=newRelicLicenseKey
    
  3. 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:

Dynatrace:

AppDynamics:

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"

Snímek obrazovky služby Azure Monitor, který zobrazuje protokol událostí kontejneru

Prohledejte svou image na zranitelnosti

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řte další nasazení se stávají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.

Další kroky