我如何执行“helm install”命令并重新安装我在“templates”中定义的资源?我有一些已经存在的自定义资源,所以我想重新安装它们。可以通过helm命令中的参数来完成吗?
rjzwgtxy1#
我认为你的主要问题是:我有一些已经存在的自定义资源,所以我想重新安装它们。这意味着删除,然后再次创建。
否..但可以通过变通方案完成
Helm通过以下任一方式管理Kubernetes清单的发布:
helm install
helm upgrade
helm delete
但是,您可以按照以下方法之一重新创建资源:
如果图表设计为启用/禁用具有值的资源的安装(例如:.Values.customResources.enabled),您可以执行以下操作:
.Values.customResources.enabled
helm -n namespace upgrade <helm-release> <chart> --set customResources.enabled=false # Then another Run helm -n namespace upgrade <helm-release> <chart> --set customResources.enabled=true
因此,如果您是图表的构建者,您的任务就是使设计具有功能性。
Helmfile是舵手中的舵手。它在一个名为helmfile.yaml的文件中管理helm版本。不仅如此,它还可以在安装/或/升级一个Helm版本之前/或/之后调用一些LOCAL命令,这个发生在之前或之后的调用叫做hook。对于您的情况,您将需要预同步挂接。如果我们将您的helm版本组织为Helmfile定义,它应该是:
helmfile.yaml
releases: - name: <helm-release> chart: <chart> namespace: <namespace> hooks: - events: ["presync"] showlogs: true command: kubectl args: [ "-n", "{{`{{ .Release.Namespace }}`}}", "delete", "crd", "my-custom-resources" ]
现在您只需要运行helmfile apply我知道CRD不是命名空间的,但是我把命名空间放在钩子中只是为了证明Helmfile可以给你作为变量发布的命名空间,而不需要重复你自己。
helmfile apply
dy2hfwbg2#
您可以使用helm upgrade来升级任何现有的已部署图表。升级参数必须是版本和图表。图表参数可以是:图表引用(example/mariadb)、指向图表目录的path、打包的chart或完全限定的URL。对于图表引用,除非设置了--version标志,否则将指定最新版本。要覆盖图表中的值,请使用--values标志并传递到文件中,或使用--set标志并从命令行传递配置。要强制使用字符串值,请使用--set-string。如果值很大,因此您既不想使用--values,也不想使用--set,请使用--set-file从文件中读取单个大值。可以多次指定--values'/'-f标志。优先级将赋予最后一个(最右边)指定的文件。例如,如果mylvalues.yaml和override.yaml都包含名为“Test”的键,则override.yaml中设置的值将优先例如
example/mariadb
path
chart
--version
--values
--set
--set-string
--set-file
--values'/'-f
helm upgrade -f myvalues.yaml -f override.yaml redis ./redis
guykilcj3#
我遵循的更简单的方法是执行kubectl delete job db-migrate-job --ignore-not-found,特别是对于helm升级期间的预先存在的作业
kubectl delete job db-migrate-job --ignore-not-found
3条答案
按热度按时间rjzwgtxy1#
我认为你的主要问题是:
我有一些已经存在的自定义资源,所以我想重新安装它们。
这意味着删除,然后再次创建。
简短回答
否..但可以通过变通方案完成
详细答案
Helm通过以下任一方式管理Kubernetes清单的发布:
helm install
helm upgrade
helm delete
但是,您可以按照以下方法之一重新创建资源:
如果图表设计为启用/禁用具有值的资源的安装(例如:
.Values.customResources.enabled
),您可以执行以下操作:因此,如果您是图表的构建者,您的任务就是使设计具有功能性。
Helmfile是舵手中的舵手。
它在一个名为
helmfile.yaml
的文件中管理helm版本。不仅如此,它还可以在安装/或/升级一个Helm版本之前/或/之后调用一些LOCAL命令,这个发生在之前或之后的调用叫做hook。
对于您的情况,您将需要预同步挂接。
如果我们将您的helm版本组织为Helmfile定义,它应该是:
现在您只需要运行
helmfile apply
我知道CRD不是命名空间的,但是我把命名空间放在钩子中只是为了证明Helmfile可以给你作为变量发布的命名空间,而不需要重复你自己。
dy2hfwbg2#
您可以使用
helm upgrade
来升级任何现有的已部署图表。升级参数必须是版本和图表。图表参数可以是:图表引用(
example/mariadb
)、指向图表目录的path
、打包的chart
或完全限定的URL。对于图表引用,除非设置了--version
标志,否则将指定最新版本。要覆盖图表中的值,请使用
--values
标志并传递到文件中,或使用--set
标志并从命令行传递配置。要强制使用字符串值,请使用--set-string
。如果值很大,因此您既不想使用--values
,也不想使用--set
,请使用--set-file
从文件中读取单个大值。可以多次指定
--values'/'-f
标志。优先级将赋予最后一个(最右边)指定的文件。例如,如果mylvalues.yaml和override.yaml都包含名为“Test”的键,则override.yaml中设置的值将优先例如
guykilcj3#
我遵循的更简单的方法是执行
kubectl delete job db-migrate-job --ignore-not-found
,特别是对于helm升级期间的预先存在的作业