# Урок 5.1 — Переменные окружения и ConfigMaps ## Файлы | Файл | Описание | |------|----------| | `kyverno-global-config.yaml` | Централизованный ConfigMap с настройками | | `set-resource-limits-from-config.yaml` | Мутация: лимиты из ConfigMap | | `inherit-namespace-labels.yaml` | Мутация: лейблы из Namespace (через apiCall) | ## Применение ```bash # Сначала ConfigMap kubectl apply -f kyverno-global-config.yaml # Затем политики kubectl apply -f set-resource-limits-from-config.yaml kubectl apply -f inherit-namespace-labels.yaml ``` ## Типы источников переменных в Kyverno ```yaml # 1. Данные запроса (всегда доступны) {{ request.object.metadata.name }} {{ request.object.metadata.namespace }} {{ request.operation }} # CREATE | UPDATE | DELETE {{ request.userInfo.username }} {{ request.userInfo.groups }} # 2. ConfigMap context: - name: myConfig configMap: name: my-config namespace: kyverno # Использование: {{ myConfig.data.my-key }} # 3. Прямой API вызов context: - name: nsInfo apiCall: urlPath: "/api/v1/namespaces/{{ request.object.metadata.namespace }}" jmesPath: "metadata.labels" # Использование: {{ nsInfo.environment }} # 4. Встроенная переменная context: - name: defaults variable: value: memory: "256Mi" cpu: "250m" # Использование: {{ defaults.memory }} # 5. Генерируемые значения {{ random('[0-9]{6}') }} # случайные 6 цифр {{ time_now_utc() }} # текущее UTC время ``` ## Тест переменных из ConfigMap ```bash # Создать под — должны примениться лимиты из ConfigMap kubectl apply -f - <