Nasazení aplikace s vlastní imagí kontejneru

Upozornění

Tento článek odkazuje na CentOS, linuxovou distribuci, která se blíží stavu 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:

Azure Spring Apps je nový název služby Azure Spring Cloud. Přestože má služba nový název, na některých místech uvidíte starý název, protože pracujeme na aktualizaci prostředků, jako jsou snímky obrazovky, videa a diagramy.

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 Připojení orem 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:

  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

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.

Další kroky