Integracja z wdrożeniem platformy Kubernetes przy użyciu narzędzia Helm

Aplikacje hostowane na platformie Kubernetes mogą uzyskiwać dostęp do danych w usłudze App Configuration przy użyciu biblioteki dostawcy usługi App Configuration. Dostawca usługi App Configuration ma wbudowane funkcje buforowania i odświeżania, dzięki czemu aplikacje mogą mieć konfigurację dynamiczną bez ponownego wdrażania. Jeśli nie chcesz aktualizować aplikacji, w tym samouczku pokazano, jak przenieść dane z usługi App Configuration do platformy Kubernetes przy użyciu narzędzia Helm za pośrednictwem wdrożenia. Dzięki temu aplikacja może nadal uzyskiwać dostęp do konfiguracji ze zmiennych i wpisów tajnych platformy Kubernetes. Uaktualnienie programu Helm jest uruchamiane, gdy aplikacja ma pobierać nowe zmiany konfiguracji.

Napiwek

Zobacz opcje obciążeń hostowanych na platformie Kubernetes, aby uzyskać dostęp do konfiguracji aplikacja systemu Azure.

Program Helm umożliwia definiowanie, instalowanie i uaktualnianie aplikacji działających na platformie Kubernetes. Wykres Helm zawiera informacje niezbędne do utworzenia wystąpienia aplikacji Kubernetes. Konfiguracja jest przechowywana poza samym wykresem w pliku o nazwie values.yaml.

Podczas procesu wydawania program Helm scala wykres z odpowiednią konfiguracją, aby uruchomić aplikację. Na przykład zmienne zdefiniowane w pliku values.yaml można odwoływać się jako zmienne środowiskowe wewnątrz uruchomionych kontenerów. Program Helm obsługuje również tworzenie wpisów tajnych platformy Kubernetes, które mogą być instalowane jako woluminy danych lub udostępniane jako zmienne środowiskowe.

Wartości przechowywane w pliku values.yaml można zastąpić, udostępniając dodatkowe pliki konfiguracji oparte na języku YAML w wierszu polecenia podczas uruchamiania programu Helm. aplikacja systemu Azure Configuration obsługuje eksportowanie wartości konfiguracji do plików YAML. Zintegrowanie tej możliwości eksportowania z wdrożeniem umożliwia aplikacjom Kubernetes wykorzystanie wartości konfiguracji przechowywanych w usłudze App Configuration.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Użyj wartości z usługi App Configuration podczas wdrażania aplikacji na platformie Kubernetes przy użyciu narzędzia Helm.
  • Utwórz wpis tajny kubernetes na podstawie odwołania do usługi Key Vault w usłudze App Configuration.

W tym samouczku założono, że podstawowe informacje na temat zarządzania platformą Kubernetes przy użyciu programu Helm. Dowiedz się więcej na temat instalowania aplikacji za pomocą programu Helm w usłudze Azure Kubernetes Service.

Wymagania wstępne

Dodawanie wartości klucz-wartość

Dodaj następujące wartości klucza do magazynu App Configuration i pozostaw wartości Etykieta i Typ zawartości z ich wartościami domyślnymi. Aby uzyskać więcej informacji na temat dodawania wartości klucz-wartości do magazynu przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia, przejdź do artykułu Create a key-value (Tworzenie wartości klucza).

Key Wartość
settings.color Biały
settings.message Dane z konfiguracji aplikacja systemu Azure

Dodawanie odwołania do usługi Key Vault do usługi App Configuration

  1. Zaloguj się do witryny Azure Portal i dodaj wpis tajny do usługi Key Vault o nazwie Password i value myPassword.

  2. Wybierz wystąpienie sklepu App Configuration utworzone w poprzedniej sekcji.

  3. Wybierz pozycję Eksplorator konfiguracji.

  4. Wybierz pozycję + Utwórz>odwołanie do magazynu kluczy, a następnie określ następujące wartości:

    • Klucz: wybierz pozycję secrets.password.
    • Etykieta: pozostaw tę wartość pustą.
    • Subskrypcja, grupa zasobów i magazyn kluczy: wprowadź wartości odpowiadające wartościom w magazynie kluczy utworzonym w poprzednim kroku.
    • Wpis tajny: wybierz wpis tajny o nazwie Hasło utworzone w poprzedniej sekcji.

Tworzenie wykresu programu Helm

Najpierw utwórz przykładowy wykres helm za pomocą następującego polecenia:

helm create mychart

Program Helm tworzy nowy katalog o nazwie mychart ze strukturą pokazaną poniżej.

Napiwek

Postępuj zgodnie z tym przewodnikiem dotyczącym wykresów, aby dowiedzieć się więcej.

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

Następnie zaktualizuj sekcję spec:template:spec:containers pliku deployment.yaml. Poniższy fragment kodu dodaje do kontenera dwie zmienne środowiskowe. Wartości będą ustawiane dynamicznie w czasie wdrażania.

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

Kompletny plik deployment.yaml po aktualizacji powinien wyglądać następująco.

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

Aby przechowywać poufne dane jako wpisy tajne Kubernetes, dodaj plik secrets.yaml w folderze templates.

Napiwek

Dowiedz się więcej o sposobie używania wpisów tajnych platformy Kubernetes.

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

Na koniec zaktualizuj plik values.yaml przy użyciu następującej zawartości, aby opcjonalnie podać wartości domyślne ustawień konfiguracji i wpisów tajnych, do których odwołuje się plik deployment.yaml i secrets.yaml. Ich rzeczywiste wartości zostaną zastąpione przez konfigurację pobraną z usługi App Configuration.

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

Przekazywanie konfiguracji z konfiguracji aplikacji w instalacji programu Helm

Najpierw pobierz konfigurację z usługi App Configuration do pliku myConfig.yaml . Użyj filtru klucza, aby pobrać tylko te klucze, które zaczynają się od ustawień. Jeśli w Twoim przypadku filtr klucza nie jest wystarczający do wykluczenia kluczy odwołań usługi Key Vault, możesz użyć argumentu --skip-keyvault , aby je wykluczyć.

Napiwek

Dowiedz się więcej o poleceniu eksportu.

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

Następnie pobierz wpisy tajne do pliku o nazwie mySecrets.yaml. Argument wiersza polecenia --resolve-keyvault rozpoznaje odwołania do usługi Key Vault, pobierając rzeczywiste wartości w usłudze Key Vault. To polecenie należy uruchomić przy użyciu poświadczeń, które mają uprawnienia dostępu do odpowiedniego magazynu Key Vault.

Ostrzeżenie

Ponieważ ten plik zawiera poufne informacje, zachowaj ostrożność i wyczyść plik, gdy nie jest już potrzebny.

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

Użyj argumentu -f uaktualnienia narzędzia Helm, aby przekazać dwa utworzone pliki konfiguracji. Zastąpią one wartości konfiguracji zdefiniowane w pliku values.yaml wartościami wyeksportowanymi z usługi App Configuration.

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

Możesz również użyć argumentu --set dla uaktualnienia narzędzia Helm, aby przekazać wartości klucz-literału. Użycie argumentu --set jest dobrym sposobem na uniknięcie utrwalania poufnych danych na dysku.

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

Sprawdź, czy konfiguracje i wpisy tajne zostały pomyślnie ustawione, korzystając z pulpitu nawigacyjnego platformy Kubernetes. Zobaczysz, że wartości kolorów i komunikatów z usługi App Configuration zostały wypełnione w zmiennych środowiskowych kontenera.

Quickstart app launch local

Jeden wpis tajny, hasło, przechowuje jako odwołanie do usługi Key Vault w usłudze App Configuration, został również dodany do wpisów tajnych platformy Kubernetes.

Screenshot that highlights the password in the Data section.

Czyszczenie zasobów

Jeśli nie chcesz nadal korzystać z zasobów utworzonych w tym artykule, usuń utworzoną tutaj grupę zasobów, aby uniknąć naliczania opłat.

Ważne

Usunięcie grupy zasobów jest nieodwracalne. Grupa zasobów i wszystkie zasoby w niej są trwale usuwane. Upewnij się, że nie usuniesz przypadkowo nieprawidłowej grupy zasobów ani zasobów. Jeśli zasoby dla tego artykułu zostały utworzone w grupie zasobów zawierającej inne zasoby, które chcesz zachować, usuń każdy zasób oddzielnie z odpowiedniego okienka zamiast usuwać grupę zasobów.

  1. Zaloguj się do witryny Azure Portal i wybierz pozycję Grupy zasobów.
  2. W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
  3. Na liście wyników wybierz nazwę grupy zasobów, aby wyświetlić przegląd.
  4. Wybierz pozycję Usuń grupę zasobów.
  5. Zobaczysz prośbę o potwierdzenie usunięcia grupy zasobów. Wprowadź nazwę grupy zasobów, aby potwierdzić, a następnie wybierz pozycję Usuń.

Po kilku chwilach grupa zasobów i wszystkie jej zasoby zostaną usunięte.

Następne kroki

W tym samouczku wyeksportowano dane konfiguracji aplikacja systemu Azure do użycia we wdrożeniu kubernetes za pomocą programu Helm. Aby dowiedzieć się więcej na temat korzystania z usługi App Configuration, przejdź do przykładów interfejsu wiersza polecenia platformy Azure.