Публикация этого ответа как вики-сообщества для лучшей видимости, а также ответ был предоставлен в комментариях.
Отвечая на вопрос из сообщения:
Я бы хотел чтобы иметь возможность получить имя подписки для HPA из configmap, если это возможно? Есть ли способ сделать это?
Как указал пользователь @Abdennour TOUMI, нет возможности установить метрику c, используемую HPA
, с помощью ConfigMap
:
К сожалению, нельзя .. но можно с помощью prometheus-adapter + HPA. Проверьте этот туто: itnext.io /...
Что касается обходного пути вручную , вы можете использовать сценарий, который будет извлекать необходимое метри c имя из configMap
и использовать шаблон для замены и применения нового HPA
.
С configMap
вроде:
apiVersion: v1
kind: ConfigMap
metadata:
name: example
data:
metric_name: "new_awesome_metric" # <-
not_needed: "only for example"
И следующим скриптом:
#!/bin/bash
# variables
hpa_file_name="hpa.yaml"
configmap_name="example"
string_to_replace="PLACEHOLDER"
# extract the metric name used in a configmap
new_metric=$(kubectl get configmap $configmap_name -o json | jq '.data.metric_name')
# use the template to replace the $string_to_replace with your $new_metric and apply it
sed "s/$string_to_replace/$new_metric/g" $hpa_file_name | kubectl apply -f -
Этот скрипт должен иметь hpa.yaml
с шаблоном для его применения в качестве ресурса (пример из вопроса можно использовать с изменением:
resource.labels.subscription_id: PLACEHOLDER
Для получения дополнительной информации это определение HPA может быть основано на этом руководстве:
Cloud.google.com: Kubernetes Engine: Учебники: Autoscaling-metrics: PubSub