👁 В Kubernetes при работе с множеством конфигурационных файлов часто нужно динамически подставлять переменные в манифесты. Для этого можно использовать kubectl и envsubst, чтобы подставлять значения окружения в YAML файлы.
📝 Пример кода:
#!/bin/bash
# Определяем переменные окружения
export APP_VERSION="v2.3.0"
export ENVIRONMENT="production"
# Применяем конфигурацию с динамически подставленными значениями
cat <<EOF | envsubst | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
template:
spec:
containers:
- name: my-app
image: "myapp:${APP_VERSION}"
env:
- name: ENV
value: "${ENVIRONMENT}"
EOF📌 Как это работает:
envsubst— утилита, которая подставляет значения переменных окружения в строки. В этом случае она подставляетAPP_VERSIONиENVIRONMENTв соответствующие места в YAML манифесте.kubectl apply -f -— применяет результат подстановки в Kubernetes. Важно, что используетсяcat <<EOF, чтобы прочитать многострочный ввод в формате YAML.- В результате, развертывание будет использовать динамично подставленные значения для переменных, таких как версия образа и среда, в которой развертывается приложение.
❗️ Этот метод полезен в продакшн-средах для автоматической генерации конфигураций с динамическими значениями для разных окружений. Например, для деплоев с разными версиями приложений и окружениями (staging, production, development) можно использовать один манифест, подставляя нужные параметры при каждом деплое.
tags: #k8s #полезно #devops



