You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不影响Vault数据的前提下卸载并重新部署Vault Agent Injector

问题描述

在GCP GKE集群部署HashiCorp Vault时,碰到Agent和Agent-Injector证书无法自动生成的问题——就算在Helm Chart里更新了agents和injector的版本号,重新部署也刷不了证书,只能靠卸载后重新应用解决。之前在没有Vault Server的集群里执行以下操作一切正常:

helm uninstall vault
terraform apply vault

但剩下的集群里同时部署了Vault Server,当前命名空间的Pod列表如下:

NAME                                    READY   STATUS      RESTARTS       AGE
vault-0                                 1/1     Running     7 (3d1h ago)   47d
vault-1                                 1/1     Running     3 (3d1h ago)   47d
vault-2                                 1/1     Running     7 (3d1h ago)   47d
vault-agent-injector-6866bb887c-4lnm9   1/1     Running     4 (26d ago)    47d
vault-agent-injector-6866bb887c-nc2xq   1/1     Running     3 (26d ago)    47d
vault-agent-injector-6866bb887c-nhkmz   1/1     Running     0              47d
vault-backup-cronjob-28023840-ggqrw     0/1     Completed   0              3d13h
vault-backup-cronjob-28025280-4ww42     0/1     Completed   0              2d13h
vault-backup-cronjob-28026720-wnzn9     0/1     Completed   0              37h
vault-backup-cronjob-28028160-n4x49     0/1     Completed   0              13h

现在需要移除并重新部署Agent-Injector,但不想影响Vault Server的核心数据,核心疑问有两个:

  • Vault数据存在StatefulSet/GCS里,执行helm uninstall vault会不会删掉?
  • 怎么在不碰Vault数据的前提下,安全删了再重新部署Injector?
解决方案

1. Vault数据安全性说明

  • 要是你的Vault Server是用官方Helm Chart部署的StatefulSet:
    • StatefulSet绑定的PersistentVolumeClaims(PVCs)默认不会被helm uninstall删除——Helm本身不会主动清理持久化存储资源。
    • 如果配置了GCS作为Vault的存储后端,数据直接存在GCS Bucket里,和Kubernetes资源完全独立,helm uninstall根本碰不到这部分数据。
  • 哪怕StatefulSet的Pod被销毁,只要PVC或GCS存储还在,重新部署Vault Server时会自动加载原有数据。

2. 安全操作Injector的两种方法

方法一:单独操作Injector(推荐)

不用卸载整个Vault Helm Release,直接通过Helm配置单独禁用/启用Injector:

  1. 先在Terraform的Vault Helm配置里禁用Injector:
    set {
      name  = "injector.enabled"
      value = "false"
    }
    
  2. 应用配置,删除现有Injector资源:
    terraform apply vault
    
    这一步只会删掉Injector相关的Deployment、Service、ConfigMap等,完全不会影响Vault Server的StatefulSet。
  3. 重新启用Injector并指定目标版本:
    修改Terraform配置,打开Injector开关并设置正确的版本号:
    set {
      name  = "injector.enabled"
      value = "true"
    }
    set {
      name  = "injector.image.tag"
      value = "你的目标版本号"
    }
    
    再次执行应用:
    terraform apply vault
    
    这会部署全新的Injector组件,自动生成新证书。

方法二:卸载后重新部署(需确认存储配置)

如果一定要用helm uninstall+terraform apply的方式,只要确认两点就不会丢数据:

  • 检查Vault Server的PVC:执行kubectl get pvc,确认vault-0、vault-1、vault-2对应的PVC存在——Helm默认不会删除它们。
  • 如果用GCS后端,确认Bucket配置正确,Terraform重新部署时会复用原有配置,Vault启动后自动加载GCS里的数据。
    操作步骤:
  1. 可选但推荐:备份当前Vault状态
    vault operator raft snapshot save backup.snap
    gsutil cp backup.snap gs://你的备份Bucket名称/
    
  2. 卸载Helm Release:
    helm uninstall vault
    
  3. 重新部署:
    terraform apply vault
    
    重新部署后,Vault Server会自动连接到原有PVC或GCS后端,加载所有历史数据。

3. 验证步骤

操作完后,执行以下命令确认状态:

  • 检查Vault Server Pod:kubectl get pods -l app.kubernetes.io/name=vault,确保所有vault-x Pod正常运行。
  • 验证Vault数据:登录Vault,检查已有密钥、策略等是否存在。
  • 检查Injector状态:kubectl get pods -l app.kubernetes.io/name=vault-agent-injector,确认新的Injector Pod正常运行,证书已更新。

内容的提问来源于stack exchange,提问作者Daemon Jester

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 00:32:39