Integrace s nasazením Kubernetes pomocí Helmu

Aplikace hostované v Kubernetes mají přístup k datům v App Configuration pomocí knihovny zprostředkovatele konfigurace aplikací. Zprostředkovatel konfigurace aplikace má integrované možnosti ukládání do mezipaměti a aktualizace, aby aplikace mohly mít dynamickou konfiguraci bez opětovného nasazení. Pokud nechcete aktualizovat aplikaci, v tomto kurzu se dozvíte, jak přenést data z konfigurace aplikace do Kubernetes pomocí nástroje Helm prostřednictvím nasazení. Díky tomu může vaše aplikace dál přistupovat ke konfiguraci z proměnných a tajných kódů Kubernetes. Upgrade Helm spustíte, když chcete, aby vaše aplikace převzala nové změny konfigurace.

Tip

Viz možnosti pro úlohy hostované v Kubernetes pro přístup ke konfiguraci Aplikace Azure.

Helm poskytuje způsob, jak definovat, instalovat a upgradovat aplikace spuštěné v Kubernetes. Chart Helm obsahuje informace potřebné k vytvoření instance aplikace Kubernetes. Konfigurace se ukládá mimo samotný graf v souboru s názvem values.yaml.

Během procesu vydání helm sloučí graf se správnou konfigurací pro spuštění aplikace. Například proměnné definované v values.yaml lze odkazovat jako proměnné prostředí uvnitř spuštěných kontejnerů. Helm také podporuje vytváření tajných kódů Kubernetes, které je možné připojit jako datové svazky nebo vystavit jako proměnné prostředí.

Hodnoty uložené v souboru values.yaml můžete přepsat poskytnutím dalších konfiguračních souborů založených na YAML na příkazovém řádku při spuštění nástroje Helm. Aplikace Azure Configuration podporuje export hodnot konfigurace do souborů YAML. Integrace této možnosti exportu do vašeho nasazení umožňuje aplikacím Kubernetes využívat konfigurační hodnoty uložené v App Configuration.

V tomto kurzu se naučíte:

  • Hodnoty z App Configuration použijte při nasazování aplikace do Kubernetes pomocí Nástroje Helm.
  • Vytvořte tajný klíč Kubernetes na základě odkazu služby Key Vault v konfiguraci aplikace.

V tomto kurzu se předpokládá základní znalost správy Kubernetes pomocí Helmu. Přečtěte si další informace o instalaci aplikací s Helmem ve službě Azure Kubernetes Service.

Požadavky

Přidání hodnot klíče

Přidejte do obchodu App Configuration následující hodnoty klíčů a ponechte popisek a typ obsahu s výchozími hodnotami. Další informace o tom, jak přidat hodnoty klíčů do úložiště pomocí webu Azure Portal nebo rozhraní příkazového řádku, najdete v tématu Vytvoření hodnoty klíče.

Key Hodnota
settings.color Bílé
settings.message Data z konfigurace Aplikace Azure

Přidání odkazu služby Key Vault do konfigurace aplikace

  1. Přihlaste se k webu Azure Portal a přidejte tajný kód do služby Key Vault s názvem Heslo a hodnotou myPassword.

  2. Vyberte instanci App Configuration Storu, kterou jste vytvořili v předchozí části.

  3. Vyberte Průzkumníka konfigurace.

  4. Vyberte a vytvořte>odkaz na trezor klíčů a zadejte následující hodnoty:

    • Klíč: Vyberte secrets.password.
    • Popisek: Ponechte tuto hodnotu prázdnou.
    • Předplatné, skupina prostředků a trezor klíčů: Zadejte hodnoty odpovídající hodnotám v trezoru klíčů, který jste vytvořili v předchozím kroku.
    • Tajný kód: Vyberte tajný klíč s názvem Heslo , které jste vytvořili v předchozí části.

Vytvoření chartu Helm

Nejprve vytvořte ukázkový chart Helm pomocí následujícího příkazu:

helm create mychart

Helm vytvoří nový adresář s názvem mychart se strukturou uvedenou níže.

Tip

Další informace najdete v tomto průvodci grafy.

mychart
|-- Chart.yaml
|-- charts
|-- templates
|   |-- NOTES.txt
|   |-- _helpers.tpl
|   |-- deployment.yaml
|   |-- ingress.yaml
|   `-- service.yaml
`-- values.yaml

Dále aktualizujte část spec:template:spec:containers souboru deployment.yaml. Následující fragment kódu přidá do kontejneru dvě proměnné prostředí. Jejich hodnoty nastavíte dynamicky v době nasazení.

env:
- name: Color
    value: {{ .Values.settings.color }}
- name: Message
    value: {{ .Values.settings.message }}

Kompletní soubor deployment.yaml po aktualizaci by měl vypadat následovně.

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 }}

Pokud chcete citlivá data ukládat jako tajné kódy Kubernetes, přidejte do složky šablon soubor secrets.yaml .

Tip

Přečtěte si další informace o používání tajných kódů Kubernetes.

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  password: {{ .Values.secrets.password | b64enc }}

Nakonec aktualizujte soubor values.yaml následujícím obsahem, abyste volitelně zadali výchozí hodnoty nastavení konfigurace a tajných kódů odkazovaných v souborech deployment.yaml a secrets.yaml . Jejich skutečné hodnoty se přepíšou konfigurací, kterou načte z konfigurace aplikace.

# settings will be overwritten by App Configuration
settings:
  color: red
  message: myMessage

Předání konfigurace z konfigurace aplikace v instalaci Helmu

Nejprve stáhněte konfiguraci z App Configuration do souboru myConfig.yaml . Filtr klíčů použijte ke stažení jenom těch klíčů, které začínají nastavením. Pokud v případě, že filtr klíčů nestačí k vyloučení klíčů odkazů služby Key Vault, můžete k jejich vyloučení použít argument --skip-keyvault .

Tip

Přečtěte si další informace o příkazu exportu.

az appconfig kv export -n myAppConfiguration -d file --path myConfig.yaml --key "settings.*"  --separator "." --format yaml

Dále stáhněte tajné kódy do souboru mySecrets.yaml. Argument příkazového řádku --resolve-keyvault přeloží odkazy služby Key Vault načtením skutečných hodnot ve službě Key Vault. Tento příkaz budete muset spustit s přihlašovacími údaji, které mají přístupová oprávnění k příslušné službě Key Vault.

Upozorňující

Protože tento soubor obsahuje citlivé informace, udržujte soubor opatrně a vyčistěte ho, když už ho nepotřebujete.

az appconfig kv export -n myAppConfiguration -d file --path mySecrets.yaml --key "secrets.*" --separator "." --resolve-keyvault --format yaml

Pomocí argumentu helm upgrade -f předejte dva konfigurační soubory, které jste vytvořili. Přepíší konfigurační hodnoty definované v souboru values.yaml hodnotami exportovanými z App Configuration.

helm upgrade --install -f myConfig.yaml -f mySecrets.yaml "example" ./mychart

Můžete také použít argument --set pro upgrade helmu a předat hodnoty literálů klíč-hodnoty. Použití argumentu --set je dobrý způsob, jak se vyhnout zachování citlivých dat na 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
}

Ověřte, že konfigurace a tajné kódy byly úspěšně nastaveny, a to přístupem k řídicímu panelu Kubernetes. Uvidíte, že hodnoty barev a zpráv z konfigurace aplikace byly naplněny do proměnných prostředí kontejneru.

Quickstart app launch local

Do tajných kódů Kubernetes jsme přidali také jeden tajný klíč, heslo, úložiště jako reference ke službě Key Vault v konfiguraci aplikace.

Screenshot that highlights the password in the Data section.

Vyčištění prostředků

Pokud nechcete dál používat prostředky vytvořené v tomto článku, odstraňte skupinu prostředků, kterou jste tady vytvořili, abyste se vyhnuli poplatkům.

Důležité

Odstranění skupiny prostředků je nevratné. Skupina prostředků a všechny prostředky v ní se trvale odstraní. Ujistěte se, že omylem neodstraníte nesprávnou skupinu prostředků nebo prostředky. Pokud jste vytvořili prostředky pro tento článek ve skupině prostředků, která obsahuje další prostředky, které chcete zachovat, odstraňte jednotlivé prostředky z příslušného podokna místo odstranění skupiny prostředků.

  1. Přihlaste se k webu Azure Portal a vyberte skupiny prostředků.
  2. Do pole Filtrovat podle názvu zadejte název vaší skupiny prostředků.
  3. V seznamu výsledků vyberte název skupiny prostředků, abyste zobrazili přehled.
  4. Vyberte Odstranit skupinu prostředků.
  5. Zobrazí se výzva k potvrzení odstranění skupiny prostředků. Potvrďte název skupiny prostředků a vyberte Odstranit.

Po chvíli se skupina prostředků a všechny její prostředky odstraní.

Další kroky

V tomto kurzu jste exportovali Aplikace Azure konfigurační data, která se mají použít v nasazení Kubernetes s Helmem. Další informace o používání služby App Configuration najdete v ukázkách Azure CLI.