Integrera med Kubernetes-distribution med Hjälp av Helm
Helm är ett sätt att definiera, installera och uppgradera program som körs i Kubernetes. Ett Helm-diagram innehåller den information som krävs för att skapa en instans av ett Kubernetes-program. Konfigurationen lagras utanför själva diagrammet i en fil med namnet values.yaml.
Under lanseringsprocessen sammanfogar Helm diagrammet med rätt konfiguration för att köra programmet. Variabler som definieras i values.yaml kan till exempel refereras till som miljövariabler i containrarna som körs. Helm stöder också skapandet av Kubernetes-hemligheter, som kan monteras som datavolymer eller exponeras som miljövariabler.
Du kan åsidosätta de värden som lagras i values.yaml genom att ange ytterligare YAML-baserade konfigurationsfiler på kommandoraden när du kör Helm. Azure App Configuration stöd för export av konfigurationsvärden till YAML-filer. Genom att integrera den här exportkapaciteten i din distribution kan Kubernetes-program utnyttja konfigurationsvärden som lagras i App Configuration.
I den här guiden får du lära dig att:
- Använd värden från App Configuration när du distribuerar ett program till Kubernetes med hjälp av Helm.
- Skapa en Kubernetes-hemlighet baserat på en Key Vault referens i App Configuration.
Den här självstudien förutsätter grundläggande kunskaper om att hantera Kubernetes med Helm. Läs mer om hur du installerar program med Helm i Azure Kubernetes Service.
Förutsättningar
- Om du inte har en Azure-prenumerationkan du skapa ett kostnads fritt konto innan du börjar.
- Installera Azure CLI (version 2.4.0 eller senare)
- Installera Helm (version 2.14.0 eller senare)
- Ett Kubernetes-kluster.
Skapa ett App Configuration butik
Om du vill skapa ett nytt konfigurations Arkiv för appen loggar du in på Azure Portal. I det övre vänstra hörnet på Start sidan väljer du skapa en resurs. I rutan Sök på Marketplace anger du app-konfiguration och väljer RETUR.

Välj app-konfiguration från Sök resultaten och välj sedan skapa.

I fönstret skapa app-konfiguration anger du följande inställningar:
Inställning Föreslaget värde Beskrivning Prenumeration Din prenumeration Välj den Azure-prenumeration du vill använda för att testa App Configuration. Om ditt konto bara har en prenumeration väljs den automatiskt och ingen prenumerations lista visas. Resursgrupp AppConfigTestResources Välj eller skapa en resurs grupp för din app Configuration Store-resurs. Den här gruppen är användbar för att organisera flera resurser som du kanske vill ta bort samtidigt genom att ta bort resurs gruppen. Mer information finns i använda resurs grupper för att hantera dina Azure-resurser. Resurs namn Globalt unikt namn Ange ett unikt resurs namn som ska användas för appens konfigurations Arkiv resurs. Namnet måste vara en sträng mellan 5 och 50 tecken och får bara innehålla siffror, bokstäver och -tecknet. Namnet får inte börja eller sluta med-specialtecknet.Plats USA, centrala Använd Plats till att ange den geografiska plats där appkonfigurationsarkivets resurs finns. För bästa prestanda skapar du resursen i samma region som andra komponenter i ditt program. Prisnivå Kostnadsfri Välj önskad pris nivå. Mer information finns på sidan med prissättning för app-konfiguration. Välj Granska + skapa för att validera inställningarna.
Välj Skapa. Distributionen kan ta några minuter.
När distributionen är klar går du till appen konfigurations resurs. Välj Inställningar > Åtkomstnycklar. Anteckna den primära skrivskyddade nyckel anslutnings strängen. Du kommer att använda den här anslutnings strängen senare för att konfigurera programmet för att kommunicera med det app-konfigurations lager som du har skapat.
Välj Configuration Explorer > Skapa för att lägga till följande nyckel/värde-par:
Tangent Värde settings.color Vit settings.message Data från Azure App Configuration Lämna Etikett och Innehållstyp tomma för tillfället.
Lägga till en Key Vault-referens för App Configuration
Logga in på Azure Portal och lägg till en hemlighet i Key Vault med namnet Lösenord och värdet myPassword.
Välj den App Configuration Store-instans som du skapade i föregående avsnitt.
Välj Configuration Explorer.
Välj + Skapa > nyckelvalvsreferens och ange sedan följande värden:
- Nyckel: Välj secrets.password.
- Etikett: Lämna det här värdet tomt.
- Prenumeration, Resursgrupp och Nyckelvalv: Ange de värden som motsvarar de i nyckelvalvet som du skapade i föregående steg.
- Hemlighet: Välj hemligheten med namnet Lösenord som du skapade i föregående avsnitt.
Skapa Helm-diagram
Skapa först ett Helm-exempeldiagram med följande kommando:
helm create mychart
Helm skapar en ny katalog med namnet mychart med strukturen som visas nedan.
Tips
Följ den här diagramguiden om du vill veta mer.
mychart
|-- Chart.yaml
|-- charts
|-- templates
| |-- NOTES.txt
| |-- _helpers.tpl
| |-- deployment.yaml
| |-- ingress.yaml
| `-- service.yaml
`-- values.yaml
Uppdatera sedan avsnittet spec:template:spec:containers i filen deployment.yaml. Följande kodfragment lägger till två miljövariabler i containern. Du anger deras värden dynamiskt vid tidpunkten för distributionen.
env:
- name: Color
value: {{ .Values.settings.color }}
- name: Message
value: {{ .Values.settings.message }}
Den fullständiga filen deployment.yaml efter uppdateringen bör se ut som nedan.
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 }}
Om du vill lagra känsliga data som Kubernetes Secrets lägger du till en secrets.yaml-fil under mappen templates.
Tips
Läs mer om hur du använder Kubernetes Secrets.
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
password: {{ .Values.secrets.password | b64enc }}
Slutligen uppdaterar du filen values.yaml med följande innehåll för att eventuellt ange standardvärden för de konfigurationsinställningar och hemligheter som refereras i filerna deployment.yaml och secrets.yaml. Deras faktiska värden skrivs över av konfigurationen som hämtas från App Configuration.
# settings will be overwritten by App Configuration
settings:
color: red
message: myMessage
Skicka konfiguration från App Configuration Helm-installation
Först laddar du ned konfigurationen från App Configuration till en myConfig.yaml-fil. Använd ett nyckelfilter för att bara ladda ned de nycklar som börjar med inställningarna.. Om nyckelfiltret inte är tillräckligt för att undanta nycklar Key Vault referenser kan du använda argumentet --skip-keyvault för att exkludera dem.
Tips
Läs mer om exportkommandot.
az appconfig kv export -n myAppConfiguration -d file --path myConfig.yaml --key "settings.*" --separator "." --format yaml
Ladda sedan ned hemligheter till en fil med namnet mySecrets.yaml. Kommandoradsargumentet --resolve-keyvault matchar Key Vault referenser genom att hämta de faktiska värdena i Key Vault. Du måste köra det här kommandot med autentiseringsuppgifter som har åtkomstbehörighet till motsvarande Key Vault.
Varning
Eftersom den här filen innehåller känslig information bör du hålla filen med försiktighet och rensa när den inte längre behövs.
az appconfig kv export -n myAppConfiguration -d file --path mySecrets.yaml --key "secrets.*" --separator "." --resolve-keyvault --format yaml
Använd helm upgrade-argumentet -f för att skicka de två konfigurationsfilerna som du har skapat. De åsidosätter konfigurationsvärdena som definieras i values.yaml med de värden som exporteras från App Configuration.
helm upgrade --install -f myConfig.yaml -f mySecrets.yaml "example" ./mychart
Du kan också använda argumentet --set för Helm Upgrade för att skicka literalnyckelvärden. Att använda argumentet --set är ett bra sätt att undvika att bevara känsliga data till disk.
$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
}
Kontrollera att konfigurationer och hemligheter har angetts genom att öppna Kubernetes-instrumentpanelen. Du ser att färg- och meddelandevärdena från App Configuration har fyllts i containerns miljövariabler.

En hemlighet, lösenord, lagrar som Key Vault referens i App Configuration har också lagts till i Kubernetes Secrets.

Rensa resurser
Om du inte vill fortsätta använda resurserna som skapats i den här artikeln tar du bort resurs gruppen som du skapade här för att undvika avgifter.
Viktigt
Att ta bort en resursgrupp kan inte ångras. Resurs gruppen och alla resurser i den tas bort permanent. Var noga så att du inte tar bort fel resursgrupp eller resurser av misstag. Om du har skapat resurserna för den här artikeln i en resurs grupp som innehåller andra resurser som du vill behålla, tar du bort varje resurs separat från dess respektive fönster i stället för att ta bort resurs gruppen.
- Logga in på Azure Portaloch välj resurs grupper.
- I rutan Filtrera efter namn anger du namnet på din resurs grupp.
- I listan resultat väljer du resurs gruppens namn för att se en översikt.
- Välj Ta bort resursgrupp.
- Du blir ombedd att bekräfta borttagningen av resursgruppen. Ange namnet på resurs gruppen som ska bekräftas och välj ta bort.
Efter en liten stund tas resurs gruppen och alla dess resurser bort.
Nästa steg
I den här självstudien exporterade du Azure App Configuration data som ska användas i en Kubernetes-distribution med Helm. Om du vill veta mer om hur App Configuration kan du fortsätta till Azure CLI-exemplen.