Microsoft AZ-204: Azure Containeroplossingen — Studiegids
Onderdeel van de Microsoft Azure Developer Associate AZ-204 — Studiegids. Oefen met geverifieerde antwoorden in het Microsoft-examencentrum, of doe getimede oefentests op ExamRoll.io.
Overzicht
Azure biedt een spectrum aan containeropties die variëren van de uitvoering van enkele containers en georkestreerde clusters tot een veilige, enterprise-grade image supply chain. Azure Container Instances (ACI) is de snelste manier om Linux- of Windows-containers uit te voeren zonder servers te beheren. Azure Kubernetes Service (AKS) is een beheerd Kubernetes control plane dat microservices schaalt met geavanceerde scheduling, netwerken, beveiliging en DevOps-integraties. Azure Container Registry (ACR) is de private, geo-gerepliceerde registry die uw build-, tag-, push/pull- en Helm-distributiestromen verankert. Het beheersen van de constructie en het lifecycle management van Docker-images is fundamenteel voor betrouwbare deployments op al deze platformen. Dit gedeelte geeft een praktische, op ontwikkelaars gerichte kijk op hoe de onderdelen in elkaar passen, inclusief YAML-gestuurde deployments, Helm-packaging, het beschikbaar stellen van services (service exposure) en identiteits-/beveiligingspatronen.
Docker en Azure Container Registry (ACR)
Betrouwbare levering van containers begint met een solide basiskennis van Docker. Elke image is opgebouwd uit lagen die worden gevormd door Dockerfile-instructies; hergebruik van lagen en cache hits zijn cruciaal voor snelle builds.
- Veelvoorkomende Dockerfile-instructies en richtlijnen:
- FROM definieert de base image. Geef de voorkeur aan minimale images (bijv. distroless, alpine waar geschikt) om het aanvalsoppervlak en de grootte te verkleinen.
- RUN voert commando’s uit om afhankelijkheden te installeren. Combineer gerelateerde commando’s om het aantal lagen te verminderen, maar vermijd monolithische RUN-regels die fouten verbergen.
- COPY en ADD plaatsen applicatie-artefacten. Gebruik .dockerignore om te voorkomen dat de context te groot wordt; pin COPY aan expliciete paden.
- WORKDIR stelt de werkdirectory in; gebruik dit in plaats van
cdte koppelen in RUN. - EXPOSE documenteert de beoogde luisterpoorten (dit is geen firewall).
- ENV en ARG configureren omgevings- en build-time variabelen; bevorder determinisme tijdens de build door ARG-standaardwaarden vast te zetten of expliciete waarden mee te geven.
- ENTRYPOINT definieert het hoofd-uitvoerbare bestand; gebruik CMD voor standaardargumenten. Geef de voorkeur aan de exec-vorm (JSON-array) om signaalafhandeling te behouden voor een ‘graceful shutdown’.
- HEALTHCHECK maakt liveness-evaluatie mogelijk zodat orchestrators kunnen reageren.
- Multi-stage builds scheiden de build- en runtime-fasen, waarbij alleen de benodigde artefacten naar een schone runtime-image worden gekopieerd, wat de grootte en de CVE-footprint drastisch vermindert. Bouw bijvoorbeeld met een SDK, publiceer de binaries en kopieer deze vervolgens naar een runtime base image.
- Image-lagen zijn onveranderlijk (immutable) en ‘content-addressed’. Het veranderen van de volgorde van instructies beïnvloedt de caching. Plaats vaak veranderende instructies (bijv. COPY source) laat in het Dockerfile om het aantal cache hits te maximaliseren.
Met ACR kunt u images en Helm-charts privé opslaan en distribueren:
- Repositories en tagging: Push images als
<registry>.azurecr.io/<repo>:<tag>. Geef de voorkeur aan semantische of op Git gebaseerde tags (bijv. 1.4.0, build SHA) en gebruik onveranderlijke (immutable) digests in productie-deployments voor herhaalbaarheid. - Pushen en pullen:
- Authenticeer bij ACR met
az acr login -n '<acr-name>'ofdocker loginmet een Azure AD-token. Vermijd het inschakelen van de ACR admin user in productie. - Tag en push:
docker tag app:1.0 '<acr>'.azurecr.io/apps/app:1.0;docker push '<acr>'.azurecr.io/apps/app:1.0. Pull metdocker pullof via Kubernetes image-referenties. - Importeer upstream images naar ACR om de supply chain te beheren:
az acr import -n '<acr>' --source docker.io/library/nginx:1.25 --image base/nginx:1.25.
- Authenticeer bij ACR met
- ACR Tasks: Bouw, test en patch images native in Azure. Gebruik
az acr build -r '<acr>' -t apps/app:1.0 .voor on-demand builds; automatiseer updates metaz acr task createom te triggeren op Git-commits of updates van de base image, wat CVE-herstel mogelijk maakt zonder de app-code te wijzigen. - Geo-replicatie (Premium SKU) biedt pull-localiteit en veerkracht over meerdere regio’s. Configureer replica’s in regio’s dicht bij AKS-clusters om de pull-latentie en cross-region egress te verminderen.
- Toegangsbeheer:
- Integreer met Azure AD en wijs ingebouwde rollen zoals AcrPull toe aan de AKS kubelet-identiteit, en AcrPush aan CI-pipelines. Rechten op repository-niveau (repository-scoped) zijn beschikbaar via tokens en scope maps voor fijnmazige controle.
- Beperk netwerktoegang met private endpoints, service endpoints en firewallregels. Geef in productie de voorkeur aan private endpoints.
- Koppel ACR aan AKS met
az aks update --attach-acr '<acr>'om de toewijzing van de AcrPull-rol te vereenvoudigen.
Azure Container Instances (ACI)
ACI voert containers on-demand uit zonder clusterbeheer. De primaire eenheid is een ‘container group’, een gezamenlijk geplande set containers die dezelfde host OS-kernel, lifecycle, IP-adres en volumes delen. Gebruik container groups om het sidecar-patroon te implementeren (bijv. log shippers, proxies) of om een hoofdproces te combineren met een helper.
- Multi-container groups delen een netwerk-namespace, wat communicatie tussen containers via localhost mogelijk maakt. Ze delen ook gekoppelde volumes (Azure Files, emptyDir) en de lifecycle, waardoor ze geschikt zijn voor samenhangende, eenmalige taken die een nauwe koppeling vereisen.
- Herstartbeleid (restart policies) bepaalt de uitvoeringssemantiek:
- Always herstart containers wanneer ze stoppen. Het beste voor langlopende services.
- OnFailure herstart alleen bij een exit-code die niet nul is. Geschikt voor batchtaken die bij een fout opnieuw moeten proberen.
- Never voert containers eenmaal uit en herstart ze nooit, ideaal voor idempotente taken.
- Netwerkintegraties omvatten een openbaar IP-adres met een DNS-label, privé-IP-adressen in een gedelegeerd Azure VNet-subnet, en beveiligde egress via NAT of een firewall. VNet-injected ACI maakt privétoegang tot services (databases, opslag) mogelijk zonder publieke blootstelling.
- Operationele overwegingen:
- Injecteer secrets met behulp van beveiligde omgevingsvariabelen of door Azure Files te mounten; voor een sterkere beveiligingshouding (posture), haal secrets op tijdens runtime via een managed identity uit Key Vault.
- Observeer met
az container logsenaz container attach; voer interactieve commando’s uit metaz container exec. - Facturering is per seconde voor vCPU en GiB-geheugen. Containers starten snel en zijn geschikt voor ‘bursty’ workloads, CI-helpertaken, integratietests en door een wachtrij getriggerde taken waar de overhead van Kubernetes onnodig is.
Azure Kubernetes Service (AKS)
AKS biedt een beheerd control plane met node pools, autoscaling en diepgaande netwerk-/identiteitsopties.
Node pools structureren de capaciteit en de plaatsing van workloads. System node pools draaien kerndiensten; user node pools draaien applicatiepods. Gebruik meerdere pools om workloads te scheiden op basis van CPU/Geheugen/GPU-behoeften, OS (Linux/Windows), VM-grootte en availability zone. Gebruik taints/tolerations om system pools te beschermen, labels voor selectie en de cluster autoscaler om nodes toe te voegen/verwijderen op basis van pending pods. Houd bij het bepalen van de grootte rekening met maxPods per node en pod-dichtheid.
Pod-scheduling wordt aangestuurd door resource requests/limits, QoS-klassen (Guaranteed/Burstable/BestEffort) en beperkingen. Gebruik nodeSelector/affinity en anti-affinity om pods naar de juiste pools te sturen en replica’s te verdelen over zones en failure domains. Topology spread constraints verbeteren een gelijkmatige verdeling. Definieer voor kritieke diensten PodDisruptionBudgets en PriorityClasses om vrijwillige onderbrekingen en preemption-gedrag vorm te geven. DaemonSets plaatsen per-node agents (logging, monitoring) en CronJobs plannen containers in voor periodieke taken.
Deployments in AKS zijn declaratief. YAML-manifesten definiëren apiVersion, kind, metadata en spec voor Deployments, StatefulSets, Jobs, Services en Ingress. Bewaar manifesten in versiebeheer, parametriseer met Kustomize-overlays voor omgevingsverschillen en pas toe met kubectl apply -f. Server-side apply en de juiste labels/annotations helpen bij eigendom en drift-detectie. Voor het verpakken van herbruikbare apps bundelt Helm 3 templates en values. Host Helm-charts als OCI-artefacten in ACR en installeer met helm upgrade –install <release> oci://<acr>.azurecr.io/helm/<chart> -f values.yaml. Gebruik values-bestanden per omgeving, volg chart-versies en voer een rollback uit met helm rollback voor snel herstel.
kubectl-commando’s die je dagelijks zult gebruiken:
- Toegang tot de clustercontext: az aks get-credentials -g
<rg>-n<cluster>voegt de kubeconfig samen; het gebruik van een aan Azure AD gekoppelde machine met kubectl is voldoende—Docker is niet vereist om manifesten te deployen. - Inspecteren en beheren: kubectl get nodes,pods,deploy,svc -A; kubectl describe pod
<name>; kubectl logs -f<pod>; kubectl exec -it<pod>– sh; kubectl rollout status deploy/<name>; kubectl set image deploy/<name>container=<image>:<tag>; kubectl top pods; kubectl cordon/drain nodes voor onderhoud; kubectl auth can-i om RBAC te verifiëren. - Toepassen/patchen: kubectl apply -f k8s/; kubectl patch deploy
<name>–type merge -p ‘{…}’.
Netwerken in AKS stelt pods en services bloot met duidelijke verantwoordelijkheden:
- ClusterIP biedt interne, cluster-scoped virtuele IP’s en DNS voor service discovery. Dit is de standaard voor oost-west verkeer tussen microservices.
- NodePort opent dezelfde poort op elke node; het kan het beste worden gebruikt achter een Ingress of externe LB in plaats van direct te worden aangesproken.
- LoadBalancer provisioneert een Azure Load Balancer-frontend die zich richt op NodePorts. Markeer services als intern door de annotatie service.beta.kubernetes.io/azure-load-balancer-internal: “true” te gebruiken, of wijs een statisch openbaar IP-adres toe voor stabiele DNS.
- Ingress controllers bieden L7-routing, TLS-beëindiging en pad/host-regels. De NGINX Ingress Controller is een veelzijdige standaard met uitgebreide annotaties. De Application Gateway Ingress Controller (AGIC) integreert met Azure Application Gateway voor WAF, autoscaling en enterprise L7-mogelijkheden, terwijl de Kubernetes-native manifesten behouden blijven. Gebruik cert-manager om TLS te automatiseren met ACME, of synchroniseer Key Vault-certificaten naar Kubernetes secrets met de CSI Secret Store.
Identiteit en autorisatie integreren met Azure AD zonder secrets in het cluster:
- Managed identities voor AKS bestaan uit de cluster/control plane-identiteit en de kubelet-identiteit. Geef de kubelet AcrPull-rechten op ACR (az aks update –attach-acr
<acr>) zodat nodes veilig images kunnen pullen. - Workload identity stelt pods in staat om toegang te krijgen tot Azure-resources met behulp van gefedereerde Azure AD-credentials die zijn gekoppeld aan Kubernetes service accounts—zonder credentials op node-niveau of sidecars. Schakel de OIDC issuer in op het cluster, maak een user-assigned managed identity aan, configureer een FederatedIdentityCredential voor de service account/namespace en gebruik de Azure Identity SDK in de app. Dit vervangt het oudere AAD Pod Identity-model en sluit aan bij open standaarden.
- RBAC regelt de permissies voor de Kubernetes API. Koppel Kubernetes Roles/ClusterRoles aan Azure AD-gebruikers of -groepen via RoleBindings/ClusterRoleBindings wanneer AKS is geïntegreerd met Azure AD. Als alternatief kun je Azure RBAC for Kubernetes Authorization inschakelen om de toegang te beheren met Azure RBAC-rollen zoals Azure Kubernetes Service RBAC Reader, Writer en Admin. Volg het principe van least privilege, scheid namespaces per team of workload en beveilig de productieomgeving via groepsgebaseerde koppelingen.
De end-to-end image-flow naar AKS is eenvoudig en veilig. Bouw multi-stage images, tag ze met onveranderlijke versies, push ze naar ACR en deploy naar AKS met manifesten of Helm. AKS pullt van ACR met behulp van de kubelet managed identity, en pods gebruiken Azure-resources via workload identity. Services worden beschikbaar gemaakt via ClusterIP/LoadBalancer en verfijnd met een ingress controller die TLS en routing centraliseert.
Praktisch Probleemscenario
Het Creative Cloud-team van Adobe is een monolithische mediabewerkingsservice aan het ontbinden in microservices, met als doel een wereldwijde levering met lage latentie en een versterkte supply chain.
- Bouw en bewaar images met multi-stage Dockerfiles in CI
- Gebruik Docker multi-stage om mediacodecs te compileren en alleen de runtime binaries te kopiëren naar een slanke basisimage, waardoor de grootte en het aantal CVE’s worden geminimaliseerd. Push images als
<acr>.azurecr.io/processing/encoder:<git-sha>naar ACR. Dit zorgt voor reproduceerbare, veilige artefacten met onveranderlijke digests voor deployment pinning.
- Versterk de registry en automatiseer patching
- Maak een ACR Premium-registry aan met private endpoints in elk virtual network dat AKS host. Schakel geo-replicatie naar North Europe en East US in om pulls lokaal te houden. Configureer ACR Tasks om rebuilds te triggeren bij updates van de upstream basisimage, waardoor gepatchte lagen automatisch worden doorgevoerd. Dit brengt prestaties in evenwicht met beveiliging en vermindert egress.
- Zet AKS op met gescheiden node pools en identiteit
- Deploy AKS met Azure CNI en system/user node pools: een kleine system pool voor control plane add-ons, GPU-enabled user pools voor transcoding en algemene pools voor API’s. Schakel Azure AD-integratie, de OIDC issuer en workload identity in. Wijs AcrPull toe aan de kubelet-identiteit via az aks update –attach-acr. Dit isoleert workloads, schaalt efficiënt en elimineert op secrets gebaseerde image pulls.
- Definieer declaratieve deployments en packaging
- Schrijf Kubernetes YAML voor Deployments, StatefulSets waar persistentie nodig is, Services, HorizontalPodAutoscaler en PodDisruptionBudgets. Verpak de encoder-service en API-gateway als Helm-charts, publiceer ze als OCI-artefacten naar ACR en deploy met helm upgrade –install met behulp van omgevingsspecifieke values. Dit zorgt voor consistente, geversioneerde releases en eenvoudige rollbacks.
- Stel services beschikbaar en handhaaf L7-beveiliging
- Gebruik ClusterIP voor interne microservices en een LoadBalancer-service met de Application Gateway Ingress Controller voor openbare API’s. Beëindig TLS op de Application Gateway met een WAF-policy, beheer certificaten met cert-manager geïntegreerd met Azure DNS voor ACME-challenges, en routeer naar backends op basis van host/pad. Dit levert enterprise-grade L7-beveiliging op met een Kubernetes-native configuratie.
- Implementeer veilige workload-toegang tot Azure-resources
- Voor een thumbnailing-service die naar Blob Storage schrijft en secrets leest, maak je een user-assigned managed identity aan, federeer je deze met de service account via workload identity en ken je de rollen Storage Blob Data Contributor en Key Vault Secrets User toe. De pod authenticeert met Azure AD, waardoor secret mounts worden geëlimineerd en fijnmazige, auditeerbare toegang mogelijk wordt gemaakt.
- Beheer batch-overflow met ACI
- Voor sporadische batch-overflow met hoge prioriteit, trigger je ACI multi-container groups (encoder + sidecar metrics collector) met restartPolicy: Never binnen een VNet-injected subnet. Dit vangt pieken op zonder AKS naar het maximum te schalen en behoudt
← Azure Cosmos DB · Alle domeinen · Azure Authenticatie →
Oefen deze vragen → · Getimede oefening op ExamRoll.io →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Slaag voor je examen →