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
- Konto platformy Azure z aktywną subskrypcją. Utwórz je bezpłatnie.
- Instalowanie interfejsu wiersza polecenia platformy Azure (wersja 2.4.0 lub nowsza)
- Instalowanie programu Helm (wersja 2.14.0 lub nowsza)
- Magazyn usługi App Configuration. Utwórz magazyn.
- Klaster Kubernetes.
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
Zaloguj się do witryny Azure Portal i dodaj wpis tajny do usługi Key Vault o nazwie Password i value myPassword.
Wybierz wystąpienie sklepu App Configuration utworzone w poprzedniej sekcji.
Wybierz pozycję Eksplorator konfiguracji.
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ć.
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.
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.
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.
- Zaloguj się do witryny Azure Portal i wybierz pozycję Grupy zasobów.
- W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
- Na liście wyników wybierz nazwę grupy zasobów, aby wyświetlić przegląd.
- Wybierz pozycję Usuń grupę zasobów.
- 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.