Skaffold Kustomize 将外部环境变量传递给 kustomization.yaml
Skaffold Kustomize Passing External Environment Variable into kustomization.yaml
有没有办法可以将外部环境变量从 Skaffold
.
传递给 kustomization.yaml
假设我下面有一个 kustomization 文件
resources:
- ./deployment.yaml
- ./service.yaml
images:
- name: abc
newName: <external environment>
newTag: <external environment>
我导出了带有图像名称和标签的环境,并希望在执行 skaffold deploy
或 dev
时传递到 kustomization.yaml
有没有办法做到这一点,或者是否有任何解决方案或变通方法可以将外部环境变量传递给 kustomization.yaml
?
我知道我实际上可以使用 kustomize edit set image
但是很难看,因为我需要获取旧的图像名称来设置我试图避免的。我想要一个更简单的解决方案。我找不到任何地方说 kustomize
可以使用来自系统的环境变量,例如 docker-compose
使用 ${VAR}
或 skaffold
在尝试访问时使用 {{.VAR}}
系统环境变量
基本上,Kustomize 只能在其设计的地方 parse/replace 环境变量。它不是“系统范围”的功能,据我所知它仅适用于配置映射生成器。
说有解决方法
例如,如果您 kustomization.yaml 在 /overlays/staging 文件夹中
resources:
- ./deployment.yaml
- ./service.yaml
images:
- name: abc
newName: $IMAGE_NAME
newTag: $IMAGE_TAG
可以,从bash
export $IMAGE_NAME=my-app-image
export $IMAGE_TAG=latest
kubectl kustomize overlays/staging | envsubst | kubectl apply -f -
或等效的oneliner。
诀窍是使用 kubectl kustomize
生成完整的 kustomization(其中仍然包括未赋值的变量名),它将在 stdout 上输出并将其通过管道传输到 envsubst
中,这将替换之前的每个export
通过管道输入的文本中的变量,然后再次通过管道输出到 kubectl apply -f
,这一次将使用尾随 -
应用它(这将使它从标准输入读取 yaml)
有没有办法可以将外部环境变量从 Skaffold
.
假设我下面有一个 kustomization 文件
resources:
- ./deployment.yaml
- ./service.yaml
images:
- name: abc
newName: <external environment>
newTag: <external environment>
我导出了带有图像名称和标签的环境,并希望在执行 skaffold deploy
或 dev
kustomization.yaml
有没有办法做到这一点,或者是否有任何解决方案或变通方法可以将外部环境变量传递给 kustomization.yaml
?
我知道我实际上可以使用 kustomize edit set image
但是很难看,因为我需要获取旧的图像名称来设置我试图避免的。我想要一个更简单的解决方案。我找不到任何地方说 kustomize
可以使用来自系统的环境变量,例如 docker-compose
使用 ${VAR}
或 skaffold
在尝试访问时使用 {{.VAR}}
系统环境变量
基本上,Kustomize 只能在其设计的地方 parse/replace 环境变量。它不是“系统范围”的功能,据我所知它仅适用于配置映射生成器。 说有解决方法
例如,如果您 kustomization.yaml 在 /overlays/staging 文件夹中
resources:
- ./deployment.yaml
- ./service.yaml
images:
- name: abc
newName: $IMAGE_NAME
newTag: $IMAGE_TAG
可以,从bash
export $IMAGE_NAME=my-app-image
export $IMAGE_TAG=latest
kubectl kustomize overlays/staging | envsubst | kubectl apply -f -
或等效的oneliner。
诀窍是使用 kubectl kustomize
生成完整的 kustomization(其中仍然包括未赋值的变量名),它将在 stdout 上输出并将其通过管道传输到 envsubst
中,这将替换之前的每个export
通过管道输入的文本中的变量,然后再次通过管道输出到 kubectl apply -f
,这一次将使用尾随 -
应用它(这将使它从标准输入读取 yaml)