Vysvětlení konfigurace Kubernetes Mapy
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"