Omówienie konfiguracji platformy Kubernetes Mapy
W repozytorium aplikacji znajduje się plik konfiguracji załadowany w index.html
pliku, aby umożliwić aktualizowanie zmiennych środowiskowych bez konieczności pełnej kompilacji obrazu.
Plik konfiguracji nie zawiera poufnych informacji— wystarczy załadować go wraz z kontenerem. Jak można zainstalować plik w kontenerze bez konieczności szyfrowania lub kodowania?
Informacje na temat obiektów ConfigMap
Konfiguracja Mapy są odpowiednikami wpisów tajnych. Chociaż wpisy tajne umożliwiają przechowywanie i dostarczanie poufnych danych, Config Mapy to obiekty, które umożliwiają przechowywanie danych niewrażliwych przy użyciu tej samej struktury klucz-wartość co wpis tajny. Obiekt Config Mapy umożliwia oddzielenie konfiguracji z obrazów kontenerów, dzięki czemu obrazy pozostają bezstanowe.
ConfigMap umożliwia przechowywanie danych konfiguracji niezależnie od kodu aplikacji i ładowanie ich podobnie do sposobu ładowania obiektów wpisów tajnych w zasobniku. Można odwoływać się tylko do konfiguracji Mapy przy użyciu zmiennej środowiskowej lub instalowania ich jako pliku w woluminie wewnątrz kontenera.
Konfiguracja Mapy ma ograniczenie rozmiaru danych: możesz przechowywać maksymalnie 1 MiB danych w ConfigMap. Ograniczenie rozmiaru pomaga uniknąć dużych, złożonych plików konfiguracji przez podzielenie dużych konfiguracji na mniejsze fragmenty. Za pomocą polecenia Config Mapy można zainstalować tylko wymagane pliki konfiguracji w kontenerach, co zapewnia większą szczegółowość.
Podobnie jak wpisy tajne, obiekty ConfigMap są ograniczone przestrzenią nazw. Możesz uzyskać dostęp tylko do obiektu ConfigMap i zainstalować go przy użyciu kontenerów znajdujących się w tej samej przestrzeni nazw, w której została utworzona.
Konfiguracja Mapy są również powszechnie używane przez inne narzędzia, takie jak Helm i Kubernetes Operators, do przechowywania i odczytywania stanów.
Aktualizacje obiektu ConfigMap
Wszystkie obiekty ConfigMap, które są instalowane jako woluminy wewnątrz zasobnika, są automatycznie aktualizowane po zmianie ich wartości. Ta zmiana może nie wystąpić natychmiast z powodu konfiguracji narzędzia Kubelet, ale dzieje się to automatycznie, więc nie trzeba ponownie uruchamiać zasobnika.
Gdy element ConfigMap jest powiązany ze zmiennymi środowiskowymi, nie jest automatycznie aktualizowany. W takich przypadkach należy ponownie uruchomić zasobnik, aby zmiany zaczęły obowiązywać.
Tworzenie i używanie konfiguracji Mapy
ConfigMap można utworzyć przy użyciu tego samego podejścia co wpis tajny: plik YAML. Specyfikacja ConfigMap jest następująca:
apiVersion: v1
kind: ConfigMap
metadata:
name: configmap-name
namespace: default
data:
key-name: "value as key"
key.name: |
multi line
property, called "file-like" values
Możesz odwołać się do konfiguracji Mapy przez co najmniej jeden klucz w specyfikacji zasobnika lub wdrożenia, jak pokazano w poniższym przykładzie:
apiVersion: v1
kind: Pod
metadata:
name: configmap-as-env
namespace: default
spec:
containers:
- name: configmap-env
image: alpine
command: ["sleep", "3600"]
env:
- name: ENVIRONMENT_VARIABLE_NAME
valueFrom:
configMapKeyRef:
name: configmap-name
key: key-name
Można je również zainstalować jako pliki w zasobniku przy użyciu woluminów tylko do odczytu, jak pokazano w poniższym przykładzie:
apiVersion: v1
kind: Pod
metadata:
name: configmap-as-env
namespace: default
spec:
containers:
- name: configmap-env
image: alpine
command: ["sleep", "3600"]
volumeMounts:
- name: volume-name
mountPath: "/path/to/mount"
readOnly: true
volumes:
- name: volume-name
configMap:
name: configmap-name
items:
- key: "key-name"
path: "path/to/mount/the/key"