Azure Fundamentals · leksjon

Azure Container Apps

Distribuer en mikrotjenesteapplikasjon til Azure Container Apps med Dapr-sidevognintegrasjon, konfigurer ingress og bruk KEDA-basert automatisk skalering utløst av kødybden i Service Bus.

Leksjon 3 av 413 trinn

Azure Container Apps er en gratis leksjon i Azure Fundamentals på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Azure Fundamentals, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Azure Fundamentals inneholder totalt 4 leksjoner.

Hva er Azure Container Apps?

Azure Container Apps (ACA) er en fullstendig administrert, serverløs tjeneste for kjøring av containere, bygget oppå Kubernetes og KEDA (Kubernetes Event-Driven Autoscaling). I motsetning til AKS administrerer De ikke kontrollplanet, nodepoolene eller Kubernetes-manifestene direkte. I stedet distribuerer De containere ved hjelp av en enkel CLI eller YAML-definisjon, mens Azure håndterer all orkestrering. ACA egner seg godt for mikrotjenester, API-bakender, hendelsesdrevne arbeidere og bakgrunnsjobber som må skaleres dynamisk, inkludert skalering til null.

Container Apps-miljøer

Et Container Apps-miljø er den isolerte grensen som én eller flere Container Apps kjører innenfor. Alle apper i et miljø deler det samme virtuelle nettverket og Log Analytics-arbeidsområdet. Miljøer avgrenses til én region og én ressursgruppe. De kan distribuere flere miljøer for å isolere team eller stadier fra hverandre (produksjon kontra staging). Et miljø kan valgfritt VNet-injiseres i Deres eget virtuelle nettverk, slik at Container Apps og andre Azure-tjenester kan kommunisere privat uten å gå via det offentlige internett.

# Create a Container Apps environment
az containerapp env create \
  --name myACAEnvironment \
  --resource-group myRG \
  --location eastus

Distribuere en Container App

For å distribuere en Container App angir De containeravbildningen (fra Azure Container Registry eller et annet offentlig register), antall replikaer og miljøvariabler. Appen blir offentlig tilgjengelig via en automatisk generert HTTPS-URL hvis De aktiverer ekstern ingress. Ingress-konfigurasjonen omfatter målporten, trafikkfordeling ved blue-green-distribusjoner og om bare HTTP eller HTTPS skal tillates. ACA henter avbildningen på distribusjonstidspunktet, og miljøet må ha tillatelse til å hente den fra registeret.

# Deploy a container app from Azure Container Registry
az containerapp create \
  --name myapi \
  --resource-group myRG \
  --environment myACAEnvironment \
  --image myacr.azurecr.io/myapi:latest \
  --target-port 8080 \
  --ingress external \
  --registry-server myacr.azurecr.io \
  --min-replicas 1 \
  --max-replicas 10

KEDA-basert autoskalering

Container Apps skalerer ved hjelp av KEDA-skalere som utløses basert på eksterne måledata. Innebygde KEDA-skalere omfatter: HTTP-trafikk (samtidige forespørsler per replika), Azure Service Bus-kødybde (ventende meldinger), Azure Storage Queue, Cron (tidsbasert) og CPU/Memory. Når måleverdien for skaleren faller til null og minReplicas er satt til 0, skalerer Container Apps til null — uten beregningskostnader før nye forespørsler kommer inn. Skalering til null er svært godt egnet for hendelsesdrevne arbeidere med sporadiske arbeidsbelastninger.

# Scale based on Service Bus queue depth
az containerapp update \
  --name myworker \
  --resource-group myRG \
  --scale-rule-name sbqueue-scaler \
  --scale-rule-type azure-servicebus \
  --scale-rule-metadata 'queueName=orders' 'namespace=myservicebusns' 'messageCount=5' \
  --scale-rule-auth 'connection=servicebus-connection-secret:connection' \
  --min-replicas 0 \
  --max-replicas 20

Dapr-integrasjon

Dapr (Distributed Application Runtime) er en portabel, hendelsesdrevet runtime som forenkler utvikling av mikrotjenester. Container Apps har innebygd Dapr-integrasjon — De aktiverer den per app med ett enkelt flagg. Dapr tilbyr byggesteiner for: tjenestekall (med nytt forsøk og mTLS), pub/sub-meldingsutveksling (abstraherer Service Bus og Event Hubs), tilstandsadministrasjon (abstraherer Redis og Cosmos DB) og output bindings. Med Dapr kommuniserer mikrotjenester gjennom Dapr-sidecar-en uten å kjenne detaljene i den underliggende infrastrukturen.

# Enable Dapr on a Container App
az containerapp update \
  --name myapi \
  --resource-group myRG \
  --enable-dapr \
  --dapr-app-id myapi \
  --dapr-app-port 8080 \
  --dapr-app-protocol http

Revisjoner og trafikkfordeling

Hver distribusjon til en Container App oppretter en ny revisjon. I modus for flere revisjoner kan De fordele trafikk mellom revisjoner ved blue-green- eller canary-distribusjoner. De kan for eksempel sende 10 % av trafikken til en ny revisjon og 90 % til den nåværende stabile revisjonen. Overvåk feilrater og ventetid for den nye revisjonen før De øker trafikkvekten til 100 %. Gamle revisjoner kan deaktiveres, men beholdes i historikken, slik at De umiddelbart kan rulle tilbake ved å flytte trafikkvekten tilbake.

# Set traffic split between two revisions
az containerapp ingress traffic set \
  --name myapi \
  --resource-group myRG \
  --revision-weight myapi--abc123=90 myapi--def456=10

Hemmeligheter og miljøvariabler

Container Apps støtter to måter å injisere konfigurasjon på: miljøvariabler (for ikke-sensitive innstillinger, som funksjonsflagg eller API-URL-er) og hemmeligheter (for sensitive verdier, som tilkoblingsstrenger). Hemmeligheter lagres på Container App-nivået og refereres til av miljøvariabler eller Dapr-komponenter. For det sikreste oppsettet kan De referere til hemmeligheter fra Azure Key Vault ved hjelp av en managed identity, slik at hemmelighetsverdien hentes under kjøring og aldri lagres i Container Apps konfigurasjonsplan.

# Add a secret to a Container App
az containerapp secret set \
  --name myapi \
  --resource-group myRG \
  --secrets 'db-password=supersecretpassword'

# Reference the secret as an environment variable
az containerapp update \
  --name myapi \
  --resource-group myRG \
  --set-env-vars 'DB_PASSWORD=secretref:db-password'

Jobber: Arbeidsbelastninger som kjører til de fullføres

Container Apps Jobs utvider plattformen med støtte for arbeidsbelastninger som kjører til de fullføres – containere som starter, utfører arbeid og avsluttes. Jobber støtter tre utløsertyper: Manuell (utløses via API eller CLI), Planlagt (cron-uttrykk) og Hendelsesdrevet (KEDA scaler utløser hver kjøring). Jobber faktureres bare for den faktiske kjøringstiden og egner seg godt til satsvis behandling, rapportgenerering, databasemigreringer og ML-inferensprosesser som kjører med jevne mellomrom eller som svar på hendelser.

# Create a scheduled Container Apps job (run every hour)
az containerapp job create \
  --name my-batch-job \
  --resource-group myRG \
  --environment myACAEnvironment \
  --trigger-type Schedule \
  --cron-expression '0 * * * *' \
  --image myacr.azurecr.io/batchjob:latest \
  --cpu 0.5 --memory 1Gi

Observability: Logger og metrikk

Container Apps sender systemlogger (plattformhendelser som opprettelse av revisioner og skalering) og konsolllogger (programmets stdout/stderr) til Log Analytics-arbeidsområdet som er knyttet til miljøet. Du kan spørre i logger med KQL: ContainerAppConsoleLogs_CL | where ContainerAppName_s == 'myapi' | project TimeGenerated, Log_s. Innebygde Azure Monitor-metrikker omfatter antall replikaer, antall forespørsler, ventetid for forespørsler og CPU-/minneutnyttelse per replika – alt tilgjengelig i Azure-portalen uten ekstra konfigurasjon.

# Stream live logs from a Container App
az containerapp logs show \
  --name myapi \
  --resource-group myRG \
  --follow

ACA kontra AKS kontra App Service

Valg av riktig Azure-plattform for containere: Container Apps passer best for mikrotjenester, hendelsesdrevne arbeidere og API-er når du ønsker fordelene ved Kubernetes uten å administrere klyngen – særlig når skalering til null er nyttig. AKS passer best når du trenger full kontroll over Kubernetes, egendefinerte operatorer eller bestemte nodekonfigurasjoner (GPU, mye minne). App Service passer best for tradisjonelle webapplikasjoner og API-er når utviklingsteamet foretrekker en enkel PaaS-modell uten administrasjonskostnadene ved containerhåndtering. Alle tre støtter containere; forskjellen handler om balansen mellom administrasjonskompleksitet og kontroll.

Nettverk: Intern og ekstern ingress

Container Apps støtter to ingress-moduser: Ekstern (offentlig tilgjengelig via et lastbalansert HTTPS-endepunkt med automatisk TLS) og Intern (bare tilgjengelig fra det samme Container Apps-miljøet eller fra ressurser med VNet-peering). Intern ingress brukes for backend-tjenester som aldri skal eksponeres mot internett. Apper kan kalle hverandre ved hjelp av det automatisk genererte interne DNS-navnet http://myapi i det samme miljøet. Dermed blir kommunikasjon mellom tjenester enkel, uten at du trenger å distribuere en API-gateway.

Hurtigsjekk

Test forståelsen din av konseptene i Microsoft Azure Fundamentals (AZ-900) fra denne leksjonen.

Oppsummering av leksjonen

I denne leksjonen har du lært at Azure Container Apps tilbyr serverløs containerhosting bygget på Kubernetes og KEDA, uten at du trenger å administrere en klynge, at KEDA scalers muliggjør skalering til null basert på kødybde, HTTP-trafikk eller cron-planer, og at Dapr-integrasjon forenkler kommunikasjon mellom mikrotjenester og tilstandsadministrasjon. Neste steg er å sette alt sammen i en komplett ende-til-ende-arbeidsflyt for utviklere.

Gratis å komme i gang

Lær deg Azure Fundamentals med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
30
Leksjoner
120

Ofte stilte spørsmål

Er leksjonen «Azure Container Apps» gratis?

Ja – hele teksten i «Azure Container Apps» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Azure Fundamentals-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Azure Fundamentals inneholder totalt 4 leksjoner.

Hva lærer jeg i «Azure Container Apps»?

Distribuer en mikrotjenesteapplikasjon til Azure Container Apps med Dapr-sidevognintegrasjon, konfigurer ingress og bruk KEDA-basert automatisk skalering utløst av kødybden i Service Bus. Du øver på Azure Fundamentals med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Azure Fundamentals?

Ingen tidligere erfaring er nødvendig. Azure Fundamentals på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Azure Container Apps»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Azure Fundamentals-leksjonen?

Ja. Alle Azure Fundamentals-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Administrert identitet for passordløs autentisering
  2. Azure Service Bus for frakoblet meldingsformidling
  3. Azure Container Apps
  4. Utviklerarbeidsflyt fra ende til ende
← Tilbake til Azure Fundamentals