Oefening: een Helm-grafiek maken voor implementatie
In deze eenheid maakt u een Helm-grafiek om te implementeren in Azure Kubernetes Service (AKS) met behulp van GitHub Actions. Als u de Helm-grafiek wilt maken, voert u de volgende taken uit:
- Controleer de Helm-installatie.
- Maak een grafiek.
- Configureer de grafiek.
- Een implementatie maken.
- Maak een leeg YAML-bestand.
- Voeg inhoud toe aan het YAML-bestand.
- Een service maken.
- Maak een toegangsbeheerobject.
- Maak een DNS-zonenaam.
Controleer de Helm-installatie en werk de opslagplaats bij
De Helm CLI is al geïnstalleerd in Azure Cloud Shell. Als u Cloud Shell nog niet hebt geopend, meldt u zich aan bij Cloud Shell en controleert u of Bash is ingesteld als de Cloud Shell-terminal.
Voer
helm version
deze opdracht uit om ervoor te zorgen dat de weergegeven Helm-versie groter is dan 3.Schakel over naar uw geforkte opslagplaats voor deze module door deze uit te voeren
cd mslearn-aks-deployment-pipeline-github-actions
.Voer uit
git pull origin main
om uw wijzigingen op te halen uit eerdere eenheden.
Een Helm-grafiek maken
Genereer een Standaard Helm-sjabloon in de kubernetes-map van uw opslagplaats.
Schakel in Cloud Shell over naar de kubernetes-map :
cd kubernetes
Hiermee
helm create
maakt u een nieuwe map met de naam contoso-website in de kubernetes-directory :helm create contoso-website
Schakel over naar de nieuwe map met
cd
.cd contoso-website
Verwijder de mappen grafieken en sjablonen in deze map.
rm -r charts templates
Maak een nieuwe lege map met sjablonen .
mkdir templates
Als u workloads wilt bouwen in uw lege grafiek, maakt u een nieuwe set YAML-bestanden door de bestaande bestanden in kubernetes te verplaatsen naar de nieuwe map met sjablonen :
mv ../*.yaml ./templates
U hebt nu een nieuwe Helm-grafiek. Configureer vervolgens de grafiek.
De grafiek configureren
Voer deze opdracht uit
cd ../..
om over te schakelen naar de hoofdmap van uw opslagplaats.Voer deze opdracht uit
code .
om de code-editor in de huidige map te openen.Vouw in het linkermenu de map kubernetes/contoso-website uit en open het bestand Chart.yaml . Chart.yaml is het bestand dat de grafiek een naam krijgt en waar Helm zoekt naar informatie over de grafiek.
Verwijder alle inhoud van het bestand, met uitzondering van de eerste drie regels en de grafiekversie, en bewerk de beschrijving zodat het bestand er als volgt uitziet:
apiVersion: v2 name: contoso-website description: Chart for the Contoso company website version: 0.1.0
Sla het bestand op door de rechterbovenhoek van de editorwerkbalk te selecteren en vervolgens Opslaan te selecteren of door op Ctrl+S te drukken.
Een implementatie maken
Sjablonen voor deze implementatie toevoegen.
Open in het linkermenu het bestand deployment.yaml in de map kubernetes/templates .
Voeg in de hoofdsectie
metadata
een nieuwe sleutel toe die wordt aangeroepennamespace
met de waarde{{ default "staging" .Release.Namespace }}
. Demetadata
sectie moet er als volgt uitzien:metadata: name: contoso-website namespace: {{ default "staging" .Release.Namespace }}
De werkstroom implementeert deze resource standaard in de
staging
naamruimte, maar als dehelm install
opdracht eenNamespace
optie heeft, gebruikt de werkstroom in plaats daarvan die naamruimte.Vervang onder de
template
/containers
spec
/sectie door!IMAGE!
delatest
oftag
versies van uw AKS-cluster.Het is raadzaam om de naam
image
van deregistry
afbeelding op te splitsen entag
delen van de naam van de installatiekopie om er gemakkelijker mee te werken. Voeg drie nieuwe sjabloonvariabelen toe die gebruikmaken van de waarden vanValues.image.registry
,Values.image.name
enValues.image.tag
.- image: {{ .Values.image.registry }}.azurecr.io/{{ .Values.image.name }}:{{ default "latest" .Values.image.tag }}
Uw bestand deployment.yaml moet eruitzien als in het volgende voorbeeld:
apiVersion: apps/v1 kind: Deployment metadata: name: contoso-website namespace: {{ default "staging" .Release.Namespace }} spec: selector: matchLabels: app: contoso-website template: metadata: labels: app: contoso-website spec: containers: - image: {{ .Values.image.registry }}.azurecr.io/{{ .Values.image.name }}:{{ default "latest" .Values.image.tag }} name: contoso-website resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi ports: - containerPort: 80 name: http
Sla het bestand op.
Inhoud toevoegen aan het bestand values.yaml
Eerder hebt u dit gebruikt {{ .Release.Namespace }}
, dus Release
een variabel bereik. Elk variabele bereik heeft verschillende standaardwaarden en -variabelen. Het bestand values.yaml is een ander variabele bereik. Helm maakt gebruik van het bestand values.yaml om alle sjabloonwaarden op te halen die beginnen met {{ .Values }}
.
Dit bestand moet dezelfde structuur hebben als het bestand dat u gebruikt om de variabelen aan te roepen. Bekijk het bewerkte bestand deployment.yaml om de structuur te bekijken. U ziet dat u hebt gebruikt .Values.image.registry
, .Values.image.name
en .Values.image.tag
in het bestand deployment.yaml .
Open in de hoofdmap van de map contoso-website het bestand values.yaml .
Verwijder alle inhoud in het bestand, zodat u een leeg YAML-bestand hebt.
Voeg de volgende inhoud toe aan het lege bestand, waarbij u de tijdelijke aanduiding vervangt door de
<ACR-NAME>
naam van uw Azure Container Registry.image: registry: <ACR-NAME> name: contoso-website tag: latest
Deze waarden zijn de standaardwaarde als u geen andere waarde als parameter doorgeeft met behulp van de
--set
optie van de Helm-opdracht.Sla het bestand op.
Een service maken
Open het bestand service.yaml in de map sjablonen .
Voeg in de
metadata
sectie van het bestand een nieuwe sleutel toe met de naamnamespace
die dezelfde waarde gebruikt als in het bestand deployment.yaml .namespace: {{ default "staging" .Release.Namespace }}
Het bestand service.yaml moet eruitzien als in het volgende voorbeeld:
apiVersion: v1 kind: Service metadata: name: contoso-website namespace: {{ default "staging" .Release.Namespace }} spec: ports: - port: 80 protocol: TCP targetPort: http name: http selector: app: contoso-website type: ClusterIP
Sla het bestand op.
Een toegangsbeheerobject maken
Open het bestand ingress.yaml .
Voeg in de
metadata
sectie van het bestand opnieuw denamespace
waarde toe die u hebt gebruikt in het bestand deployment.yaml .Ga naar de sleutel
host
. U maakt afzonderlijke hosts voor faserings- en productie-implementaties, zodat gebruikers geen toegang hebben tot destaging
naamruimte met behulp van productie-URL's. Voeg de naamruimte samen in de hostnaam. De invoegtoepassing voor het routeren van HTTP-toepassingen in de AKS-cluster verwerkt naamomzetting.- host: contoso-{{ default "staging" .Release.Namespace }}.!DNS!
Vervang door
!DNS!
een nieuwe sjabloonvariabele voor de naam van uw DNS-zone.- host: contoso-{{ default "staging" .Release.Namespace }}.{{ .Values.dns.name }}
Het uiteindelijke ingress.yaml-bestand moet eruitzien als in het volgende voorbeeld:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: contoso-website namespace: {{ default "staging" .Release.Namespace }} annotations: kubernetes.io/ingress.class: addon-http-application-routing spec: rules: - host: contoso-{{ default "staging" .Release.Namespace }}.{{ .Values.dns.name }} http: paths: - backend: service: name: contoso-website port: name: http path: / pathType: Prefix
Sla het bestand op.
Een dns-zonenaamwaarde toevoegen
Open het bestand values.yaml en voeg een
dns.name
sleutel toe na deimage
sleutel. Vervang<ACR-NAME>
door de naam van uw containerregister en<DNS-NAME>
door de DNS-zonenaam van uw AKS uit de uitvoer van het installatiescript. Uw bestand zou er als het volgende voorbeeld moeten uitzien:image: registry: <ACR-NAME> name: contoso-website tag: latest dns: name: <DNS-NAME>
Als u de naam van uw DNS-zone niet hebt uit de uitvoer van het oorspronkelijke installatiescript, voert u de volgende Azure CLI-query uit in een ander Cloud Shell-venster om deze op te halen, waarbij u de tijdelijke aanduiding vervangt door de
<resource-group-name>
naam van uw resourcegroep.az aks show -g <resource-group-name> -n contoso-website -o tsv --query addonProfiles.httpApplicationRouting.config.HTTPApplicationRoutingZoneName
Sla het bestand op.
Uw wijzigingen pushen
Sluit de Cloud Shell-editor door de rechterbovenhoek van de editorwerkbalk te selecteren en vervolgens Editor sluiten te selecteren.
Als u alle wijzigingen naar uw fork wilt pushen, voert u de volgende opdrachten uit in Cloud Shell in volgorde:
git add .
git commit -m "Add helm"
git push -u origin main
Geef de pat op die u eerder hebt gemaakt als het wachtwoord wanneer u hierom wordt gevraagd.
Ga verder met de volgende eenheid om uw Helm-grafiek en -toepassing te implementeren in AKS met behulp van GitHub Actions.