Pochopení ConfigMaps v Kubernetes
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"