Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从头盔图表中提取docker图像_Python_Docker_Extract_Kubernetes Helm_Docker Image - Fatal编程技术网

Python 从头盔图表中提取docker图像

Python 从头盔图表中提取docker图像,python,docker,extract,kubernetes-helm,docker-image,Python,Docker,Extract,Kubernetes Helm,Docker Image,有没有办法通过python从helm图表中提取docker图像 我希望避免任何: 舵安装-干运行舵图>日志 bash脚本来提取此信息 例如,如果头盔图表包含两幅图像,我想提取这些图像 例如: image: repo/image1:1.0 image1.yaml file image: repo/image2:1.0 image2.yaml file 将头盔图表的内容呈现为YAML文件,并将其打印到标准输出。一个又快又脏的回答是 helm template helm-chart

有没有办法通过python从helm图表中提取docker图像

我希望避免任何:

舵安装-干运行舵图>日志

bash脚本来提取此信息

例如,如果头盔图表包含两幅图像,我想提取这些图像

例如:

image: repo/image1:1.0     image1.yaml file
image: repo/image2:1.0     image2.yaml file
将头盔图表的内容呈现为YAML文件,并将其打印到标准输出。一个又快又脏的回答是

helm template helm-chart | grep 'image:'
但是您也可以使用一些工具,比如基于YAML结构进行查询

您确实需要使用某种类型的Helm命令来渲染模板,因为它非常常见,可以指定如下内容

image: 'some/image:{{ .Values.tag }}'
这取决于输入文件。另一方面,您可以使用常用的Helm-set或-f选项来指定值,因此如果您要在不同的环境或不同的构建中使用不同的图像,或者只包括一些基于设置的部署,您将获得部署内容的准确反映。

将头盔图表的内容呈现为YAML文件,并将其打印到标准输出。一个又快又脏的回答是

helm template helm-chart | grep 'image:'
但是您也可以使用一些工具,比如基于YAML结构进行查询

您确实需要使用某种类型的Helm命令来渲染模板,因为它非常常见,可以指定如下内容

image: 'some/image:{{ .Values.tag }}'
这取决于输入文件。另一方面,您可以使用常用的Helm-set或-f选项来指定值,因此如果您要在不同的环境或不同的构建中使用不同的图像,或者只包括一些基于设置的部署,您将获得部署内容的准确反映。

在一篇博文中提供了一个极好的答案,所有的功劳都归于他

要列出给定舵图中的所有唯一图像,请执行以下操作:

helm template . \
    | yq '..|.image? | select(.)' \
    | sort -u
头盔模板

这假定您位于包含舵图的目录中。template命令打印出通常通过helm安装创建的所有Kubernetes对象。其输出格式为yaml

yq’…|图像?|选择。”

yq是流行的jq命令行工具的变体。jq希望处理JSON流,而yq允许您处理yaml

yq的神奇之处在于它提供的过滤器。过滤器作用于某些输入并执行某些操作以产生输出。在本例中,我们使用递归下降操作符查找所有名为image的字段。这个在图像中?指示yq应生成图像值,如果图像值不存在,则应生成null。要选择的管道。将忽略所有空值,最后返回一个新行分隔的图像字符串。

在一篇博文中提供了一个非常好的答案,所有功劳都归他所有

要列出给定舵图中的所有唯一图像,请执行以下操作:

helm template . \
    | yq '..|.image? | select(.)' \
    | sort -u
头盔模板

这假定您位于包含舵图的目录中。template命令打印出通常通过helm安装创建的所有Kubernetes对象。其输出格式为yaml

yq’…|图像?|选择。”

yq是流行的jq命令行工具的变体。jq希望处理JSON流,而yq允许您处理yaml


yq的神奇之处在于它提供的过滤器。过滤器作用于某些输入并执行某些操作以产生输出。在本例中,我们使用递归下降操作符查找所有名为image的字段。这个在图像中?指示yq应生成图像值,如果图像值不存在,则应生成null。要选择的管道。将忽略所有空值,最终返回一个新行分隔的图像字符串。

我有一个类似的用例,并构建了一个工具来提取图像、标记并将它们推送到不同的注册表

创建包含所有图表的yaml文件 通过传递配置文件-helm\u image\u mirror-c config.yaml来运行该工具
我有一个类似的用例,并构建了一个工具来提取图像、标记并将它们推送到不同的注册中心

创建包含所有图表的yaml文件 通过传递配置文件-helm\u image\u mirror-c config.yaml来运行该工具
你是什么意思?你只需要图像名称吗?@C.Nivs我想在掌舵图中列出所有docker图像的列表。所有图像:repo/image1:1.0图像:repo/image2:1.0提取是什么意思?你只需要图像名称吗?@C.Nivs我想在掌舵图中列出所有docker图像的列表。所有图像:repo/image1:1.0图像:repo/image2:1.0要清除,使用的yq工具为。要清除,使用的yq工具为。