ConfigMaps — это ключевой компонент Kubernetes для хранения данных конфигурации. Они позволяют отделить конфигурацию от образов контейнеров и управлять ею отдельно. В этой статье мы рассмотрим несколько методов создания ConfigMap из каталога, а также примеры кода на разных языках программирования.
Метод 1. Использование kubectl для создания ConfigMap из каталога
$ kubectl create configmap my-config --from-file=path/to/directory
Метод 2: создание ConfigMap из каталога с использованием YAML
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
{{- range $filename := .Files.Glob "path/to/directory/*" }}
{{ $basename := path.Base $filename }}
{{ $content := .Files.Get $filename }}
{{ $content | indent 2 }}: {{ $basename }}
{{- end }}
Метод 3. Создание ConfigMap из каталога с помощью сценария оболочки
#!/bin/bash
CONFIGMAP_NAME=my-config
DIRECTORY=path/to/directory
kubectl create configmap $CONFIGMAP_NAME
for FILE in $DIRECTORY/*; do
KEY=$(basename "$FILE")
VALUE=$(cat "$FILE")
kubectl patch configmap $CONFIGMAP_NAME --type merge --patch "{\"data\":{\"$KEY\":\"$VALUE\"}}"
done
Метод 4. Создание ConfigMap из каталога с использованием Python
from kubernetes import client, config
import os
config.load_kube_config()
v1 = client.CoreV1Api()
config_map = client.V1ConfigMap()
config_map.metadata = client.V1ObjectMeta(name="my-config")
config_map.data = {}
directory = "path/to/directory"
for file_name in os.listdir(directory):
with open(os.path.join(directory, file_name), "r") as file:
config_map.data[file_name] = file.read()
v1.create_namespaced_config_map(namespace="default", body=config_map)
В этой статье мы рассмотрели несколько методов создания ConfigMap из каталога. Мы продемонстрировали, как этого добиться, используя kubectl
, YAML, сценарии оболочки и Python. Используя эти методы, вы можете легко управлять данными конфигурации и хранить их в Kubernetes с помощью ConfigMaps.