Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nuDen här webbläsaren stöds inte längre.
Uppgradera till Microsoft Edge och dra nytta av de senaste funktionerna och säkerhetsuppdateringarna, samt teknisk support.
I den här guiden förklarar vi vad du behöver veta när du ska migrera ett befintligt WebSphere-program som ska köras på WildFly i en Azure Kubernetes Service-container.
För att säkerställa en lyckad migrering slutför du de utvärderings- och inventeringssteg som beskrivs i följande avsnitt innan du börjar.
Dokumentera maskinvaran (minne, CPU, disk) för de aktuella produktionsservrarna och det genomsnittliga och högsta antalet begäranden och resursanvändningen. Du behöver denna information oavsett vilken migrerings väg du väljer. Det är till exempel användbart att hjälpa dig att välja storlek på de virtuella datorerna i nodpoolen, mängden minne som ska användas av containern och hur många CPU-resurser containern behöver.
Det går att ändra storlek på nodpooler i AKS. Mer information finns i Ändra storlek på nodpooler i Azure Kubernetes Service (AKS).
Kontrollera alla egenskaper och konfigurationsfiler på produktionsservrarna efter hemligheter och lösenord. Kontrollera ibm-web-bnd.xml i dina WAR-filer. Konfigurationsfiler som innehåller lösenord eller autentiseringsuppgifter kan också finnas i ditt program.
Dokumentera alla certifikat som används för offentliga SSL-slutpunkter. Du kan visa alla certifikat på produktionsservrarna genom att köra följande kommando:
keytool -list -v -keystore <path to keystore>
Användning av WildFly på Azure Kubernetes Service kräver en specifik version av Java, så du måste bekräfta att programmet körs korrekt med den version som stöds.
Anteckning
Den här verifieringen är särskilt viktig om den aktuella servern körs på en JDK som inte stöds (till exempel Oracle JDK eller IBM OpenJ9).
Du får den aktuella Java-versionen genom att logga in på din produktionsserver och köra följande kommando:
java -version
I Krav finns information om vilken version du ska använda för att köra WildFly.
Inventera alla JNDI-resurser. Vissa asynkrona JMS-meddelandetjänster kan kräva migrering eller omkonfiguration.
Inspektera filen WEB-INF/ibm-web-bnd.xml och/eller WEB-INF/web.xml.
Om ditt program använder några databaser måste du samla in följande information:
Mer information finns i avsnittet om att konfigurera databasanslutningar i WebSphere-dokumentationen.
All användning av programserverns filsystem kräver omkonfiguration eller, i sällsynta fall, arkitektoniska ändringar. Filsystemet kan användas av WebSphere-moduler eller av din programkod. Du kanske identifierar några eller alla scenarier som beskrivs i följande avsnitt.
Om ditt program för tillfället hanterar statiskt innehåll behöver du en alternativ plats för det. Du kanske kan tänka dig att flytta det statiska innehållet till Azure Blob Storage och lägga till Azure CDN för blixtsnabba nedladdningar globalt. Mer information finns i Värd för statiska webbplatser i Azure Storage och snabbstart: Integrera ett Azure Storage-konto med Azure CDN.
Om ditt program tillåter att statiskt innehåll laddas upp/skapas av ditt program, men inte kan ändras efter att det har skapats, så kan du använda Azure Blob Storage och Azure CDN enligt beskrivningen ovan, med en Azure-funktion för hantering av överföringar och CDN-uppdateringar. Vi har tillhandahållit en exempelimplementering som du kan använda i Överföra och CDN-för inläsa statiskt innehåll med Azure Functions.
För filer som ofta skrivs och läses av ditt program (till exempel temporära datafiler) eller statiska filer som endast är synliga för ditt program kan du montera Azure Storage-resurser som beständiga volymer. Mer information finns i Skapa och använda en volym med Azure Files i Azure Kubernetes Service (AKS).
Schemalagda jobb, till exempel Quartz Scheduler-uppgifter eller Unix cron-jobb, ska INTE användas med Azure Kubernetes Service (AKS). Azure Kubernetes Service förhindrar att du distribuerar ett program som innehåller schemalagda uppgifter internt. Om ditt program skalas ut kan dock samma schemalagda jobb köras mer än en gång per schemalagd period. Den här situationen kan leda till oönskade konsekvenser.
Om du vill köra schemalagda jobb på ditt AKS-kluster definierar du Kubernetes CronJobs efter behov. Mer information finns i Köra automatiserade uppgifter med ett CronJob.
Om ditt program behöver har åtkomst till någon av dina lokala tjänster måste du etablera en av Azures anslutningstjänster. Mer information finns i Ansluta ett lokalt nätverk till Azure. Alternativt måste du omstrukturera programmet för att använda allmänt tillgängliga API:er som dina lokala resurser exponerar.
Om ditt program använder JMS-köer eller -ämnen måste du migrera dem till en extern JMS-server. Azure Service Bus och AMQP (Advanced Message Queueing Protocol) kan vara en bra migreringsstrategi för de som använder JMS. Mer information finns i Använda Java Message Service 1.1 med Azure Service Bus Standard och AMQP 1.0.
Om JMS beständiga arkiv har konfigurerats måste du avbilda konfigurationen och tillämpa den efter migreringen.
Om ditt program använder WebSphere-specifika API:er måste du omstrukturera det för att ta bort dessa beroenden. Om du till exempel har använt en klass som nämns i specifikationen för version 9.0 av API:et för IBM WebSphere Application Server använder ditt program ett WebSphere-specifikt API.
Om programmet använder entitetsbönor eller CMP-böner med EJB 2.x-format behöver du omstrukturera programmet och ta bort dessa beroenden.
Om du har klientprogram som ansluter till (server)programmet med hjälp av Java EE Application Client-funktionen måste du omstrukturera både klientprogrammen och (server)programmet så att det använder HTTP-API:er.
Om ditt program innehåller någon kod med beroenden på värdoperativsystemet måste du omstrukturera det för att ta bort dessa beroenden. Du kan till exempel behöva ersätta all användning av /
eller \
i filsystemsökvägar med File.Separator
eller Paths.get
om programmet körs i Windows.
Om programmet använder EJB-timers måste du validera att EJB-timerkoden kan utlösas av varje WildFly-instans separat. Denna verifiering behövs eftersom varje EJB-timer, i Azure Kubernetes Service-distributionsscenariot, utlöses på sin egen WildFly-instans.
Om ditt program använder JCA-anslutningsprogram måste du kontrollera att JCA-anslutningen kan användas med WildFly. Om JCA-implementeringen är kopplad till WebSphere måste du omstrukturera programmet för att ta bort beroendet. Om det kan användas måste du lägga till JAR-filer till klassökvägen för servern och placera nödvändiga konfigurationsfiler på rätt plats i WildFly-serverkatalogerna.
Om ditt program använder JAAS måste du avbilda hur JAAS har konfigurerats. Om en databas används kan du konvertera den till en JAAS-domän på WildFly. Om det är en anpassad implementering måste du verifiera att den kan användas på WildFly.
Om programmet behöver en resursadapter måste den vara kompatibel med WildFly. Ta reda på om resursadaptern fungerar som den ska på en fristående instans av WildFly genom att distribuera den till en server och konfigurera den på rätt sätt. Om resursadaptern fungerar som den ska måste du lägga till JAR-filer till serverklassökvägen för Docker-avbildningen och placera nödvändiga konfigurationsfiler på rätt plats i WildFly-serverkatalogerna.
Om ditt program består av flera WAS så ska du behandla vart och ett av dem som separarata program och gå igenom den här guiden för varje.
Om ditt program är paketerat som en EAR-fil kontrollerar du filerna application.xml och application-bnd.xml och avbildar deras konfigurationer.
Anteckning
Om du vill kunna skala var och en av dina webbprogram oberoende av varandra för bättre användning av dina Azure Kubernetes Service-resurser (AKS) bör du dela upp EAR i separata webbprogram.
Om du har processer som körs utanför programservern, som övervaknings-daemons så behöver du eliminera dem eller migrera dem någon annanstans.
Innan du skapar containeravbildningar ska du migrera ditt program till de JDK- och WildFly-versioner som du tänker använda på AKS. Testa programmet noggrant för att säkerställa kompatibilitet och prestanda.
Använd följande kommandon till att skapa ett containerregister och ett Azure Kubernetes-kluster med ett tjänsthuvudnamn som har läsarroll i registret. Se till att välja en lämplig nätverksmodell för klustrets nätverkskrav.
az group create \
--resource-group $resourceGroup \
--location eastus
az acr create \
--resource-group $resourceGroup \
--name $acrName \
--sku Standard
az aks create \
--resource-group $resourceGroup \
--name $aksName \
--attach-acr $acrName \
--network-plugin azure
Du behöver följande för att skapa en Dockerfile:
Du kan sedan utföra stegen som beskrivs i följande avsnitt, där det är tillämpligt. Du kan använda lagringsplatsen för WildFly-containersnabbstart som utgångspunkt för din Dockerfile och webbprogram.
Skapa ett Azure-valv och fyll i alla nödvändiga hemligheter. Mer information finns i Snabbstart: Ange och hämta en hemlighet från Azure Key Vault med hjälp av Azure CLI. Konfigurera sedan ett FlexVolume-nyckelvalv för att göra dessa hemligheter tillgängliga för poddar.
Du behöver också uppdatera startskriptet som används för bootstrap av WildFly. Det här skriptet måste importera certifikaten till nyckelarkivet som används av WildFly innan du startar servern.
Om du vill konfigurera WildFly för åtkomst till en datakälla behöver du lägga till JDBC-drivrutinens JAR-fil till Docker-avbildningen och sedan köra lämpliga JBoss CLI-kommandon. Dessa kommandon måste konfigurera datakällan när du skapar Docker-avbildningen.
I följande steg ges instruktioner för PostgreSQL, MySQL och SQL Server.
Ladda ned JDBC-drivrutinen för PostgreSQL, MySQL eller SQL Server.
Packa upp nedladdningsarkivet för att hämta drivrutinens .jar -fil.
Skapa en fil med ett namn som module.xml
och lägg till följande markering. Ersätt platshållaren <module name>
(inklusive vinkelparenteser) med org.postgres
för PostgreSQL, com.mysql
för MySQL eller com.microsoft
för SQL Server. Ersätt <JDBC .jar file path>
med namnet på .jar-filen från de föregående steget, inklusive den fullständiga sökvägen till den plats där du vill placera filen i Docker-avbildningen, till exempel i /opt/database
.
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="<module name>">
<resources>
<resource-root path="<JDBC .jar file path>" />
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
Skapa en fil med ett namn som datasource-commands.cli
och lägg till följande kod. Ersätt <JDBC .jar file path>
med värdet du använde i det föregående steget. Ersätt <module file path>
med filnamnet och sökvägen från det föregående steget, till exempel /opt/database/module.xml
.
Anteckning
Microsoft rekommenderar att du använder det säkraste tillgängliga autentiseringsflödet. Det autentiseringsflöde som beskrivs i den här proceduren, till exempel för databaser, cacheminnen, meddelanden eller AI-tjänster, kräver en mycket hög grad av förtroende för programmet och medför risker som inte finns i andra flöden. Använd endast det här flödet när säkrare alternativ, till exempel hanterade identiteter för lösenordslösa eller nyckellösa anslutningar, inte är genomförbara. För lokala datoråtgärder föredrar du användaridentiteter för lösenordslösa eller nyckellösa anslutningar.
batch
module add --name=org.postgres --resources=<JDBC .jar file path> --module-xml=<module file path>
/subsystem=datasources/jdbc-driver=postgres:add(driver-name=postgres,driver-module-name=org.postgres,driver-class-name=org.postgresql.Driver,driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource)
data-source add --name=postgresDS --driver-name=postgres --jndi-name=java:jboss/datasources/postgresDS --connection-url=$DATABASE_CONNECTION_URL --user-name=$DATABASE_SERVER_ADMIN_FULL_NAME --password=$DATABASE_SERVER_ADMIN_PASSWORD --use-ccm=true --max-pool-size=5 --blocking-timeout-wait-millis=5000 --enabled=true --driver-class=org.postgresql.Driver --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter --jta=true --use-java-context=true --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker
reload
run batch
shutdown
Uppdatera JTA-datakällans konfiguration för programmet:
Öppna src/main/resources/META-INF/persistence.xml
-filen för din app och leta reda på <jta-data-source>
-elementet. Ersätt innehållet enligt följande:
<jta-data-source>java:jboss/datasources/postgresDS</jta-data-source>
Lägg till följande i Dockerfile
så att datakällan skapas när du skapar Docker-avbildningen
RUN /bin/bash -c '<WILDFLY_INSTALL_PATH>/bin/standalone.sh --start-mode admin-only &' && \
sleep 30 && \
<WILDFLY_INSTALL_PATH>/bin/jboss-cli.sh -c --file=/opt/database/datasource-commands.cli && \
sleep 30
Bestäm vilken DATABASE_CONNECTION_URL
som ska användas eftersom de är olika för varje databasserver, och skiljer sig från värdena på Azure Portal. URL-formaten som visas här kravs för användning av WildFly:
jdbc:postgresql://<database server name>:5432/<database name>?ssl=true
När du skapar YAML för distribution i ett senare skede behöver du överföra följande miljövariabler, DATABASE_CONNECTION_URL
, DATABASE_SERVER_ADMIN_FULL_NAME
och DATABASE_SERVER_ADMIN_PASSWORD
med lämpliga värden.
Anteckning
Microsoft rekommenderar att du använder det säkraste tillgängliga autentiseringsflödet. Det autentiseringsflöde som beskrivs i den här proceduren, till exempel för databaser, cacheminnen, meddelanden eller AI-tjänster, kräver en mycket hög grad av förtroende för programmet och medför risker som inte finns i andra flöden. Använd endast det här flödet när säkrare alternativ, till exempel hanterade identiteter för lösenordslösa eller nyckellösa anslutningar, inte är genomförbara. För lokala datoråtgärder föredrar du användaridentiteter för lösenordslösa eller nyckellösa anslutningar.
Mer information om hur du konfigurerar databasanslutning med WildFly finns i PostgreSQL, MySQL eller SQL Server.
För att konfigurera varje JNDI-resurs du behöver konfigurera på WildFly använder du vanligtvis följande steg:
I exemplet nedan visas stegen som behövs för att skapa JNDI-resursen för JMS-anslutning till Azure Service Bus.
Ladda ned Apache Qpid JMS-providern
Packa upp nedladdningsarkivet för att hämta .jar-filerna.
Skapa en fil med ett namn som module.xml
och lägg till följande markering i /opt/servicebus
. Kontrollera att JAR-filernas versionsnummer överensstämmer med namnen på JAR-filerna i föregående steg.
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="org.jboss.genericjms.provider">
<resources>
<resource-root path="proton-j-0.31.0.jar"/>
<resource-root path="qpid-jms-client-0.40.0.jar"/>
<resource-root path="slf4j-log4j12-1.7.25.jar"/>
<resource-root path="slf4j-api-1.7.25.jar"/>
<resource-root path="log4j-1.2.17.jar"/>
<resource-root path="netty-buffer-4.1.32.Final.jar" />
<resource-root path="netty-codec-4.1.32.Final.jar" />
<resource-root path="netty-codec-http-4.1.32.Final.jar" />
<resource-root path="netty-common-4.1.32.Final.jar" />
<resource-root path="netty-handler-4.1.32.Final.jar" />
<resource-root path="netty-resolver-4.1.32.Final.jar" />
<resource-root path="netty-transport-4.1.32.Final.jar" />
<resource-root path="netty-transport-native-epoll-4.1.32.Final-linux-x86_64.jar" />
<resource-root path="netty-transport-native-kqueue-4.1.32.Final-osx-x86_64.jar" />
<resource-root path="netty-transport-native-unix-common-4.1.32.Final.jar" />
<resource-root path="qpid-jms-discovery-0.40.0.jar" />
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.jms.api"/>
</dependencies>
</module>
Skapa en jndi.properties
-fil i /opt/servicebus
.
connectionfactory.${MDB_CONNECTION_FACTORY}=amqps://${DEFAULT_SBNAMESPACE}.servicebus.windows.net?amqp.idleTimeout=120000&jms.username=${SB_SAS_POLICY}&jms.password=${SB_SAS_KEY}
queue.${MDB_QUEUE}=${SB_QUEUE}
topic.${MDB_TOPIC}=${SB_TOPIC}
Skapa en fil med ett namn som servicebus-commands.cli
och lägg till följande kod.
batch
/subsystem=ee:write-attribute(name=annotation-property-replacement,value=true)
/system-property=property.mymdb.queue:add(value=myqueue)
/system-property=property.connection.factory:add(value=java:global/remoteJMS/SBF)
/subsystem=ee:list-add(name=global-modules, value={"name" => "org.jboss.genericjms.provider", "slot" =>"main"}
/subsystem=naming/binding="java:global/remoteJMS":add(binding-type=external-context,module=org.jboss.genericjms.provider,class=javax.naming.InitialContext,environment=[java.naming.factory.initial=org.apache.qpid.jms.jndi.JmsInitialContextFactory,org.jboss.as.naming.lookup.by.string=true,java.naming.provider.url=/opt/servicebus/jndi.properties])
/subsystem=resource-adapters/resource-adapter=generic-ra:add(module=org.jboss.genericjms,transaction-support=XATransaction)
/subsystem=resource-adapters/resource-adapter=generic-ra/connection-definitions=sbf-cd:add(class-name=org.jboss.resource.adapter.jms.JmsManagedConnectionFactory, jndi-name=java:/jms/${MDB_CONNECTION_FACTORY})
/subsystem=resource-adapters/resource-adapter=generic-ra/connection-definitions=sbf-cd/config-properties=ConnectionFactory:add(value=${MDB_CONNECTION_FACTORY})
/subsystem=resource-adapters/resource-adapter=generic-ra/connection-definitions=sbf-cd/config-properties=JndiParameters:add(value="java.naming.factory.initial=org.apache.qpid.jms.jndi.JmsInitialContextFactory;java.naming.provider.url=/opt/servicebus/jndi.properties")
/subsystem=resource-adapters/resource-adapter=generic-ra/connection-definitions=sbf-cd:write-attribute(name=security-application,value=true)
/subsystem=ejb3:write-attribute(name=default-resource-adapter-name, value=generic-ra)
run-batch
reload
shutdown
Lägg till följande i Dockerfile
så att JNDI-resursen skapas när du skapar Docker-avbildningen
RUN /bin/bash -c '<WILDFLY_INSTALL_PATH>/bin/standalone.sh --start-mode admin-only &' && \
sleep 30 && \
<WILDFLY_INSTALL_PATH>/bin/jboss-cli.sh -c --file=/opt/servicebus/servicebus-commands.cli && \
sleep 30
När du skapar YAML för distribution i ett senare skede behöver du överföra följande miljövariabler, MDB_CONNECTION_FACTORY
, DEFAULT_SBNAMESPACE
och SB_SAS_POLICY
, SB_SAS_KEY
, MDB_QUEUE
, SB_QUEUE
, MDB_TOPIC
och SB_TOPIC
med lämpliga värden.
Läs administratörsguiden för WildFly för att ta del av eventuella ytterligare steg före migrering som inte tas upp i de föregående anvisningarna.
När du har skapat Dockerfile måste du skapa Docker-avbildningen och publicera den i ditt Azure-containerregister.
Om du har använt vår GitHub-lagringsplats för WildFly-containersnabbstart är processen för att skapa och överföra avbildningen till ditt Azure-containerregister densamma som att anropa följande tre kommandon.
I dessa exempel innehåller MY_ACR
-miljövariabeln namnet på ditt Azure-containerregister och MY_APP_NAME
-variabeln innehåller namnet på det webbprogram som du vill använda i ditt Azure-containerregister.
Skapa WAR-filen:
mvn package
Logga in på ditt Azure-containerregister:
az acr login --name ${MY_ACR}
Skapa och överföra avbildningen:
az acr build --image ${MY_ACR}.azurecr.io/${MY_APP_NAME} --file src/main/docker/Dockerfile .
Du kan också använda Docker CLI för att först skapa och testa avbildningen lokalt, enligt följande kommandon. Den här metoden kan förenkla testningen och förfina avbildningen före den första distributionen till ACR. Du måste dock installera Docker CLI och se till att Docker-daemon körs.
Skapa avbildningen:
docker build -t ${MY_ACR}.azurecr.io/${MY_APP_NAME}
Kör avbildningen lokalt:
docker run -it -p 8080:8080 ${MY_ACR}.azurecr.io/${MY_APP_NAME}
Nu kan du komma åt ditt program på http://localhost:8080
.
Logga in på ditt Azure-containerregister:
az acr login --name ${MY_ACR}
Överför avbildningen till Azure-containerregistret:
docker push ${MY_ACR}.azurecr.io/${MY_APP_NAME}
Mer detaljerad information om hur du skapar och lagrar containeravbildningar finns i Learn-modulen Skapa och lagra containeravbildningar med Azure Container Registry.
Om ditt program ska vara tillgängligt utanför dina interna eller virtuella nätverk behöver du en offentlig statisk IP-adress. Du bör etablera den här IP-adressen i klustrets nodresursgrupp, enligt följande exempel:
export nodeResourceGroup=$(az aks show \
--resource-group $resourceGroup \
--name $aksName \
--query 'nodeResourceGroup' \
--output tsv)
export publicIp=$(az network public-ip create \
--resource-group $nodeResourceGroup \
--name applicationIp \
--sku Standard \
--allocation-method Static \
--query 'publicIp.ipAddress' \
--output tsv)
echo "Your public IP address is ${publicIp}."
Skapa och använd dina Kubernetes YAML-fil(er). Mer information finns i Snabbstart: Distribuera ett AKS-kluster (Azure Kubernetes Service) med hjälp av Azure CLI. Om du skapar en extern lastbalanserare (oavsett om det är för ditt program eller en ingångskontroll) måste du ange IP-adressen som etablerades i föregående avsnitt som LoadBalancerIP
.
Ta med externa parametrar som miljövariabler. Mer information finns i artikeln om att definiera miljövariabler för en container. Ta inte med hemligheter (till exempel lösenord, API-nycklar och JDBC-anslutningssträngar). Dessa beskrivs i följande avsnitt.
Se till att inkludera minnes- och CPU-inställningar när du skapar distributionens YAML-fil så att containrarna får rätt storlek.
Om programmet kräver icke-flyktig lagring kan du konfigurera en eller flera Beständiga volymer.
Om du vill köra schemalagda jobb på ditt AKS-kluster definierar du Kubernetes CronJobs efter behov. Mer information finns i Köra automatiserade uppgifter med ett CronJob.
Nu när du har migrerat ditt program till Azure Kubernetes Service kontrollerar du att det fungerar som förväntat. När du har gjort det har vi några rekommendationer som hjälper dig att göra programmet mer molnanpassat.
Överväg att lägga till ett DNS-namn till den IP-adress som allokerats till din ingångskontrollant eller programlastbalanserare. Mer information finns i Använda TLS med en ingresskontrollant på Azure Kubernetes Service (AKS).
Överväg att lägga till HELM-diagram för ditt program. Med ett Helm-diagram kan du parameterisera programdistributionen för användning och anpassning av en mer varierande uppsättning kunder.
Utforma och implementera en DevOps-strategi. Om du vill bibehålla tillförlitligheten samtidigt som du ökar din utvecklingshastighet bör du överväga att automatisera distributioner och testning med Azure-pipelines. Mer information finns i Skapa och distribuera till Azure Kubernetes Service med Azure Pipelines.
Aktivera Azure Monitoring för klustret. Mer information finns i Aktivera övervakning för Kubernetes-kluster. På så sätt kan Azure Monitor samla in containerloggar, spåra användning och så vidare.
Överväg att exponera programspecifika mått via Prometheus. Prometheus är ett ramverk med öppen källkod som ofta används av Kubernetes-communityn. Du kan konfigurera Prometheus-statistik i Azure Monitor i stället för att vara värd för din egen Prometheus-Server. Detta aktiverar måttaggregering från dina program och automatiserade svar på eller eskalering av avvikande tillstånd. Mer information finns i Aktivera Prometheus och Grafana.
Utforma och implementera en strategi för affärskontinuitet och haveriberedskap. För verksamhetskritiska program bör du överväga en distributionsarkitektur för flera regioner. Mer information finns i Översikt över hög tillgänglighet och haveriberedskap för Azure Kubernetes Service (AKS).
Granska Kubernetes-versionens stödprincip. Det är ditt ansvar att fortsätta att uppdatera AKS-klustret för att säkerställa att den alltid kör en version som stöds. Mer information finns i Uppgraderingsalternativ för AKS-kluster (Azure Kubernetes Service).
Se till att alla teammedlemmar som ansvarar för klusteradministration och programutveckling läser igenom de relevanta metodtipsen för AKS. Mer information finns i Metodtips för klusteroperatorer och utvecklare för att skapa och hantera program i Azure Kubernetes Service (AKS).
Kontrollera att distributionsfilen anger hur rullande uppdateringar görs. Mer information finns i artikeln om distribution av rullande uppdateringar i Kubernetes-dokumentationen.
Konfigurera automatisk skalning för att hantera högbelastningstider. Mer information finns i Använda kluster autoskalning i Azure Kubernetes Service (AKS).
Överväg att övervaka kodens cache-storlek och lägga till JVM-parametrarna -XX:InitialCodeCacheSize
och -XX:ReservedCodeCacheSize
i Dockerfile för att ytterligare optimera prestandan. Mer information finns i Codecache Tuning i Oracle-dokumentationen.
Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nuUtbildning
Modul
Containerisera och distribuera en Java-app till Azure - Training
Containerisera en Java-app, skicka containeravbildningen till Azure Container Registry och distribuera sedan till Azure Kubernetes Service.
Certifiering
Microsoft-certifierad: Specialitet för Azure för SAP-arbetsbelastningar - Certifications
Demonstrera planering, migrering och drift av en SAP-lösning på Microsoft Azure medan du använder Azure-resurser.