Создание ConfigMap из каталога: несколько методов с примерами кода

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.