Ric*_*ano 6 resources kubernetes kubernetes-helm
如何执行“helm install”命令并重新安装我在“模板”中定义的资源?我有一些已经存在的自定义资源,因此我想重新安装它们。可以通过 helm 命令中的参数来做到这一点吗?
我认为你的主要问题是:
我有一些已经存在的自定义资源,因此我想重新安装它们。
这意味着删除然后再次创建。
不..但可以通过解决方法来完成
Helm 通过以下任一方式管理 Kubernetes 清单的发布:
helm installhelm upgradehelm delete但是,您可以按照以下方法之一重新创建资源:
1.连续两次升级
如果您的图表设计为启用/禁用带有值( .eg: .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
Run Code Online (Sandbox Code Playgroud)
因此,如果您是图表的构建者,您的任务就是使设计发挥作用。
2.使用helmfile钩子
Helmfile是头盔中的头盔。
它在一个名为 的单个文件中管理您的 helm 版本helmfile.yaml。
不仅如此,它还可以在安装/或/升级 Helm 版本之前/或/之后调用一些本地命令。这个发生在之前或之后的调用被命名为hook。
对于您的情况,您将需要预同步挂钩。
如果我们将您的 helm 版本组织为 Helmfile 定义,则应该是:
releases:
- name: <helm-release>
chart: <chart>
namespace: <namespace>
hooks:
- events: ["presync"]
showlogs: true
command: kubectl
args: [ "-n", "{{`{{ .Release.Namespace }}`}}", "delete", "crd", "my-custom-resources" ]
Run Code Online (Sandbox Code Playgroud)
现在你只需要运行helmfile apply
我知道 CRD 没有命名空间,但我将命名空间放在钩子中只是为了证明 Helmfile 可以为您提供 release 的命名空间作为变量,而无需重复自己。
小智 6
您可以使用回滚到当前版本。
首先找到已安装的修订版:
helm list -n <namespace>
Run Code Online (Sandbox Code Playgroud)
然后你可以运行:
helm rollback <name> <revision_number> -n namespace
Run Code Online (Sandbox Code Playgroud)
这将重新安装/恢复最新安装的内容。请注意,您的复活将获得 +1 修订。
您可以使用它helm upgrade来升级任何现有的已部署图表并进行更改。
升级参数必须是版本和图表。图表参数可以是:图表引用 ( example/mariadb)、path图表目录、打包的chart或完全限定的 URL。对于图表参考,除非设置了该标志,否则将指定最新版本--version。
要覆盖图表中的值,请使用--values标志并传入文件,或使用--set标志并从命令行传递配置,若要强制使用字符串值,请使用--set-string. 如果值很大,因此您不想使用--values或--set,请使用--set-file从文件中读取单个大值。
您可以--values'/'-f多次指定该标志。优先级将赋予最后指定的(最右边的)文件。例如,如果 myvalues.yaml 和 override.yaml 都包含名为“Test”的键,则 override.yaml 中设置的值将优先
例如
helm upgrade -f myvalues.yaml -f override.yaml redis ./redis
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36089 次 |
| 最近记录: |