Для моей настройки контейнера AKS я хотел бы передать запрошенное количество реплик заданного набора состояний для каждого модуля через переменные среды.
Я пытался сделать это без повторения (один раз в настройке «реплики» и один раз в настройке переменных среды).
Единственное реальное решение, которое я смог найти, - это использовать привязки и псевдонимы как таковые (на основе Kubernetes StatefulSet - получить метаданные spec.replicas и ссылку в другом месте в конфигурации ):
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: solr
spec:
selector:
matchLabels:
app: solr
serviceName: solr-hs
replicas: &numReplicas 3
updateStrategy:
type: RollingUpdate
# Make sure pods get created sequentially
podManagementPolicy: OrderedReady
template:
metadata:
labels:
app: solr
spec:
containers:
- name: kubernetes-solr
imagePullPolicy: Always
image: "..."
resources:
requests:
memory: "8Gi"
cpu: "0.5"
ports:
- containerPort: 8983
env:
- name: N_O_REPLICAS
value: *numReplicas
К сожалению, похоже, что значение "env" должно быть строкой, а целочисленное значение "replicas" не приводится и не преобразуется. Вместо этого выдается следующая ошибка:
v1.EnvVar.v1.EnvVar.Value: ReadString: ожидает "или n, но найдено 3,
обнаружена ошибка в # 10 байт ... |, "значение": 3}, {"имя": | ..., больше
context ... |: "solr-config"}}}, {"name": "N_O_REPLICAS", "value": 3},
Я попытался привести к строке вручную, написав:
value: !!str *numReplicas
Но это также не работает и выдает следующую ошибку:
ошибка преобразования YAML в JSON: yaml: строка 52: не найден ожидаемый ключ
Есть ли способ создать YAML-файл Kubernetes, который позволяет повторно использовать целочисленные значения в виде строк? Или есть другое решение для этой конкретной ситуации?