Pochopení ConfigMaps v Kubernetes

Dokončeno

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

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

Pochopení ConfigMap

ConfigMapy jsou protějšky Tajů. I když tajné kódy poskytují způsob ukládání a doručování citlivých dat, objekty ConfigMap jsou objekty, které poskytují způsob ukládání nesmyslných dat pomocí stejné struktury klíč-hodnota jako Tajný kód. Objekt ConfigMaps 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. Objekty ConfigMap můžete odkazovat pouze pomocí proměnné prostředí nebo jejich připojením jako souboru ve svazku uvnitř kontejneru.

Objekty ConfigMap 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. Pomocí objektů ConfigMap můžete do kontejnerů připojit pouze požadované konfigurační soubory, což umožňuje větší členitost.

Podobně jako tajné objekty, objekty ConfigMap mají svůj obor 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.

Objekty ConfigMap jsou také široce používány jinými nástroji, jako jsou Helm a Operátory Kubernetes, k ukládání a čtení stavů.

Aktualizace configmap

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

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

Vytváření a používání objektů ConfigMap

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

Na ConfigMapy můžete odkazovat jedním nebo více klíči ve specifikaci Podu nebo Deploymentu, 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ř kontejneru 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"

Kontrola znalostí

1.

Proč bychom měli používat objekty ConfigMap?

2.

Jak můžete v aplikaci používat objekty ConfigMap?

3.

Je obor názvů omezením pro ConfigMapy?