Oefening: een toepassing implementeren in uw Azure Kubernetes Service-cluster
In deze oefening implementeert u de website van uw bedrijf als een test-app in Azure Kubernetes Service (AKS). De website is een statische website met een onderliggende technologiestack van HTML, CSS en JavaScript. Er worden niet zoveel aanvragen op ontvangen als op de andere services en het biedt ons een veilige manier om implementatieopties te testen.
Notitie
De code voor de web-app is beschikbaar in deze GitHub-opslagplaats als u de broncode verder wilt verkennen. Deze voorbeeld-app wordt ook alleen geïmplementeerd in een Linux-knooppuntgroep.
Belangrijk
U hebt uw eigen Azure-abonnement nodig om deze oefening te voltooien en er kunnen kosten in rekening worden gebracht. Als u nog geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
Een implementatiemanifest maken
U maakt een implementatiemanifestbestand om uw toepassing te implementeren. Met het manifestbestand kunt u definiëren welk type resource u wilt implementeren en kunt u alle details definiëren die betrekking hebben op de werkbelasting.
In Kubernetes worden containers in logische structuren, genaamd pods, gegroepeerd. Pods hebben geen intelligentie. Met implementaties wordt de ontbrekende intelligentie toegevoegd om uw applicatie te ontwikkelen. We gaan een implementatiebestand maken.
Gebruik een teksteditor zoals Visual Studio Code op uw computer en kopieer en plak de volgende YAML-code in een bestand met de naam deployment.yaml en sla het bestand op.
# deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: contoso-website spec: selector: matchLabels: app: contoso-website template: metadata: labels: app: contoso-website spec: nodeSelector: kubernetes.io/os: linux containers: - image: mcr.microsoft.com/mslearn/samples/contoso-website name: contoso-website resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi ports: - containerPort: 80 name: http- Er worden twee sleutels gebruikt om het
apiVersionenkindmanifest te definiëren dat u maakt. Zie deapiVersionvoor meer informatie over en welke waarden u in deze sleutel moet plaatsen. - De
nameis de naam van de implementatie. Gebruik deze om de implementatiegegevens te identificeren en op te vragen wanneer u deze gebruiktkubectl. - De sjabloondefinitie definieert de podgegevens in het manifestbestand. De sjabloon wordt in het manifestbestand geplaatst, onder de sectie met de implementatiespecificatie.
- De
labelssleutel waarmee implementaties pods kunnen vinden en groeperen. - In een AKS-cluster met Linux- en Windows-knooppuntgroepen definieert het implementatiemanifest een
nodeSelectorom uw AKS-cluster te laten weten dat de pod van de voorbeeldtoepassing moet worden uitgevoerd op een knooppunt waarop Linux-containers kunnen worden uitgevoerd. Linux-knooppunten kunnen geen Windows-containers uitvoeren en omgekeerd. - De
containers-sleutel is een matrix met containerspecificaties omdat een pod een of meer containers kan hebben. De specificatie definieert eenimage, aname,resourcesenportsandere belangrijke informatie over de container. Alle actieve pods volgen de naamcontoso-website-<UUID>, waarbij UUID een gegenereerde id is om alle resources uniek te identificeren. - Het is een goede gewoonte om een minimum en een maximale hoeveelheid resources te definiëren die de app mag gebruiken vanuit het cluster. U gebruikt de
resources-sleutel om deze informatie op te geven. In de resourcesectie kunt u het minimale resourcebedrag opgeven als een aanvraag en het maximale resourcebedrag als een limiet. - De poorten die deze container extern beschikbaar maakt via de
portssleutel. Deports-sleutel is een matrix met objecten; dit betekent dat een container in een pod meerdere poorten met meerdere namen beschikbaar kan maken. U noemt de poort met behulp van denamesleutel. Door poorten een naam te geven, kunt u de beschikbaar gemaakte poort wijzigen zonder bestanden die naar die poort verwijzen te hoeven wijzigen.
- Er worden twee sleutels gebruikt om het
upload deployment.yaml naar uw Cloud Shell-sessie door te kiezen voor Bestanden beheren>uploaden.
Het manifest toepassen
Voer in Cloud Shell de
kubectl apply-opdracht uit om de implementatiemanifest in te dienen bij uw cluster.kubectl apply -f ./deployment.yamlMet deze opdracht moet een resultaat worden uitgevoerd dat vergelijkbaar is met het volgende voorbeeld.
deployment.apps/contoso-website createdVoer de
kubectl get deploy-opdracht uit om te controleren of de implementatie is geslaagd.kubectl get deploy contoso-websiteMet deze opdracht moet een tabel worden uitgevoerd dat vergelijkbaar is met het volgende voorbeeld.
NAME READY UP-TO-DATE AVAILABLE AGE contoso-website 1/1 1 1 19sVoer de
kubectl get podsopdracht uit om te controleren of de pod actief is.kubectl get podsMet deze opdracht moet een tabel worden uitgevoerd dat vergelijkbaar is met het volgende voorbeeld.
NAME READY STATUS RESTARTS AGE contoso-website-1c2b3b4b5b-dzsvm 1/1 Running 0 68s