Omówienie konfiguracji platformy Kubernetes Mapy

Ukończone

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"

Sprawdź swoją wiedzę

1.

Dlaczego warto używać obiektów ConfigMap?

2.

Jak można używać obiektów ConfigMap w aplikacji?

3.

Czy przestrzeń nazw stanowi ograniczenie dla obiektów ConfigMap?