Integreren met Kubernetes-implementatie met Helm
Toepassingen die worden gehost in Kubernetes, hebben toegang tot gegevens in App Configuration met behulp van de Bibliotheek van de App Configuration-provider. De App Configuration-provider heeft ingebouwde mogelijkheden voor caching en vernieuwen, zodat toepassingen dynamische configuratie kunnen hebben zonder opnieuw te implementeren. Als u uw toepassing liever niet bijwerkt, ziet u in deze zelfstudie hoe u gegevens van App Configuration naar uw Kubernetes kunt overbrengen met behulp van Helm via implementatie. Op deze manier kan uw toepassing toegang blijven krijgen tot de configuratie vanuit Kubernetes-variabelen en -geheimen. U voert de Helm-upgrade uit wanneer u wilt dat uw toepassing nieuwe configuratiewijzigingen ophaalt.
Tip
Zie opties voor workloads die worden gehost in Kubernetes voor toegang tot Azure-app-configuratie.
Helm biedt een manier om toepassingen die in Kubernetes worden uitgevoerd te definiëren, installeren en upgraden. Een Helm-grafiek bevat de informatie die nodig is om een exemplaar van een Kubernetes-toepassing te maken. De configuratie wordt buiten de grafiek zelf opgeslagen, in een bestand genaamd values.yaml.
Tijdens het releaseproces voegt Helm de grafiek samen met de juiste configuratie om de toepassing uit te voeren. Er kan bijvoorbeeld naar variabelen die in values.yaml zijn gedefinieerd, worden verwezen met omgevingsvariabelen in de actieve containers. Helm ondersteunt ook het maken van Kubernetes-geheimen, die als gegevensvolumes kunnen worden gekoppeld of als omgevingsvariabelen kunnen worden weergegeven.
U kunt de waarden die in values.yaml zijn opgeslagen, overschrijven door aanvullende YAML-gebaseerde configuratiebestanden op de opdrachtregel op te geven wanneer Helm wordt uitgevoerd. Azure App Configuration ondersteunt het exporteren van configuratiewaarden naar YAML-bestanden. Door deze exportmogelijkheid in uw implementatie te integreren, kunnen uw Kubernetes-toepassingen configuratiewaarden benutten die in App Configuration zijn opgeslagen.
In deze zelfstudie leert u het volgende:
- Gebruik waarden uit App Configuration wanneer u een toepassing in Kubernetes implementeert met Helm.
- Maak een Kubernetes-geheim op basis van een sleutelkluisverwijzing in App Configuration.
In deze zelfstudie wordt ervan uitgegaan dat u basisbegrip hebt van het beheren van Kubernetes met Helm. Meer informatie over het installeren van toepassingen met Helm in Azure Kubernetes Service.
Vereisten
- Een Azure-account met een actief abonnement. Maak gratis een account.
- Azure CLI (versie 2.4.0 of hoger) installeren
- Helm (versie 2.14.0 of hoger) installeren
- Een App Configuration-archief. Een winkel maken.
- Een Kubernetes-cluster.
Sleutelwaarden toevoegen
Voeg de volgende sleutelwaarden toe aan het App Configuration-archief en laat label en inhoudstype ongewijzigd met de standaardwaarden. Ga naar Een sleutelwaarde maken voor meer informatie over het toevoegen van sleutelwaarden aan een archief met behulp van Azure Portal of de CLI.
Sleutel | Weergegeven als |
---|---|
settings.color | Wit |
settings.message | Gegevens uit Azure-app-configuratie |
Een sleutelkluisverwijzing toevoegen aan App Configuration
Meld u aan bij de Azure-portal en voeg een geheim aan Sleutelkluis toe met de naam Wachtwoord en de waarde mijnwachtwoord.
Selecteer het App Configuration-archiefexemplaar dat u in de vorige sectie hebt gemaakt.
Selecteer Configuratieverkenner.
Selecteer + Maken>Sleutelkluisverwijzing en geef de volgende waarden op:
- Sleutel: selecteer secrets.password.
- Label: laat deze waarde leeg.
- Abonnement, resourcegroep en sleutelkluis: voer de waarden in die overeenkomen met die in de sleutelkluis die u in de vorige stap hebt gemaakt.
- Geheim: Selecteer het geheim met de naam Wachtwoord dat u in de vorige sectie hebt gemaakt.
Helm-grafiek maken
Maak eerst een Helm-voorbeeldgrafiek met de volgende opdracht:
helm create mychart
Helm maakt een nieuwe directory genaamd ‘mychart’ met de structuur die hieronder wordt weergegeven.
Tip
Volg deze grafiekhandleiding voor meer informatie.
mychart
|-- Chart.yaml
|-- charts
|-- templates
| |-- NOTES.txt
| |-- _helpers.tpl
| |-- deployment.yaml
| |-- ingress.yaml
| `-- service.yaml
`-- values.yaml
Werk vervolgens de sectie spec:template:spec:containers van het bestand deployment.yaml bij. Het volgende fragment voegt twee omgevingsvariabelen aan de container toe. U zult de waarden ervan dynamisch instellen tijdens de implementatie.
env:
- name: Color
value: {{ .Values.settings.color }}
- name: Message
value: {{ .Values.settings.message }}
Na de update moet het volledige deployment.yaml-bestand eruitzien zoals hieronder.
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: {{ include "mychart.fullname" . }}
labels:
app.kubernetes.io/name: {{ include "mychart.name" . }}
helm.sh/chart: {{ include "mychart.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app.kubernetes.io/name: {{ include "mychart.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
template:
metadata:
labels:
app.kubernetes.io/name: {{ include "mychart.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
- name: Color
value: {{ .Values.settings.color }}
- name: Message
value: {{ .Values.settings.message }}
ports:
- name: http
containerPort: 80
protocol: TCP
livenessProbe:
httpGet:
path: /
port: http
readinessProbe:
httpGet:
path: /
port: http
resources:
{{ toYaml .Values.resources | indent 12 }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{ toYaml . | indent 8 }}
{{- end }}
Als u gevoelige gegevens als Kubernetes-geheimen wilt opslaan, voegt u een secrets.yaml-bestand toe onder de map met sjablonen.
Tip
Meer informatie over het gebruiken van Kubernetes-geheimen.
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
password: {{ .Values.secrets.password | b64enc }}
Tot slot werkt u het bestand values.yaml met de volgende inhoud bij om desgewenst standaardwaarden van de configuratie-instellingen en geheimen te bieden waarnaar wordt verwezen in de bestanden deployment.yaml en secrets.yaml. De daadwerkelijke waarden ervan worden overschreven door configuratie die uit App Configuration wordt opgehaald.
# settings will be overwritten by App Configuration
settings:
color: red
message: myMessage
Configuratie uit App Configuration doorgeven aan Helm-installatie
Download de configuratie uit App Configuration eerst naar een myConfig.yaml-bestand. Gebruik een sleutelfilter om alleen de sleutels te downloaden die met settings. beginnen. Als het sleutelfilter in uw geval niet voldoende is om sleutels uit te sluiten van sleutelkluisverwijzingen, kunt u het argument --skip-keyvault gebruiken om ze uit te sluiten.
Tip
Meer informatie over de exportopdracht.
az appconfig kv export -n myAppConfiguration -d file --path myConfig.yaml --key "settings.*" --separator "." --format yaml
Download vervolgens geheimen naar een bestand genaamd mySecrets.yaml. Het opdrachtregelargument --resolve-keyvault lost de sleutelkluisverwijzingen op door de daadwerkelijke waarden op te halen in Sleutelkluis. U moet deze opdracht uitvoeren met aanmeldingsgegevens die toegangsmachtigingen voor de bijbehorende sleutelkluis hebben.
Waarschuwing
Aangezien dit bestand gevoelige gegevens bevat, moet u het veilig opslaan en moet u het verwijderen wanneer u het niet meer nodig hebt.
az appconfig kv export -n myAppConfiguration -d file --path mySecrets.yaml --key "secrets.*" --separator "." --resolve-keyvault --format yaml
Gebruik het argument -f van de Helm-upgrade om de twee configuratiebestanden door te geven die u hebt gemaakt. Ze overschrijven de configuratiewaarden die in values.yaml zijn gedefinieerd met de waarden die uit App Configuration zijn geëxporteerd.
helm upgrade --install -f myConfig.yaml -f mySecrets.yaml "example" ./mychart
U kunt ook het argument --set voor helm-upgrade gebruiken om letterlijke sleutelwaarden door te geven. Het gebruik van het argument --set is een goede manier om permanente gevoelige gegevens op schijf te voorkomen.
$secrets = az appconfig kv list -n myAppConfiguration --key "secrets.*" --resolve-keyvault --query "[*].{name:key, value:value}" | ConvertFrom-Json
foreach ($secret in $secrets) {
$keyvalues += $secret.name + "=" + $secret.value + ","
}
if ($keyvalues){
$keyvalues = $keyvalues.TrimEnd(',')
helm upgrade --install --set $keyvalues "example" ./mychart
}
else{
helm upgrade --install "example" ./mychart
}
Verifieer dat configuraties en geheimen succesvol zijn ingesteld door het Kubernetes-dashboard te openen. U ziet dat de waarden voor color en message uit App Configuration zijn ingevuld in de omgevingsvariabelen van de container.
Eén geheim, password, dat als sleutelkluisverwijzing in App Configuration is opgeslagen, is ook toegevoegd aan Kubernetes-geheimen.
Resources opschonen
Als u de resources die in dit artikel zijn gemaakt niet wilt blijven gebruiken, verwijdert u de resourcegroep die u hier hebt gemaakt om kosten te voorkomen.
Belangrijk
Het verwijderen van een resourcegroep kan niet ongedaan worden gemaakt. De resourcegroep en alle resources daarin worden permanent verwijderd. Zorg ervoor dat u niet per ongeluk de verkeerde resourcegroep of resources verwijdert. Als u de resources voor dit artikel in een resourcegroep hebt gemaakt die andere resources bevat die u wilt behouden, moet u elke resource afzonderlijk verwijderen uit het deelvenster in plaats van dat u de resourcegroep verwijdert.
- Meld u aan bij de Azure-portal en selecteer Resourcegroepen.
- Voer de naam van de resourcegroep in het vak Filteren op naam in.
- Selecteer in de resultatenlijst de resourcegroepnaam om een overzicht te bekijken.
- Selecteer Resourcegroep verwijderen.
- U wordt gevraagd om het verwijderen van de resourcegroep te bevestigen. Voer de naam van de resourcegroep in ter bevestiging en selecteer Verwijderen.
Na enkele ogenblikken worden de resourcegroep en alle bijbehorende resources verwijderd.
Volgende stappen
In deze zelfstudie hebt u Azure App Configuration-gegevens geëxporteerd die moeten worden gebruikt in een Kubernetes-implementatie met Helm. Voor meer informatie over het gebruik van App Configuration gaat u verder naar de Azure CLI-voorbeelden.