提问者:小点点

如何在库伯内特斯Pod yaml规范文件中使用env值?[重复]


我有一个这样的规格文件

          containers:
            - name: webserver
              image: PRIVATE_REPO/project/projectname:${TAG}
              imagePullPolicy: Always
              ports:
                - containerPort: 8080
                  name: http

我在env文件中定义了TAG值。当我使用docker-comort执行此操作时,它在docker-comort上工作。我认为我不能为库伯内特斯做这件事,我想知道是否有办法做到这一点。


共1个答案

匿名用户

你不能在库伯内特斯以同样的方式做到这一点。

Docker Comort允许将转换应用于其YAML配置文件,以便您可以像以前一样用值替换环境变量。本质上,您提供给Docker Compos的YAML文件是该工具转换为用于部署容器的YAML的模板。

库伯内特斯CLI(kubectl)不支持这种转换。您需要确保您提供给kubectl的YAML文件是您要应用于集群的YAML的文字表示。

有多种方法可以解决库伯内特斯的这个“模板问题”,但是你需要使用额外的工具来做到这一点。

简单地说,您可以使用像sed这样的Linux工具来用变量的值替换变量。因为您可能会使用YAML配置,所以您可以使用像yq这样的工具来处理YAML,因为yq理解YAML结构,所以该工具比例如sed更适合。

因为这是库伯内特斯的常见需求,所以有库伯内特斯特定的工具用于模板配置文件。参见Helm、Kustomize、Jsonnet和CUE等。