Microsoft AZ-204: Azure-Containerlösungen — Lernleitfaden
Teil des Microsoft Azure Developer Associate AZ-204 — Lernleitfaden. Üben Sie mit verifizierten Antworten im Microsoft-Prüfungscenter, oder absolvieren Sie zeitlich begrenzte Übungstests auf ExamRoll.io.
Überblick
Azure bietet ein Spektrum an Container-Optionen, das von der Ausführung einzelner Container über orchestrierte Cluster bis hin zu einer sicheren, unternehmenstauglichen Image-Lieferkette reicht. Azure Container Instances (ACI) ist der schnellste Weg, Linux- oder Windows-Container ohne Serververwaltung auszuführen. Azure Kubernetes Service (AKS) ist eine verwaltete Kubernetes-Steuerungsebene, die Microservices mit erweiterten Funktionen für Scheduling, Netzwerk, Sicherheit und DevOps-Integrationen skaliert. Azure Container Registry (ACR) ist die private, georeplizierte Registry, die Ihre Abläufe für Build, Tagging, Push/Pull und die Verteilung von Helm-Charts verankert. Die Beherrschung der Erstellung und des Lebenszyklusmanagements von Docker-Images ist die Grundlage für zuverlässige Bereitstellungen auf jeder dieser Plattformen. Dieser Abschnitt vermittelt eine praxisnahe, entwicklerzentrierte Sichtweise, wie die Komponenten zusammenspielen, einschließlich YAML-gesteuerter Deployments, Helm-Paketierung, Service-Bereitstellung (Exposure) und Identitäts-/Sicherheitsmustern.
Docker und Azure Container Registry (ACR)
Eine zuverlässige Container-Bereitstellung beginnt mit soliden Docker-Grundlagen. Jedes Image besteht aus Schichten (Layern), die durch Dockerfile-Anweisungen gebildet werden; die Wiederverwendung von Schichten und Cache-Treffer sind entscheidend für schnelle Builds.
- Gängige Dockerfile-Anweisungen und Anleitungen:
- FROM definiert das Basis-Image. Bevorzugen Sie minimale Images (z. B. Distroless, Alpine, wo sinnvoll), um die Angriffsfläche und Größe zu reduzieren.
- RUN führt Befehle zur Installation von Abhängigkeiten aus. Fassen Sie zusammengehörige Befehle zusammen, um die Anzahl der Schichten zu reduzieren, aber vermeiden Sie monolithische RUN-Zeilen, die Fehler verschleiern.
- COPY und ADD platzieren Anwendungsartefakte. Verwenden Sie .dockerignore, um den Build-Kontext nicht aufzublähen; binden Sie COPY an explizite Pfade.
- WORKDIR setzt das Arbeitsverzeichnis; verwenden Sie es anstelle von verketteten
cd-Befehlen in RUN. - EXPOSE dokumentiert die vorgesehenen Ports, auf denen gelauscht wird (keine Firewall).
- ENV und ARG konfigurieren Umgebungs- und Build-Zeit-Variablen; fördern Sie die Deterministik zur Build-Zeit, indem Sie ARG-Standardwerte festlegen oder explizite Werte übergeben.
- ENTRYPOINT definiert die ausführbare Hauptdatei; verwenden Sie CMD für Standardargumente. Bevorzugen Sie die Exec-Form (JSON-Array), um die Signalverarbeitung für ein sauberes Herunterfahren (graceful shutdown) zu erhalten.
- HEALTHCHECK ermöglicht die Überprüfung der Lebendigkeit (Liveness), damit Orchestratoren reagieren können.
- Multi-Stage-Builds trennen die Build- und Laufzeitphasen, wobei nur die benötigten Artefakte in ein sauberes Laufzeit-Image kopiert werden, was die Größe und die CVE-Angriffsfläche drastisch reduziert. Zum Beispiel: mit dem SDK bauen, Binärdateien veröffentlichen und diese dann in eine Laufzeit-Basis kopieren.
- Image-Schichten sind unveränderlich (immutable) und inhaltsadressiert. Eine Änderung der Reihenfolge von Anweisungen beeinflusst das Caching. Platzieren Sie häufig wechselnde Anweisungen (z. B. COPY der Quelldateien) spät im Dockerfile, um die Cache-Treffer zu maximieren.
Mit ACR können Sie Images und Helm-Charts privat speichern und verteilen:
- Repositories und Tagging: Pushen Sie Images als
undefined
. Bevorzugen Sie semantische oder Git-basierte Tags (z. B. 1.4.0, Build-SHA) und verwenden Sie unveränderliche Digests in Produktions-Deployments für die Wiederholbarkeit.
- Pushen und Pullen:
- Authentifizieren Sie sich bei ACR mit
undefined
oder docker login mit einem Azure AD-Token. Vermeiden Sie es, den ACR-Admin-Benutzer in der Produktion zu aktivieren.
- Taggen und Pushen:
undefined
;
undefined
. Pullen Sie mit docker pull oder über Kubernetes-Image-Referenzen.
- Importieren Sie Upstream-Images in ACR, um die Lieferkette zu kontrollieren:
undefined
.
- ACR Tasks: Erstellen, testen und patchen Sie Images nativ in Azure. Verwenden Sie
undefined
für On-Demand-Builds; automatisieren Sie Updates mit
undefined
, um sie durch Git-Commits oder Basis-Image-Updates auszulösen, was die Behebung von CVEs ohne Änderung des App-Codes ermöglicht.
- Georeplikation (Premium-SKU) bietet Pull-Lokalität und Ausfallsicherheit über mehrere Regionen hinweg. Konfigurieren Sie Replikate in Regionen in der Nähe von AKS-Clustern, um die Pull-Latenz und den regionsübergreifenden Egress-Traffic zu reduzieren.
- Zugriffskontrolle:
- Integrieren Sie mit Azure AD und weisen Sie integrierte Rollen wie
AcrPullder Kubelet-Identität von AKS undAcrPushden CI-Pipelines zu. Berechtigungen auf Repository-Ebene sind über Tokens und Scope-Maps für eine feingranulare Steuerung verfügbar. - Beschränken Sie den Netzwerkzugriff mit Private Endpoints, Service Endpoints und Firewall-Regeln. Bevorzugen Sie Private Endpoints für die Produktion.
- Verbinden Sie ACR mit AKS mittels
- Integrieren Sie mit Azure AD und weisen Sie integrierte Rollen wie
undefined
, um die Zuweisung der AcrPull-Rolle zu vereinfachen.
Azure Container Instances (ACI)
ACI führt Container bei Bedarf ohne Cluster-Management aus. Die primäre Einheit ist eine Container-Gruppe, eine gemeinsam geplante (co-scheduled) Gruppe von Containern, die sich denselben Host-OS-Kernel, Lebenszyklus, dieselbe IP-Adresse und dieselben Volumes teilen. Verwenden Sie Container-Gruppen, um das Sidecar-Pattern zu implementieren (z. B. für Log-Shipper, Proxys) oder um einen Hauptprozess mit einem Helfer zu kombinieren.
- Multi-Container-Gruppen teilen sich einen Netzwerk-Namespace, was die Kommunikation zwischen den Containern über
localhostermöglicht. Sie teilen sich auch gemountete Volumes (Azure Files, emptyDir) und den Lebenszyklus, was sie für zusammenhängende, einmalige Aufgaben geeignet macht, die eine enge Kopplung erfordern. - Neustartrichtlinien (Restart Policies) steuern die Ausführungssemantik:
- Always startet Container neu, wenn sie beendet werden. Am besten für langlebige Dienste.
- OnFailure startet nur bei Exit-Codes ungleich Null neu. Geeignet für Batch-Aufgaben, die bei einem Fehler erneut versucht werden sollen.
- Never führt Container einmal aus und startet sie nie neu, ideal für idempotente Jobs.
- Netzwerkintegrationen umfassen eine öffentliche IP mit einem DNS-Label, private IPs in einem delegierten Subnetz eines Azure VNets und sicheren Egress-Traffic über NAT oder eine Firewall. In ein VNet injiziertes ACI ermöglicht den privaten Zugriff auf Dienste (Datenbanken, Speicher) ohne öffentliche Erreichbarkeit.
- Betriebliche Überlegungen:
- Injizieren Sie Secrets über sichere Umgebungsvariablen oder durch das Mounten von Azure Files; für eine stärkere Sicherheitsarchitektur rufen Sie Secrets zur Laufzeit über eine Managed Identity aus Key Vault ab.
- Überwachen Sie mit
undefined
und
undefined
; führen Sie interaktive Befehle mit
undefined
aus.
- Die Abrechnung erfolgt pro Sekunde für vCPU und GiB Arbeitsspeicher. Container starten schnell und eignen sich für bursty Workloads, CI-Hilfsaufgaben, Integrationstests und durch Warteschlangen ausgelöste Jobs, bei denen der Overhead von Kubernetes unnötig ist.
Azure Kubernetes Service (AKS)
AKS bietet eine verwaltete Control Plane mit Knotenpools, Autoscaling und tiefgreifenden Netzwerk- und Identitätsoptionen.
Knotenpools strukturieren die Kapazität und die Platzierung von Workloads. System-Knotenpools führen Kerndienste aus; Benutzer-Knotenpools führen Anwendungs-Pods aus. Verwenden Sie mehrere Pools, um Workloads nach CPU-/Speicher-/GPU-Bedarf, Betriebssystem (Linux/Windows), VM-Größe und Verfügbarkeitszone zu trennen. Setzen Sie Taints/Tolerations ein, um System-Pools zu schützen, Labels zur Auswahl und den Cluster-Autoscaler, um Knoten basierend auf ausstehenden Pods hinzuzufügen oder zu entfernen. Berücksichtigen Sie bei der Dimensionierung maxPods pro Knoten und die Pod-Dichte.
Das Pod-Scheduling wird durch Ressourcenanforderungen/-limits, QoS-Klassen (Guaranteed/Burstable/BestEffort) und Einschränkungen gesteuert. Verwenden Sie nodeSelector/Affinität und Anti-Affinität, um Pods in geeignete Pools zu verschieben und Replicas über Zonen und Fehlerdomänen zu verteilen. Topology Spread Constraints verbessern eine gleichmäßige Verteilung. Definieren Sie für kritische Dienste PodDisruptionBudgets und PriorityClasses, um freiwillige Unterbrechungen und das Preemption-Verhalten zu gestalten. DaemonSets platzieren Agenten pro Knoten (für Logging, Monitoring), und CronJobs planen Container für periodische Aufgaben.
Deployments in AKS sind deklarativ. YAML-Manifeste definieren apiVersion, kind, metadata und spec für Deployments, StatefulSets, Jobs, Services und Ingress. Bewahren Sie Manifeste in der Quellcodeverwaltung auf, parametrisieren Sie sie mit Kustomize-Overlays für Umgebungsunterschiede und wenden Sie sie mit
undefined
an. Server-Side Apply und korrekte Labels/Annotations helfen bei der Zuweisung von Zuständigkeiten und der Erkennung von Abweichungen (Drift). Für das Paketieren wiederverwendbarer Apps bündelt Helm 3 Templates und Values. Hosten Sie Helm-Charts als OCI-Artefakte in ACR und installieren Sie sie mit
undefined
. Verwenden Sie Values-Dateien pro Umgebung, verfolgen Sie Chart-Versionen und führen Sie für eine schnelle Wiederherstellung ein Rollback mit
undefined
durch.
kubectl-Befehle, die Sie täglich verwenden werden:
- Auf den Cluster-Kontext zugreifen:
undefined
führt die kubeconfig zusammen; die Verwendung eines mit Azure AD verbundenen Rechners mit kubectl ist ausreichend – Docker ist nicht erforderlich, um Manifeste bereitzustellen.
- Inspizieren und operieren:
undefined
;
undefined
;
undefined
;
undefined
;
undefined
;
undefined
;
undefined
;
undefined
;
undefined
.
- Anwenden/Patchen:
undefined
;
undefined
.
Das Networking in AKS stellt Pods und Services mit klaren Zuständigkeiten bereit:
- ClusterIP bietet nur interne, clusterweite virtuelle IPs und DNS für die Service Discovery. Dies ist der Standard für den Ost-West-Verkehr zwischen Microservices.
- NodePort öffnet denselben Port auf jedem Knoten; er wird am besten hinter einem Ingress oder einem externen LB verwendet, anstatt direkt konsumiert zu werden.
- LoadBalancer stellt ein Azure Load Balancer-Frontend bereit, das auf NodePorts abzielt. Kennzeichnen Sie Services als intern, indem Sie die Annotation
undefined
verwenden, oder weisen Sie eine statische öffentliche IP für stabiles DNS zu.
- Ingress-Controller bieten L7-Routing, TLS-Terminierung und Pfad-/Host-Regeln. Der NGINX Ingress Controller ist ein vielseitiger Standard mit umfangreichen Annotations. Der Application Gateway Ingress Controller (AGIC) integriert sich mit Azure Application Gateway für WAF, Autoscaling und L7-Funktionen auf Unternehmensebene, während Kubernetes-native Manifeste beibehalten werden. Verwenden Sie cert-manager, um TLS mit ACME zu automatisieren, oder synchronisieren Sie Key Vault-Zertifikate mit dem CSI Secret Store in Kubernetes-Secrets.
Identität und Autorisierung integrieren Azure AD ohne Secrets im Cluster:
- Verwaltete Identitäten für AKS bestehen aus der Cluster-/Control-Plane-Identität und der Kubelet-Identität. Vergeben Sie der Kubelet-Identität die Rolle AcrPull für ACR (
undefined
), damit Knoten Images sicher abrufen können.
- Workload Identity ermöglicht es Pods, auf Azure-Ressourcen zuzugreifen, indem föderierte Azure AD-Anmeldeinformationen verwendet werden, die auf Kubernetes Service Accounts abgebildet sind – ohne Anmeldeinformationen auf Knotenebene oder Sidecars. Aktivieren Sie den OIDC-Issuer auf dem Cluster, erstellen Sie eine benutzerseitig zugewiesene verwaltete Identität, konfigurieren Sie eine FederatedIdentityCredential für den Service Account/Namespace und verwenden Sie das Azure Identity SDK in der Anwendung. Dies ersetzt das ältere AAD Pod Identity-Modell und entspricht offenen Standards.
- RBAC regelt die Berechtigungen für die Kubernetes-API. Binden Sie Kubernetes Roles/ClusterRoles an Azure AD-Benutzer oder -Gruppen über RoleBindings/ClusterRoleBindings, wenn AKS mit Azure AD integriert ist. Alternativ können Sie Azure RBAC für die Kubernetes-Autorisierung aktivieren, um den Zugriff mit Azure RBAC-Rollen wie Azure Kubernetes Service RBAC Reader, Writer und Admin zu verwalten. Befolgen Sie das Prinzip der geringsten Rechte, trennen Sie Namespaces nach Team oder Workload und sichern Sie die Produktion über gruppenbasierte Bindungen ab.
Der End-to-End-Image-Fluss zu AKS ist unkompliziert und sicher. Erstellen Sie mehrstufige Images, taggen Sie sie mit unveränderlichen Versionen, pushen Sie sie zu ACR und deployen Sie sie mit Manifesten oder Helm in AKS. AKS pullt von ACR unter Verwendung der verwalteten Kubelet-Identität, und Pods greifen über Workload Identity auf Azure-Ressourcen zu. Services werden über ClusterIP/LoadBalancer bereitgestellt und mit einem Ingress-Controller verfeinert, der TLS und Routing zentralisiert.
Praktisches Problemszenario
Das Creative Cloud-Team von Adobe zerlegt einen monolithischen Medienverarbeitungsdienst in Microservices, mit dem Ziel einer globalen Bereitstellung mit geringer Latenz und einer gehärteten Supply Chain.
- Images mit mehrstufigen Dockerfiles in der CI erstellen und speichern
- Verwenden Sie Docker Multi-Stage, um Medien-Codecs zu kompilieren und nur die Laufzeit-Binärdateien in ein schlankes Basis-Image zu kopieren, um Größe und CVEs zu minimieren. Pushen Sie Images als
undefined
zu ACR. Dies gewährleistet reproduzierbare, sichere Artefakte mit unveränderlichen Digests für das Pinning von Deployments.
- Die Registry härten und das Patchen automatisieren
- Erstellen Sie eine ACR Premium-Registry mit privaten Endpunkten in jedem virtuellen Netzwerk, das AKS hostet. Aktivieren Sie die Geo-Replikation nach Nordeuropa und Ost-US, um Pull-Vorgänge lokal zu halten. Konfigurieren Sie ACR Tasks, um bei Updates des Upstream-Basis-Images Neubauten auszulösen, wodurch gepatchte Layer automatisch weitergegeben werden. Dies schafft ein Gleichgewicht zwischen Leistung und Sicherheit und reduziert den Egress-Traffic.
- AKS mit getrennten Knotenpools und Identitäten einrichten
- Stellen Sie AKS mit Azure CNI und System-/Benutzer-Knotenpools bereit: ein kleiner System-Pool für Control-Plane-Add-ons, GPU-fähige Benutzer-Pools für das Transcoding und Allzweck-Pools für APIs. Aktivieren Sie die Azure AD-Integration, den OIDC-Issuer und Workload Identity. Weisen Sie der Kubelet-Identität über
undefined
die Rolle AcrPull zu. Dies isoliert Workloads, skaliert effizient und eliminiert Secret-basierte Image-Pulls.
- Deklarative Deployments und Paketierung definieren
- Erstellen Sie Kubernetes-YAML für Deployments, StatefulSets (wo Persistenz erforderlich ist), Services, HorizontalPodAutoscaler und PodDisruptionBudgets. Verpacken Sie den Encoder-Service und das API-Gateway als Helm-Charts, veröffentlichen Sie sie als OCI-Artefakte in ACR und deployen Sie sie mit
undefined
unter Verwendung umgebungsspezifischer Values. Dies sorgt für konsistente, versionierte Releases und einfache Rollbacks.
- Services bereitstellen und L7-Sicherheit durchsetzen
- Verwenden Sie ClusterIP für interne Microservices und einen LoadBalancer-Service mit dem Application Gateway Ingress Controller für öffentliche APIs. Terminieren Sie TLS am Application Gateway mit einer WAF-Richtlinie, verwalten Sie Zertifikate mit cert-manager, der für ACME-Challenges in Azure DNS integriert ist, und leiten Sie den Verkehr zu den Backends nach Host/Pfad weiter. Dies führt zu L7-Sicherheit auf Unternehmensebene mit Kubernetes-nativer Konfiguration.
- Sicheren Workload-Zugriff auf Azure-Ressourcen implementieren
- Für einen Thumbnailing-Dienst, der in Blob Storage schreibt und Secrets liest, erstellen Sie eine benutzerseitig zugewiesene verwaltete Identität, föderieren Sie diese über Workload Identity mit dem Service Account und gewähren Sie die Rollen Storage Blob Data Contributor und Key Vault Secrets User. Der Pod authentifiziert sich mit Azure AD, was das Mounten von Secrets überflüssig macht und einen feingranularen, auditierbaren Zugriff ermöglicht.
- Batch-Überlauf mit ACI betreiben
- Für sporadischen Batch-Überlauf mit hoher Priorität lösen Sie ACI Multi-Container-Gruppen (Encoder + Sidecar für Metriken) mit
undefined
in einem in ein VNet integrierten Subnetz aus. Dies fängt Spitzen ab, ohne AKS auf die maximale Auslastung zu skalieren, und bewahrt private Datenpfade zu Speicherkonten.
Jede dieser Entscheidungen unterstützt direkt die Ziele von Adobe: ACR Premium mit Geo-Re
← Azure Cosmos DB · Alle Domänen · Azure-Authentifizierung →
Diese Fragen üben → · Zeitlich begrenzte Übung auf 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.
Bestehe deine Prüfung →