我有一个这样的规格文件
containers:
- name: webserver
image: PRIVATE_REPO/project/projectname:${TAG}
imagePullPolicy: Always
ports:
- containerPort: 8080
name: http
我在env文件中定义了TAG值。当我使用docker-comort执行此操作时,它在docker-comort上工作。我认为我不能为库伯内特斯做这件事,我想知道是否有办法做到这一点。
你不能在库伯内特斯以同样的方式做到这一点。
Docker Comort允许将转换应用于其YAML配置文件,以便您可以像以前一样用值替换环境变量。本质上,您提供给Docker Compos的YAML文件是该工具转换为用于部署容器的YAML的模板。
库伯内特斯CLI(kubectl
)不支持这种转换。您需要确保您提供给kubectl
的YAML文件是您要应用于集群的YAML的文字表示。
有多种方法可以解决库伯内特斯的这个“模板问题”,但是你需要使用额外的工具来做到这一点。
简单地说,您可以使用像sed
这样的Linux工具来用变量的值替换变量。因为您可能会使用YAML配置,所以您可以使用像yq
这样的工具来处理YAML,因为yq
理解YAML结构,所以该工具比例如sed
更适合。
因为这是库伯内特斯的常见需求,所以有库伯内特斯特定的工具用于模板配置文件。参见Helm、Kustomize、Jsonnet和CUE等。