Go 在头盔模板中将千兆字节转换为字节

Go 在头盔模板中将千兆字节转换为字节,go,kubernetes-helm,go-templates,Go,Kubernetes Helm,Go Templates,我有一张卡夫卡的图表,它的值文件中定义了pvc大小,如:20Gi。我还有一个configmap,它有一个以字节为单位的定义,比如:log.retention.bytes=21474836480 我正试图让我的图表使用在configmap的values文件中的size中定义的相同值(希望在之前对其进行一些算术运算,比如去掉一个常量值以保留一些额外的空间) 我一直在寻找一段时间,看看是否有这样一个内置于helm模板中的函数,或者一种创建我自己的函数的方法,运气不太好 理想情况下,我正在寻找这样的东西

我有一张卡夫卡的图表,它的值文件中定义了pvc大小,如:
20Gi
。我还有一个configmap,它有一个以字节为单位的定义,比如:
log.retention.bytes=21474836480

我正试图让我的图表使用在configmap的values文件中的
size
中定义的相同值(希望在之前对其进行一些算术运算,比如去掉一个常量值以保留一些额外的空间)

我一直在寻找一段时间,看看是否有这样一个内置于helm模板中的函数,或者一种创建我自己的函数的方法,运气不太好

理想情况下,我正在寻找这样的东西:

log.retention.bytes={{ .Values.persistence.size | convert-to-bytes | substract 10000 }}

您可以使用Sprig函数。例如,您可以执行以下操作:

{{ div .Values.persistence.size 1024 }}
如果要对结果执行减法,可以使用该函数。例如:

{{ sub (div .Values.persistence.size 1024) 10000 }}
您可以使用Sprig函数。例如,您可以执行以下操作:

{{ div .Values.persistence.size 1024 }}
如果要对结果执行减法,可以使用该函数。例如:

{{ sub (div .Values.persistence.size 1024) 10000 }}

这个功能会起作用吗?
size
值不是一个数字,它是一个尾端带有'Gi'的字符串,不。您也可以使用该函数来修剪后缀字符。这不是一个通用(或非常优雅)的解决方案,但它应该能够完成工作。您还可以实现一个通用函数(使用if/else条件支持GI、Mi等,但这要复杂得多),该函数可以工作吗?
size
值不是一个数字,它是一个尾端带有'Gi'的字符串,不。您也可以使用该函数来修剪后缀字符。这不是一个通用(或非常优雅)的解决方案,但它应该能够完成工作。您还可以实现一个通用函数(使用if/else条件支持GI、Mi等,但这要复杂得多)