Kubernetes 是否可以将整型锚点转换或强制转换为yaml文件中的字符串别名?

Kubernetes 是否可以将整型锚点转换或强制转换为yaml文件中的字符串别名?,kubernetes,yaml,azure-aks,kubernetes-statefulset,Kubernetes,Yaml,Azure Aks,Kubernetes Statefulset,对于我的AKS容器设置,我希望通过环境变量将给定状态集的请求副本数传递给每个pod 我试图做到这一点而不重复我自己(一次在“副本”设置中,一次在环境变量设置中) 我能找到的唯一真正解决方法是使用锚点和别名(基于): 不幸的是,“env”值似乎必须是一个字符串,“replicas”的整数值不能被转换或转换。将引发以下错误: v1.EnvVar.v1.EnvVar.Value:ReadString:expected“或n,但找到3, 在…|的#10字节中发现错误,“值”:3},{“名称”:|…,更大

对于我的AKS容器设置,我希望通过环境变量将给定状态集的请求副本数传递给每个pod

我试图做到这一点而不重复我自己(一次在“副本”设置中,一次在环境变量设置中)

我能找到的唯一真正解决方法是使用锚点和别名(基于):

不幸的是,“env”值似乎必须是一个字符串,“replicas”的整数值不能被转换或转换。将引发以下错误:

v1.EnvVar.v1.EnvVar.Value:ReadString:expected“或n,但找到3, 在…|的#10字节中发现错误,“值”:3},{“名称”:|…,更大 上下文…|::“solr config”}},{“name”:“N_O_副本”,“value”:3}

我试图通过以下方式手动转换字符串:

value: !!str *numReplicas
但这也不起作用,并引发以下错误:

将YAML转换为JSON时出错:YAML:第52行:未找到预期的键

有没有办法创建一个Kubernetes YAML文件,允许将整数值作为字符串重用?或者有没有其他解决方案来解决这种特殊情况?

就是您所需要的


实际上,
Helm
比您需要的更重要,但它有一个模板引擎(就像Ansible中的一样)此外,今天使用
Helm
对Kubernetes几乎是强制性的,因为它有一个巨大的图表库,可以帮助您非常快速地部署不同的软件,例如通过一个命令部署弹性堆栈或Redis…(几乎).所以,试试这个,它可以改善你对Kubernetes的工作

虽然你的方法很有趣,
!!str
不是演员演员演员,而且清楚地表明你所尝试的是行不通的:

当节点具有多个引用(使用别名)时,标记解析必须仅取决于节点的第一个(锚定)引用的路径

因此,在YAML中,这是不可能的,除非解析器/加载程序不一致

IMO,解决您的问题的最佳解决方案是,kubernetes在将环境变量添加到环境之前,将所有参数显式转换为字符串。这样,您也可以使用布尔值、日期等

您还可以使用任何模板系统为kubernetes生成YAML输入,只要这样的系统允许您“字符串化”您的整数参数

value: !!str *numReplicas