Vysvětlení konfigurace Kubernetes Mapy

Dokončeno

V úložišti aplikace je v index.html souboru načten konfigurační soubor, který umožňuje aktualizaci proměnných prostředí bez nutnosti sestavení úplné image.

Konfigurační soubor neobsahuje citlivé informace, stačí ho načíst spolu s kontejnerem. Jak můžeme tento soubor připojit ke kontejneru bez nutnosti šifrování nebo kódování?

Vysvětlení objektů ConfigMap

Konfigurace Mapy jsou protějšky tajných kódů. Zatímco tajné kódy poskytují způsob ukládání a doručování citlivých dat, config Mapy jsou objekty, které poskytují způsob ukládání nesmyslných dat pomocí stejné struktury klíč-hodnota jako tajný klíč. Objekt Config Mapy umožňuje oddělit konfigurace od imagí kontejneru, aby image zůstaly bezstavové.

Vytvoříte objekt ConfigMap pro ukládání konfiguračních dat odděleně od kódu aplikace a načtete je podobně jako načítáme tajné objekty v podu. Konfiguraci můžete odkazovat pouze Mapy pomocí proměnné prostředí nebo jejich připojením jako souboru ve svazku uvnitř kontejneru.

Konfigurace Mapy mají omezení velikosti dat: v objektu ConfigMap můžete uchovávat až 1 MiB dat. Omezení velikosti vám pomůže vyhnout se velkým a složitým konfiguračním souborům tím, že rozdělíte velké konfigurace na menší bloky dat. S konfigurací Mapy můžete do kontejnerů připojit pouze požadované konfigurační soubory, což umožňuje větší členitost.

Podobně jako tajné kódy jsou objekty ConfigMap omezené na obory názvů. K objektu ConfigMap a jeho připojení můžete přistupovat pouze pomocí kontejnerů, které jsou přítomné ve stejném oboru názvů, ve který byl vytvořen.

Konfigurace Mapy se také běžně používají v jiných nástrojích, jako jsou Helm a Operátoři Kubernetes, k ukládání a čtení stavů.

Aktualizace objektů ConfigMap

Všechny objekty ConfigMap, které jsou připojené jako svazky uvnitř podu, se v případě změny jejich hodnoty automaticky aktualizují. K této změně nemusí dojít okamžitě kvůli konfiguraci Kubeletu, ale dojde k ní automaticky, takže pod nemusíte restartovat.

Pokud je objekt ConfigMap vázán na proměnné prostředí, není automaticky aktualizován. V těchto případech je nutné restartovat pod, aby se změny projevily.

Vytvoření a použití konfigurace Mapy

Objekt ConfigMap můžete vytvořit pomocí stejného přístupu jako tajný kód: soubor YAML. Specifikace ConfigMap je následující:

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

Konfiguraci můžete odkazovat Mapy jedním nebo více klíči ve specifikaci podu nebo nasazení, jak je znázorněno v následujícím příkladu:

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

Můžete je také připojit jako soubory uvnitř podu pomocí svazků jen pro čtení, jak je znázorněno v následujícím příkladu:

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"

Prověřte si své znalosti

1.

K čemu se objekty ConfigMap používají?

2.

Jak je možné objekty ConfigMap použít v aplikaci?

3.

Představuje obor názvů pro objekty ConfigMap nějaké omezení?