Управление Kubernetes через kubectl и envsubst

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

kuberneteskubectlenvsubst

👁 В 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

🧭 @recura_tech 🌐 VK 🌐 MAX

Скриншот с кодом: bash-скрипт для envsubst и kubectl, YAML-манифест с подстановкой APP_VERSION и ENVIRONMENT и логотип RECURA
Пример кода в посте — использование envsubst и kubectl

Читайте так же